TERRAIN ======= 1 - Editar TERRAIN/Makefile para refletir mudancas do PGF90 para o IFC **como não uso o Ncar Graphics, a variável NCARGRAPHICS foi usada com NONCARG IFC: #NCARGRAPHICS = NCARG NCARGRAPHICS = NONCARG INTEL_LIB = /opt/intel/compiler70/ia32/lib "CPPFLAGS = -I. -P -C -traditional -D$(NCARGRAPHICS) -DRECLENBYTE" "FC = ifc" "FCFLAGS = -I. "\ "LOCAL_LIBRARIES= -L$(INTEL_LIB) -lPEPCF90" ) ; \ PGF: NCARGRAPHICS = NCARG #NCARGRAPHICS = NONCARG "CPPFLAGS = -I. -C -traditional -D$(NCARGRAPHICS) -DRECLENBYTE" "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 - executar o comando "make terrain.deck" que criará o namelist 3 - editar o terrain.deck criado para o domínio a ser simulado 4 - (opcional) alguns arquivos usados pelo TERRAIN podem estar no formato binário e codificado em big_endian, se estiver usando uma maquina little_endian (x86 ou DEC/Alpha, daer...) deve ser acionada a chave de compilacao para a conversão automática dos arquivos no caso do Intel Fortran Compiler (IFC) essa se dá através de uma variável de ambiente F_UFMTENDIAN=big:10,20 (neste exemplo os units 20 e 30 serão tratados como big_endian e os demais como little. Para o TERRAIN recomendo usar F_UFMTENDIAN=little:70 que segundo o manual, os arquivos TERRAIN_DOMAINx recebem as units 70+(x-1), então tudo vai ser tratado como big, exceto o arquivo de saida TERRAIN_DOMAIN1. 5 - executar o terrain.deck (./terrain.deck) 6 - (opcional/recomendado) checar o arquivo gerado, TERRAIN_DOMAINx, com o utilitário readv3 REGRID ====== Editar Makefile para refletir mudancas do PGF90 para o IFC IFC: seção pregrid -------------- 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 ; \ seção regridder --------------- "FC = ifc" >> macros_regridder ; \ "FCFLAGS = -FR -pc32" >> macros_regridder ; \ "LOCAL_LIBRARIES = -L$(INTEL_LIB) -lPEPCF90" >> macros_regridder ; \ PGF: seção pregrid ------------- "FC = pgf90" >> macros_pregrid ; \ "FCFLAGS = -Mfreeform -byteswapio -I../util" >> macros_pregrid ; \ "LOCAL_LIBRARIES = ../util/libpgu.a" >> macros_pregrid ; \ seção regridder --------------- "FC = pgf90" >> macros_regridder ; \ "FCFLAGS = -Mfreeform -pc 32 -byteswapio" >> macros_regridder ; \ "LOCAL_LIBRARIES = " >> macros_regridder ; \ INTERPF ======= Editar Makefile para refletir mudancas do PGF90 para o IFC IFC: "FC = ifc" >> macros_interpf ; \ "FCFLAGS = -FR -pc32 " >> macros_interpf ; \ PGF: "FC = pgf90" >> macros_interpf ; \ "FCFLAGS = -Mfreeform -pc 32 -byteswapio" >> macros_interpf ; \ MM5 === ------Trecho retirado de 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 - Editar configure.user.linux (e renomear para 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 - Executar: make 3 - Executar: make mm5.deck 4 - Editar o mm5.deck 5 - Executar o mm5.deck Paralelo -------- 1 - Editar 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 ***** No caso do IFC é necessário editar o arquivo MM5/MPP/RSL/RSL/makefile.linux ****** mudar as linhas: CFLAGS = -I$(IDIR) -DMPI -DRSL_SYNCIO -Dlinux -DSWAPBYTES -O FFLAGS = -O -byteswapio para: CFLAGS = -I$(IDIR) -DMPI -DRSL_SYNCIO -Dlinux -O FFLAGS = -O 2 - Executar: make mpp 3 - Executar: make mm5.deck 4 - Editar o mm5.deck 5 - Executar o mm5.deck 6 - Copiar os arquivos gerados pelo INTERPF: BDYOUT_DOMAIN1, LOWBDY_DOMAIN1 e MMINPUT_DOMAIN1 para o diretório Run