WRF模式简易操作中文指南

上传人:无*** 文档编号:111138844 上传时间:2022-06-20 格式:DOC 页数:67 大小:1.74MB
返回 下载 相关 举报
WRF模式简易操作中文指南_第1页
第1页 / 共67页
WRF模式简易操作中文指南_第2页
第2页 / 共67页
WRF模式简易操作中文指南_第3页
第3页 / 共67页
点击查看更多>>
资源描述
.WRF 模式操作指南The Institute of Atmospheric Physics, Chinese Academy of SciencesNortheast Institute of Geography and Agroecology, Chinese Academy of Sciences中国科学院大气物理研究所中国科学院东北地理与农业生态研究所二一七年三月二十日 . .目录1. WRF模式简介 .12. WRF模式的安装 .2 2.1 安装环境 .2 2.2 模式源程序.2 2.3 NetCDF函数库的安装2 2.4 标准初始化SI的安装 6 2.5 WRF模式的安装.93. WRF模式与T213模式嵌套.17 3.1 嵌套方案 .17 3.2 嵌套程序设计 .17 3.3编译嵌套程序 .21 3.4 嵌套的实现 .224. WRF模式系统的运行.29 4.1 理想大气方案.29 4.2 真实大气方案 .325. WRF模式系统作业卡.47 5.1 源程序.47 5.2 真实大气方案 .486. 模式结果的显示处理 .61 6.1 Vis5D格式 .61 6.2 MICAPS格式.62 6.2 GrADS格式 .65附录1. WRF模式参数配置说明 .68附录2. T213场库参数表 .78WRF模式系统安装/调试技术报告1. WRF模式简介 WRF(Weather Research Forecast)模式系统是由许多美国研究部门及大学的科学家共同参与进展开发研究的新一代中尺度预报模式和同化系统。WRF模式系统的开发方案是在1997年由NCAR中小尺度气象处、NCEP的环境模拟中心、FSL的预报研究处和奥克拉荷马大学的风暴分析预报中心四部门联合发起建立的,并由国家自然科学基金和NOAA共同支持。现在,这项方案,得到了许多其他研究部门及大学的科学家共同参与进展开发研究。WRF模式系统具有可移植、易维护、可扩大、高效率、方便的等诸多特性,将为新的科研成果运用于业务预报模式更为便捷,并使得科技人员在大学、科研单位及业务部门之间的交流变得更加容易。 WRF模式系统将成为改良从云尺度到天气尺度等不同尺度重要天气特征预报精度的工具。重点考虑110公里的水平网格。模式将结合先进的数值方法和资料同化技术,采用经过改良的物理过程方案,同时具有多重嵌套及易于定位于不同地理位置的能力。它将很好的适应从理想化的研究到业务预报等应用的需要,并具有便于进一步加强完善的灵活性。 WRF模式作为一个公共模式,由NCAR负责维护和技术支持,免费对外发布。第一版的发布在2000年11月30日。随后在2001年5月8日,第二次发布了WRF模式,版本号为1.1。2001年11月6日,很快进展了模式的第三次发布,只是改了两个错误,没有很大的改动,因此版本号定为1.1.1。直到2002年4月24日,才正式第四次发布,版本号为1.2。同样,在稍微修改一些错误后,2002年5月22日第五次版发布模式系统,版本号为1.2.1。原定于2002年10月份左右的第六次发布,直到2003年3月20才推出,版本号为1.3。2003年11月21日进展了更新。2004年5月21日推出了嵌套版本V2.0。2004年6月3日进展了更新。到2006年1月30日为止最新版本为2.1.2。2WRF模式的安装2.1 安装环境2.1.1 硬件环境 WRF模式是一个多机型、跨平台、标准化的模式。可以在IBM AI*,SGI IRI*,PC LINU*等机型上运行。2.1.2 软件环境 WRF模式的运行系统中的一般需要的安装软件环境包括:UNI*LINU*操作系统Perl5.003以上Fortran程序编辑器包括Fortran90和Fortran77编译器C程序编译器NetCDF函数库,版本在3.3.1以上必须包含Fortran77,Fortran90 以及C的程序调用接口MICAPS图形显示系统、VIS5D图形显示系统、GrADS或者RIP等2.2模式源程序 WRF模式系统运行所需要的程序包括: 标准初始化SI: WRF模式的数据前处理局部。可从写成GRIB码的AVN数据文件中读取模式区域所需的数据,并插值成WRF所需的变量场。 WRF模式: WRF模式的初始场/边界条件生成以及模式积分计算局部。2.3 NetCDF函数库的安装2.3.1 文件获取 目前,由于WRF模式的数据处理格式主要是应用较为常见的NetCDF数据格式。因此,在安装WRF模式的标准初始化以及WRF主模式前,必须在操作系统环境中先安装NetCDF程序包,生成NetCDF函数库。在运行的系统环境中,如果没有安装NetCDF函数库,则必须自己安装。NetCDF程序包的下载地址为从中,可以获得NetCDF的压缩程序包netcdf.zip或者netcdf.tar.Z。2.3.2 安装环境 不同平台要求也不一样,但必需有25兆的可用空间用来解压、编译和运行测试。由于WRF模式的程序采用了C,Fortran77和Fortran90编写,所以也要求操作平台具有FORTRAN77,FORTRAN90和标准C或C编译器。 netCDF将会编译并测试相应的语言接口。2.3.3 指定编译环境 首先要选择并指定一个恰当的编译环境。如果需要,可设置CC,CFLAGS, FC, FFLAGS, C*, C*FLAGS, F90和F90FLAGS中任何环境变量,以指明相应的编译环境。环境变量也就是用户外壳程序shell管理的参数,并被shell程序用于运行应用程序例如设置脚本程序。一些环境变量的说明可参见下表表1。表1 编译NetCDF的一些环境变量及其说明变量描述NotesCCC编译器如果未指定,设置脚本程序将试图找出适宜的C编译器,如:cc, c89, *lc, or gcc。FCFortran编译器(如果存在)如果未指定,设置脚本程序将试图找出适宜的Fortran 90 or Fortran 77 编译器。 如果不需要Fortran接口,则可将FC设置为。 F90Fortran 90编译器(如果存在)如果未指定,设置脚本程序将试图找出适宜的Fortran 90编译器。 如果指定了Fortran 90编译器,则不需要FC参数。如果不需要Fortran 90接口,则可将F90设置为。 C*C+编译器如果未指定,设置脚本程序将试图找出适宜的C+编译器。 不需要C+接口时,可将C* 设置为。CFLAGSC编译器参数选项例如 -0或-gCPPFLAGSC 预处理参数选项例如-DNDEBUG是忽略声明局部的检测assertionFFLAGSFortran 编译器参数选项例如-O或-gF90FLAGSFortran 90 编译器参数选项例如-O或-g。如果未指定,则采用FFLAGS的值。C*FLAGSC+ 编译器标志例如-O或-gARFLAGSNMFLAGSFPPM4FLAGSLIBSFLIBS 混合参数选项在一些操作平台中可能用到这些参数中的一个或几个。 值得注意的是,如果不设置环境变量,则配置脚本程序将会试图找出相应合理的设置值。但在IBM SP机器上,如果用户不设置Fortran90的编译和编译选项,则配置脚本往往找不到正确的Fortran90编译器和编译选项,从而造成NetCDF函数库中没有Fortran90的程序接口。环境变量也就是用户外壳程序shell管理的参数,并被shell程序用于运行应用程序例如设置脚本程序。典型的环境变量有:环境变量名变量值USER steveHOME /home/stevePATH /bin:/usr/bin:/home/steve/bin 执行命令行命令env,可得到当前环境中的环境变量列表。定义和设置环境变量的方式取决于用户所用的外壳Shell类型。Csh类shell如csh、tcsh用户设置方式如下: setenv CC c89 setenv CPPFLAGS -0 -DNDEBUG而标准UNI* shell例如sh、ksh、bash用户要设置上面同样的环境变量,可如下设置: e*port CC=c89 e*port CPPFLAGS=-0 -DNDEBUG以上两种方式中,参数值中带有将值的各局部分开的空格分隔符时,双引号不能省略。否则,参数值只是设置为所要取值得一局部。标准shell用户还有一种额外的快捷方式为单一命令定义和设置环境变量。环境变量可在命令行中定义和设置,并只在这一行中生效。例如:e*port FOO=foo env | grep FOO FOO=foo FOO=bar env | grep FOO FOO=bar env | grep FOOFOO=foo 测试系统时,环境变量及其赋值可列表式给出。标准UNI* shell用户可直接使用标准语法。例如,标准shell用户可以用以IBM SP AI*为例: e*portCC=*lc CPPFLAGS=-DNDEBUG CFLAGS=-O FC=f77 FFLAGS=-OC*=*lC F90=*lf90 F90FLAGS=-qsuffi*=f=f90 在IBM AI* SP环境下,编译NetCDF所需要的一些相应的系统环境变量有: CC=/bin/*lc CPPFLAGS=-DNDEBUG CFLAGS=-O FC=/bin/*lf FFLAGS=-O F90=/bin/*lf90 F90FLAGS=-qsuffi*=f=f90 # Note: no -O option C*=/bin/*lC C*FLAGS=-O因为有些机器的AI*系统在用F90编译器编译时,选用-O优化编译会产生错误信息为1501-229 pilationended due to lack of space的错误。通常是由于编译时优化消耗存太多,以至于超出计算机存。解决方法之一是用ulimit命令将数据段data、堆栈段stack以及存段memory设置成足够大或者设置成无限制unlimited。另一种解决方法就是,在设置F90编译选项时,不要用-O优化选项。另外,如果要用64位模式编译程序,则除了在C和Fortran编译选项中添加-q64外,还要设置以下环境变量: ARFLAGS=-* 64 cru NMFLAGS=-* 642.3.4 编译和安装NetCDF 要生成编译netCDF所需的Makefile文件,必须先运行配置脚本程序(configure)。 它存放在netCDF目录的src子目录中。 首先,选择安装的目录。用这个目录作为配置脚本程序参数prefi*的指定值。程序默认的安装目录prefi*参数值是. .,即将程序包安装在 . . /bin,. ./lib和. ./man,这些目录是相对于netCDF的src/目录。 执行设置脚本格式如下: ./configure -prefi*=目录名这里- - prefi* = . . .是可选的;如果省略的话,程序将默认地将当前目录的父目录. . 设为安装目录。 运行配置脚本程序时,程序会检测系统的与编译netCDF程序包相关的属性设置。检测结果将会显示在标准输出设备上如显示器。 配置脚本程序还会创立一个记录文件config.log。它包含了配置脚本程序检测系统属性设置时发现的错误信息。由于系统检测可能会导致一些错误,因此在记录文件中可能会记录一些错误信息。这些错误信息未必说明是有问题严重的错误标志会导致下一步编译make程序失败。不过,记录文件中的编译器不能启动的错误信息例外,这是一个编译环境的严重错误,必须改正,否则不会产生相应编译环境的程序接口。 运行编译命令make。此命令将创立一个或多个netCDF库。它包括根本的netCDF库libsrc/libnetcdf.a。如果系统有Fortran 77或者Fortran 90编译器,则Fortran接口程序会包含在此库中。如果系统有C编译器,则C接口程序会创立在库c*/libnetcdf_c+.a中。命令创立的库还包括netCDF应用程序库ncgen和ncdump。 如果第一步的编译通过,则可以用命令make test来检验netCDF库和可执行程序创立得正确与否。系统会建立和运行各种测试C、Fortran和C的程序,以及应用程序ncdump和ncgen。以*开头的输出显示行中,列出了测试成功与否的信息。任何错误都会明确列出,并终止程序的运行。测试过程中的编译器和连接器警告会被忽略掉。 如果编译和测试都正确,这时就可以安装程序库和可执行程序了。安装时,运行命令make install即可,它将连接系统的函数库和应用程序,安装到指定的目录中。在进展编译安装的时候,可以编写一个shell脚本程序。这样,在安装的时候,只需执行这个批处理命令就行。这里给出一个在AI*系统上编译安装的例子,比方取名为install.nc:make distclean e*port CC=/usr/bin/*lc e*port CPPFLAGS=-DNDEBUG e*port CFLAGS=-O e*port FC=/usr/bin/*lf90 e*port FFLAGS=-O3 -qfi*ed e*port F90FLAGS=-O3 -qfree -qsuffi*=f=f90 e*port F90=/usr/bin/*lf90 e*port C*=/usr/bin/*lC e*port C*FLAGS=-O configure -prefi*=/u/wrf_*p/netcdfmake make test make install2.3.5 问题处理 (1) 详细阅读本安装文档。 (2) 转到netCDF的顶级目录下的源程序目录SRC。 (3) 执行命令make distclean,即使执行失败也不会造成什么错误。 (4) 如果存在config.cache文件,则将它删除。 (5) 按上面描述的方法设置相应的环境变量。 (6) 重新执行配置脚本程序。 (7) 执行命令make。 (8) 执行命令make test。 (9) 执行命令make install。 值得注意的是,设置和编译系统应该具有较新的shshell、make程序以及C和Fortran编译器。在曙光机器上,就存在Fortran90编译器版本比拟旧,不能编译后缀名为.F90的程序,导致运行配置脚本时,无法通过对Fortran90编译器的检测,故不能生成Fortran90程序接口。2.4 标准初始化SI的安装2.4.1 文件和资料的获取 标准初始化是WRF模式的数据前处理局部,也是WRF模式的三维变分系统建立使用之前为WRF模式提供初/边值的局部。SI主要的具有两大功能:(1) 模式区域的定义和创立 在这里,用户可以定义计算区域投影参数,围大小,区域位置等。根据这些定义设置,SI的gridgen_model.e*e程序会产生一个名为static的文件。它是NetCDF格式的文件,包含模式格点定义信息和一些静态数据场如地形、土地利用、土壤类型、月叶面积指数、经度和纬度等。(2) 将数据插值到WRF模式的计算格点包括水平方向和垂直方向上,为WRF模式提供初始场和边界条件。 这项功能是由hinterp.e*e和vinterp.e*e程序来完成。另外,gribprep.e*e程序是将标准的GRIB码格式的数据文件转换成hinterp.e*e程序能识别的格式。也可以不用gribprep.e*e程序,而是直接将其他数据格式的数据写成hinterp.e*e所能识别的格式即可。 安装之前,首先需从WRF模式的提供.wrf-model.org下载标准初始化SI的压缩程序包、AVN模式的试验数据AVN.TAR以及模式所需的静态数据如地形、土地利用类型、土壤温度等: WRFSI.TAR.gz AVN.TARgreenfrac_10m.tar.gz - 10分的植被指数数据pctland_10m.tar.gz - 10分的土地利用数据soiltemp_1deg.tar.gz - 1度的全球深层土壤温度数据topo_10m.tar.gz - 10分的地形数据另外,还应该下载如下四个文件夹及其其中的数据文件:- landuse_30s/USGS 24-category landuse fractions- soiltype_bot_30s/WMO/FAO 16-category 2-layer soil types- soiltype_top_30s/- topo_30s/解压这些文件后,应该得到八个目录: greenfrac_10m/pctland_10m/ topo_10m/ soiltemp_1deg/ landuse_30s/soiltype_bot_30s/ soiltype_top_30s/topo_30s/解压后的各目录中所得到的数据文件大多数都是1010的数据块文件。用户大约需要1.8Gb的磁盘空间来存储这些数据。其目录在WRF SI的参数配置文件中需要做相应的设定。2.4.2 安装环境 编译时,要求系统装有Perl5.003以上的版本和make3.75以上的版本。由于WRF SI模式的程序采用了C,Fortran77和Fortran90编写,所以也要求操作平台具有FORTRAN77,FORTRAN90和标准C或C编译器。SI的数据格式采用了NetCDF的格式,要求系统安装了NetCDF函数库。2.4.3 SI的目录构造在进展编译和运行SI前,有必要先熟悉SI的目录构造。在SI的编译和运行当中,有四个顶级路径环境变量。这里顶级的意思是指每一个路径都是一个总的路径,在其下面,编译和运行时可能会创立许多子目录。从这个意义上来说,这四个目录分别相当于他们的子目录的顶级目录。这四个顶级目录分别为:(1) SRCROOT 这个目录在编译和安装SI时要用到,它是包含SI源程序代码的目录,也就是在用户解压tar源程序包时所创立的目录。比方用户解压文件时,最终会创立一个名为wrfsi_20020328的SRCROOT目录。当然,用户也可以根据自己的喜好,将其改为自己喜欢的名称。通常,SRCROOT目录中包含用perl写成的安装脚本文件install_wrfsi.pl。编译和安装时,应该提供大约10兆空间给SRCROOT目录。(2) INSTALLROOT 这个目录是在编译和安装SI时用到。它是指定SI的安装目录,存放SI的可执行程序包括可执行的二进制文件和可执行的perl脚本。在INSTALLROOT目录下,安装后会创立三个目录:bin、data和etc。子目录bin中存放可执行的二进制文件;data存放相关的配置信息文件;etc存放可执行的perl脚本文件。INSTALLROOT和SRCROOT可以一样,这样的话,INSTALLROOT目录下的三个子目录会创立在SRCROOT的目录下。如果INSTALLROOT目录缺省,则系统会认为INSTALLROOT与SRCROOT一样。INSTALLROOT需要的空间大约为5兆。(3) MOAD_DATAROOT 这个目录在运行SI时使用。MOAD的意思是所有计算区域之源Mother of All Domains,当然也包括以后嵌套技术实现后的粗/细网格。MOAD_DATAROOT 可以和INSTALLROOT以及SRCROOT一样,但将MOAD_DATAROOT与这二者区分开来是非常有用的。它可以使用户在一次编译后,处理不同的模式区域。MOAD_DATAROOT的默认目录为INSTALLROOT/data。如果要设置不同路径时,只需将INSTALLROOT/data目录下的cdl和static两个子目录拷贝到新的目录下即可。(4) E*T_DATAROOT 这个目录在运行SI时使用。它是用来存放一些所谓的外部数据。数据前处理程序grib_prep.e*e产生的结果文件就是存放的在这个目录的子目录e*tprd目录下,而运行grib_prep.e*e程序时所创立的记录文件也放在这个目录的子目录log下面。同样,当用户不用个grib_prep.e*e程序处理数据,而是自定义生成hinterp.e*e程序所能识别的数据文件时,用户所生成的数据文件也应该放在这个目录的e*tprd子目录下,插值程序hinterp.e*e则从这个子目录下读取输入数据。对于1.3版本的SI来说,则这个目录已经被提供初始场( ANALPATH)和边界条件( LBCPATH)的路径所代替。并且,在1.3版本中,初始场和边界条件可以分开,使用两个不同的路径。2.4.4 编译和安装SI 编译和安装前,需查看一下src/include/makefile_ibm.inc.in文件。比方查看编译器的名字如FC,cpp选项CPPFLAGS特殊情况下为-DFORTRANDOUBLEUNDERSCORE,而有些计算机比方AlphaUni*工作站则要求为-DFORTRANUNDERSCORE。用户还需为gcc库函数指定确切的路径。同时,用户还可以根据需要,设定一些相应的编译选项。要求用户找到计算机安装netCDF和perl的路径。没有的话,则需必须下载正确的版本进展安装。找到正确的netCDF和perl的安装路径后,SI最简单的安装就是在安装在当前源代码一样目录下。这时只需设置一下环境变量NETCDF,将其指到包含netCDF库函数的正确目录,例如:setenv NETCDF /usr/local/netcdf-3.4然后,输入以下安装命令:perl install_wrfsi.pl上面是最为简单的安装方式,但是如果用户没有找到netCDF和Perl的安装目录的话,则会退出安装。因此,还可以根据用户选择配置来安装。执行安装命令时,其他的一些参数选项如下:perl install_wrfsi.pl -srcroot=/u/denglt/wrfsi_src -installroot=/u/denglt/wrfsi -dataroot=/u/denglt/wrfsi/data -path_to_netcdf=/usr/local/netcdf -path_to_perl=/usr/local/perl -machine=ibm log其中,srcroot是指提供安装WRF SI源代码的目录,installroot是指将要承受安装WRF SI的目录,dataroot是以后运行SI程序的输出结果存放目录,如果用户没有指定dataroot的目录,则会在安装目录$installroot中创立一个/data目录。特别注意的是,在perl命令行的续行符前,最好留一个空格。因为,如果不留空格,而在后续行的第一列也没有空格的话,则程序会将两行不留空格地合并起来,造成语法错误。成功安装后,在安装目录下会创立一个名为/bin的目录,并且创立有如下四个可执行文件:-rw*r-*r-* 1 wrfhelp users 458752 Apr 17 15:36 grib_prep.e*e-rw*r-*r-* 1 wrfhelp users 647168 Apr 17 15:36 gridgen_model.e*e-rw*r-*r-* 1 wrfhelp users 614400 Apr 17 15:37 hinterp.e*e-rw*r-*r-* 1 wrfhelp users 63120 Apr 17 15:37 siscan-rw*r-*r-* 1 wrfhelp users 630221 Apr 1715:37 staticpost.e*e(v2.0以上才有)-rw*r-*r-* 1 wrfhelp users 188416 Apr 17 15:37 vinterp.e*e其中,grib_prep.e*e文件是读取GRIB码数据文件,并将数据输出成hinterp.e*e所能识别的数据格式。gribgen_model.e*e是模式区域定义和创立的文件。在这里,用户可以定义计算区域投影参数,围大小,区域位置等。hinterp.e*e和vinterp.e*e文件分别是水平和垂直插值程序,它们将用户的输入场插值到gridgen_model.e*e所创立的模式区域格点上,为WRF模式的运行准备初始场和边条件。siscan是一个调试程序,它可以查看hinterp.e*e和vinterp.e*e所产生的文件的详细信息。staticpost.e*e将gridgen_model.e*e的运行结果static.wrfsi.d01提取其中一些物理量按照NetCDF的格式重新写了一遍成wrfstatic_d01。在进展编译安装的时候,可以编写一个shell脚本程序。这样,在安装的时候,只需执行这个批处理命令就行。这里给出一个在AI*系统上编译安装的例子,比方取名为install.si:#!/bin/shmy_homeroot=/u/wrf_*p/denglt/wrfsysmy_dataroot=/dgpfs/fs2/wrf_*p/ddeng/wrfsyse*port NETCDF=/u/wrf_*p/denglt/netcdfe*port SOURCE_ROOT=$my_homeroot/sisrce*port INSTALLROOT=$my_homeroot/wrfsie*port DATAROOT=$my_dataroot/moade*port E*T_DATAROOT=$my_dataroot/moad/e*troote*port TEMPLATES=$my_dataroot/moad/tempe*port GEOG_DATAROOT=$my_dataroot/geoginstall_wrfsi.pl -install_ui=y2.4.5 问题处理 (1) 如果失败,则可以用make realclean来去除失败的安装程序。 (2) 进入到src目录下的各个子目录如grib_prep、hinterp、vinterp以及grid等下,输入make命令对单个目录进展编译。这样就相对容易找出编译安装时的错误所在。2.5 WRF模式的安装2.5.1 安装环境编译时,要求系统装有Perl5.003以上的版本和make3.75以上的版本。由于WRF SI模式的程序采用了C,Fortran77和Fortran90编写,所以也要求操作平台具有FORTRAN77,FORTRAN90和标准C或C编译器。SI的数据格式采用了NetCDF的格式,要求系统安装了NetCDF函数库。 因此,在编译WRF代码之前,应检查一下系统有没有安装netCDF。WRF输入/输出I/O模块需要使用netCDF的数据格式。如果netCDF安装的目录不是常用的系统目录如 /usr/local/,则必须指明netCDF函数库以及引用include/函数库的路径。如果未安装,则必须先下载安装netCDF。2.5.2 安装程序的获取 WRF模式的安装程序是一个压缩程序包,可从WRF模式获得.wrf-model.org。1.2版的WRF压缩程序包名称为;最近发布的2.1.2版的WRF压缩程序包名称为。 压缩程序包包括两局部,一局部是将输入数据生成WRF模式的输入场;另一局部则是模式的积分计算。2.5.3 编译环境配置WRF模式的顶级目录中包含配置脚本文件configure使用标准shell:sh和一个编译脚本pile使用Csh类shell:csh。配置脚本在配置系统的时候,也用到在arch目录中的Perl脚本arch/Configure.pl,还用到了UNI*系统的应用程序make。在arch子目录中包含了大量不同构造和设置选项的设置模板文件configure.defaults。这些配置模板在配置脚本运行时用于在不同的运行平台上创立configure.wrf文件。在IBM AI* SP机器上,会启用设置模板文件中的关于AI*的十一个配置模块:#ARCH AI* (single-threaded)#FC = *lf_rCC = *lc_r.#ARCH AI* (single-threaded) (NO NETCDF)#FC = *lf_rCC = *lc_r.#ARCH AI* SM (OpenMP)#OMP = -qsmp=noauto -qthreadedOMPCPP = -D_OPENMP.#ARCHAI* DM (RSL-IO, IBM-MPI)#DMPARALLEL = 1OMP = SFC=*lf_r.#ARCHAI* DM (RSL-IO, IBM-MPI) (NO NETCDF)#DMPARALLEL = 1.#ARCHAI* DM/SM (RSL-IO, IBM-MPI, OpenMP)#DMPARALLEL = 1OMP = -qsmp=noauto -qthreaded. 这十一个配置模块分别对应着不可嵌套串行编译、不可嵌套OpenMP并行编译、可嵌套带RSL_LITE库MPI方式并行编译、可嵌套带RSL库MPI方式并行编译、带RSL和HDF5库可嵌套MPI方式并行编译、带RSL库可嵌套MPI和OpenMP方式并存的并行编译、带RSL和MCEL库MPI并行编译、带RSL库与ESMF耦合不可嵌套MPI方式编译、不用MPI但带RSL库可嵌套串行编译以及带RSL库可嵌套OpenMP方式并行编译。每一个模块都设置了对应的WRF模式的编译器配置、编译选项、编译规则等。进展WRF的编译环境配置时,进入WRF模式的顶级目录中,键入./configure。假设设置脚本可以找到相应版本5.004或更高版本的Perl程序,则设置文件arch/configure.defaults中的模板将会被扫描检测,提取相应的配置模块信息,并且会列出一个选择菜单共用户选择:$ configurechecking for perl5. nochecking for perl. found /usr/bin/perl (perl)Will use NETCDF in dir: /usr/local/netcdf-Please select from among the following supported platforms. 1. AI* (single-threaded, no nesting) 2. AI* SM (OpenMP, no nesting) 3. AI* DM-Parallel (RSL_LITE, IBM-MPI, Allows nesting) 4. AI* DM-Parallel (RSL, IBM-MPI, allows nesting) 5. AI* DM-Parallel (RSL, IBM-MPI, allows nesting )(PARALLEL HDF5) 6. AI* DM-Parallel (RSL_LITE, IBM-MPI, Allows nesting )(PARALLEL HDF5) 7. AI* DM-Parallel/SM-Parallel (not remended) (RSL, IBM-MPI, OpenMP, allows nesting) 8. AI* DM-Parallel (RSL, IBM-MPI, MCEL) May 2003, E*PERIMENTAL 9. AI* DM-Parallel ESMF (RSL, IBM-MPI, ESMF coupling, no nesting) E*PERIMENTAL 10. AI* (single-threaded, nesting using RSL without MPI) 11. AI* (OpenMP, nesting using RSL without MPI)Enter selection 1-11 :用户输入一个111的整数,然后按回车。如果选择有效,则所作的选择和提示符会显示出来。用户选择完毕后,正常运行脚本程序时,会在顶级目录中创立文件configure.wrf,并退出程序,回到操作系统。如果在选择时要退出设置脚本程序,用shell的中断命令即可如按Control-C。配置脚本configure会试图在编译主机上查找netCDF函数库以及引用文件。也可通过设置环境变量NETCDF来强制定义到系统中安装netCDF的正确目录。如果没有设置环境变量,而设置脚本也没有找到netCDF,则程序将会要求用户输入一个路径。如果所有这些尝试都失败的话,程序将尝试以没有netCDF的状态来进展编译;不过,由于当前版本的程序只能用netCDF的输出/输入接口,所以必然会造成程序的运行失败。模式目录中还提供了用于卸载的去除程序cleanCsh类shell脚本。安装失败时,可以使用这一程序来恢复到最初的状态。当未指定任何参数时,去除程序clean将删除src目录中的目标文件*.o以及编译时产生的一些中间文件,文件configure.wrf会保存。当指定-a为clean的参数时,则会连同文件configure以及一些在e*ternal目录中的库函数一起删除。所以,用带参数-a的去除命令,则会将模式恢复到模式的安装最原始的状态,而文件configure.wrf中的一些修改信息都会丧失。注意,去除程序并不会将run或test子目录中的数据文件或可执行文件删除掉。在configure.wrf创立后,还可以根据需要来修改编译选项。值得注意的是,WRF模式可实时配置计算围大小,处理器数量,以及其他选项,并且仅需要在运行程序之前通过修改文件namelist.input即可。而针对这些选项设置,并没有修改文件configure.wrf的必要。只是在编译器、编译选项或者编译规则需要变动时,才有必要对configure.wrf文件进展修改。在WRF模式调试运行过程中,发现由于WRF模式采用动态分配数组的方式来分配模式中的数组单元,因此对计算机的逻辑存、堆栈段存以及数据段存开销较大。在IBM SP 上编译时,默认的存设置可能满足不了模式计算时的存需求。而configure.wrf中没有设置存编译选项(-bma*data, -bma*stack 和-qma*mem),这就需要用户对其进展修改。通常将他们的限制值设置的稍微大些比拟好。例如,可以将configure.wrf的原始设置:FCBASEOPTS = -qarch=auto -qfree=f90 -qzerosize -qnosave -qma*mem=-1 -qspill=20000 $(FCDEBUG) $(OMP). . . . . . LDFLAGS = . . . . . . wrfio_nf : ( cd ./e*ternal/io_netcdf ; make NETCDFPATH=/u/denglt/netcdf FC=$(SFC)$(FCDEBUG) -qarch=auto -qfree=f90 -qzerosize -qnosave ; /bin/cp wrf_io_flags.h wrf_status_codes.h ././inc )wrfio_int : ( cd ./e*ternal/io_int ; make CC=$(CC) FC=$(SFC) $(FCDEBUG) -qarch=auto -qfree=f90 -qzerosize -qnosave all diffwrf )solve_interface.o : solve_interface.F $(RM) $ $(CPP) -I./inc $(CPPFLAGS) $*.F $*.f $(FC) -c -qfree=f90 -qspillsize=32767 -I. $(MODULE_DIRS) $*.f修改为:FCBASEOPTS = -qarch=auto -qfree=f90 -bma*data:0*80000000 -bma*stack:0*10000000 -qzerosize -qnosave -qma*mem=-1 -qspill=20000 $(FCDEBUG) $(OMP). . . . . . LDFLAGS = -bma*data:0*80000000-bma*stack:0*10000000 -qma*mem=-1. . . . . . wrfio_nf : ( cd ./e*ternal/io_netcdf ; make NETCDFPATH=/u/denglt/netcdf FC=$(SFC) $(FCDEBUG) -qarch=auto -qfree=f90 -bma*data:0*80000000 -bma*stack:0*10000000 -qma*mem=-1 -qzerosize -qnosave ; /bin/cp wrf_io_flags.h wrf_status_codes.h ././inc )wrfio_int : ( cd ./e*ternal/io_int ; make CC=$(CC) FC=$(SFC) $(FCDEBUG) -qarch=auto -qfree=f90 -bma*data:0*80000000 -bma*stack:0*10000000 -qma*mem=-1 -qzerosize -qnosave all diffwrf )solve_interface.o : solve_interface.F $(RM) $ $(CPP) -I./inc $(CPPFLAGS) $*.F $*.f $(FC) -c -qfree=f90 -bma*data:0*80000000 -bma*stack:0*80000000 -qma*mem=-1 -qspillsize=32767 -I. $(MODULE_DIRS) $*.f由于以上的修改,在运行去除程序clean后会被自动删除掉,造成修改信息丧失。有鉴于此,用户除了修改configure.wrf外,还可以直接修改arch子目录中的configure.defaults文件。找到configure.defaults文件中与AI*相关的十一个配置模块,按在configure.wrf中的修改方法一样修改。这样做好修改后,以后的每次去除编译环境重新配置编译环境时,都不会丧失修改好的信息。在编译1.3版时,发现有些程序在选用优化编译时,往往会编译很慢,甚至会由于优化消耗存,造成存缺乏后而导致编译失败。因此,一种解决方法是可以在编译选项中去掉优化选项-O2;另一种解决方法就是将优化编译时耗时很长或者耗存很大的程序参加到优化的编译规则中。这一修改,也可以在arch子目录中的configure.defaults中进展。在IBM SP2机器上,要添加的的目标文件有:module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.omodule_start.o module_initialize.o module_initialize_b_wave.o module_initialize_hill2d_*.o module_initialize_quarter_ss.o module_initialize_squall2d_*.o module_initialize_squall2d_y.o module_initialize_real.o module_dm.o start_domain.o mediation_force_domain.o mediation_interp_domain.o mediation_feedback_domain.o solve_interface.o 当configure.wrf文件中的ARCHFLAG标志参数包含-DDM_PARALLEL参数值,并且连接好相应的消息传递库函数时,可用分布式存并行机制进展编译。目前连接库只有一种可供选择:e*ternal/RSL/RSL/librsl.a。此时,其他一些必须设置生效的参数值包括:-DWRF_RSL_IO和_DRSL。CFLAGS参数必须取有-DWRF_RSL_IO,-DMA*DOM_MAKE = $(MA*_DOMAINS),DMA*PROC_MAKE= $(MA*_PROC ),DMA*PROC_MAKE = $(MA*_PROC),-I./e*ternal/RSL/RSL。在设置文件arch/configure.defaults的用于设置分布式存并行编译的模板中包含了上面这些参数值。而在configure.wrf文件中设置相应的编译标志参数时,就可以用共享式存并行机制来进展编译。存共享式并行机制采用OpenMP线程形式。2.5.4 编译代码 在配置完编译环境变量之后,就可以输入编译命令pile进展程序代码编译了。首先,输
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!