TERRAIN ======= 1 - Edit TERRAIN/Makefile to changes PGF90 to IFC compiler **I do not use Ncar Graphics, so I set NCARGRAPHICS to NONCARG IFC: #NCARGRAPHICS = NCARG NCARGRAPHICS = NONCARG INTEL_LIB = /opt/intel/compiler70/ia32/lib "FC = ifc" "FCFLAGS = -I. "\ "LOCAL_LIBRARIES= -L$(INTEL_LIB) -lPEPCF90" ) ; \ PGF: NCARGRAPHICS = NCARG #NCARGRAPHICS = NONCARG "FC = pgf90" "FCFLAGS = -I. -byteswapio"\ "LOCAL_LIBRARIES= -L$(NCARG_ROOT)/lib -L/usr/X11R6/lib -lncarg -lncarg_gks -lncarg_c -lX11 -L$(PGI)/linux86/lib -L/usr/lib -lf2c" ) ; \ 2 - type "make terrain.deck" to create the namelist 3 - edit 'terrain.deck' file, created for simulated domain 4 - (optional) some files are used by TERRAIN in binary format and big_endian encoded. If you are using a little_endian (x86 ou DEC/Alpha, daer...) computer, should be activated the compiler key to convert the files automatically. In Intel Fortran Compiler (IFC) this conversion happens using the ambient variable 'F_UFMTENDIAN=big:10,20' (in this example, units 20 and 30 will be deal in big_endian and any other in little_endian). In TERRAIN module I recomended use 'F_UFMTENDIAN=little:70', because, by the manual, the TERRAIN_DOMAINx files receice units 70+(x-1), so, everything will be deal by big_endian, except TERRAIN_DOMAIN1 file. 5 - execute 'terrain.deck' file (./terrain.deck) 6 - (recomended) check with 'readv3' the TERRAIN_DOMAINx file created REGRID ====== Edit 'Makefile' to change PGF90 to IFC compiler IFC: pregrid section --------------- INTEL_LIB = /opt/intel/compiler70/ia32/lib "FC = ifc" >> macros_pregrid ; \ "FCFLAGS = -FR -I../util" >> macros_pregrid ; \ "LOCAL_LIBRARIES = ../util/libpgu.a -L$(INTEL_LIB) -lPEPCF90" >> macros_pregrid ; \ regridder section ----------------- "FC = ifc" >> macros_regridder ; \ "FCFLAGS = -FR -pc32" >> macros_regridder ; \ "LOCAL_LIBRARIES = -L$(INTEL_LIB) -lPEPCF90" >> macros_regridder ; \ PGF: pregrid section ------------- "FC = pgf90" >> macros_pregrid ; \ "FCFLAGS = -Mfreeform -byteswapio -I../util" >> macros_pregrid ; \ "LOCAL_LIBRARIES = ../util/libpgu.a" >> macros_pregrid ; \ regridder section ----------------- "FC = pgf90" >> macros_regridder ; \ "FCFLAGS = -Mfreeform -pc 32 -byteswapio" >> macros_regridder ; \ "LOCAL_LIBRARIES = " >> macros_regridder ; \ INTERPF ======= Edit Makefile to change PGF90 to IFC compiler IFC: "FC = ifc" >> macros_interpf ; \ "FCFLAGS = -FR -pc32 " >> macros_interpf ; \ PGF: "FC = pgf90" >> macros_interpf ; \ "FCFLAGS = -Mfreeform -pc 32 -byteswapio" >> macros_interpf ; \ MM5 === ------text passage by http://www.mmm.ucar.edu/mm5/mm5v3/clues/mm5-intel.html In compiling with IFC version 6.0, you may get the following error in mp_stotndt.F: tkea_sav(i,j,mkx+1,inest) = tkea(i,j,mkx+1) Error 173 at (6757:mp_stotndt.f) : Array element subscript is not within array bounds To fix this, edit include/pbltke.incl as follows: Changed TKEA and TKEB from MKXG to MKX to make them big enough POINTER (ITKEA, TKEA(MIXG,MJXG,MKX+1)), & (ITKEB, TKEB(MIXG,MJXG,MKX+1)) ------ Serial ------ 1 - Edit configure.user.linux (and to rename to configure.user); IFC FC = ifc FCFLAGS = -I$(LIBINCLUDE) -O2 -tpp6 LDOPTIONS = -O2 -tpp6 -pc32 LOCAL_LIBRARIES = -L/opt/intel/compiler70/ia32/lib -lPEPCF90 PGF FC = pgf90 FCFLAGS = -I$(LIBINCLUDE) -O2 -Mcray=pointer -tp p6 -pc 32 -Mnoframe -byteswapio LDOPTIONS = -O2 -Mcray=pointer -tp p6 -pc 32 -Mnoframe -byteswapio LOCAL_LIBRARIES = 2 - Execute: make 3 - Execute: make mm5.deck 4 - Edit the 'mm5.deck' file 5 - Execute the 'mm5.deck' file Parallel -------- 1 - Edit configure.user IFC LINUX_MPIHOME = /local/mpich-1.2.5-f90/ MFC = $(LINUX_MPIHOME)/bin/mpif77 MCC = $(LINUX_MPIHOME)/bin/mpicc MLD = $(LINUX_MPIHOME)/bin/mpif77 FCFLAGS = -O3 LDOPTIONS = -O3 LOCAL_LIBRARIES = -L$(LINUX_MPIHOME)/lib -lfmpich -lmpich -L/opt/intel/compiler70/ia32/lib -lPEPCF90 CPP = /lib/cpp -C -P -traditional CPPFLAGS = -DMPI -Dlinux -DSYSTEM_CALL_OK CFLAGS = -DMPI -I$(LINUX_MPIHOME)/include ARCH_OBJS = milliclock.o PGF LINUX_MPIHOME = /usr/local/mpich MFC = $(LINUX_MPIHOME)/bin/mpif77 MCC = $(LINUX_MPIHOME)/bin/mpicc MLD = $(LINUX_MPIHOME)/bin/mpif77 FCFLAGS = -O2 -Mcray=pointer -tp p6 -pc 32 -Mnoframe -byteswapio LDOPTIONS = -O2 -Mcray=pointer -tp p6 -pc 32 -Mnoframe -byteswapio LOCAL_LIBRARIES = -L$(LINUX_MPIHOME)/build/LINUX/ch_p4/lib -lfmpich -lmpich CPP = /lib/cpp -C -P -traditional CPPFLAGS = -DMPI -Dlinux -DSYSTEM_CALL_OK CFLAGS = -DMPI -I$(LINUX_MPIHOME)/include ARCH_OBJS = milliclock.o ***** To IFC - you should edit the 'MM5/MPP/RSL/RSL/makefile.linux' file ****** Change lines below: CFLAGS = -I$(IDIR) -DMPI -DRSL_SYNCIO -Dlinux -DSWAPBYTES -O FFLAGS = -O -byteswapio to: CFLAGS = -I$(IDIR) -DMPI -DRSL_SYNCIO -Dlinux -O FFLAGS = -O 2 - Execute: make mpp 3 - Execute: make mm5.deck 4 - Edit 'mm5.deck' file 5 - Execute 'mm5.deck' file 6 - Copy files generated by INTERPF: BDYOUT_DOMAIN1, LOWBDY_DOMAIN1 and MMINPUT_DOMAIN1 to Run directory