1、WRF 模式运行指南(2007.8.242007.8.30)国家气象中心数值预报室 (内部资料 请勿扩散)二七年八月二十四日 1目录1. WRF 模式简介 12. WRF 模式的安装 22.1 安装环境 .22.2 模式源程序.22.3 NetCDF 函数库的安装22.4 WRF 模式的安装62.5 资料前处理系统(WPS)的安装.93. WRF 模式与 T213 模式连接.173.1 连接方案 .173.2 连接程序设计 .173.3 编译连接程序 213.4 连接的实现 .224. WRF 模式系统的运行.294.1 理想大气方案.294.2 真实大气方案 .325. WRF 模式系统作业
2、卡.475.1 源程序.475.2 真实大气方案 .486. 模式结果的显示处理 .616.1 Vis5D 格式 2.616.2 MICAPS 格式.626.2 GrADS 格式 .65附录 1. WRF 模式参数配置说明 .68附录 2. T213 场库参数表 783WRF 模式系统安装/调试技术报告数值预报室 邓莲堂1. WRF 模式简介WRF(Weather Research Forecast)模式系统是由许多美国研究部门及大学的科学家共同参与进行开发研究的新一代中尺度预报模式和同化系统。WRF 模式系统的开发计划是在 1997 年由 NCAR 中小尺度气象处、NCEP 的环境模拟中心、
3、FSL 的预报研究处和奥克拉荷马大学的风暴分析预报中心四部门联合发起建立的,并由国家自然科学基金和 NOAA 共同支持。现在,这项计划,得到了许多其他研究部门及大学的科学家共同参与进行开发研究。WRF 模式系统具有可移植、易维护、可扩充、高效率、方便的等诸多特性,将为新的科研成果运用于业务预报模式更为便捷,并使得科技人员在大学、科研单位及业务部门之间的交流变得更加容易。WRF 模式系统将成为改进从云尺度到天气尺度等不同尺度重要天气特征预报精度的工具。重点考虑 110 公里的水平网格。模式将结合先进的数值方法和资料同化技术,采用经过改进的物理过程方案,同时具有多重嵌套及易于定位于不同地理位置的能
4、力。它将很好的适应从理想化的研究到业务预报等应用的需要,并具有便于进一步加强完善的灵活性。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。原
5、定于2002 年 10 月份左右的第六次发布,直到 2003 年 3 月 20 才推出,版本号为1.3。2003 年 11 月 21 日进行了更新。2004 年 5 月 21 日推出了嵌套版本V2.0。2004 年 6 月 3 日进行了更新。2006 年 1 月 30 日升级为新版本2.1.2。2006 年 11 月 22 日升级为 2.2 版。42WRF 模式的安装2.1 硬件环境WRF 模式是一个多机型、跨平台、标准化的模式。可以在 IBM AIX,SGI IRIX, PC LINUX 等机型上运行。2.2 软件环境WRF 模式的运行系统中的一般需要的安装软件环境包括:UNIX(LINUX
6、)操作系统Perl5.003 以上Fortran 程序编辑器(包括 Fortran90 和 Fortran77 编译器)C 程序编译器NetCDF 函数库,版本在 3.3.1 以上(必须包含 Fortran77,Fortran90以及 C 的程序调用接口)MICAPS 图形显示系统、 VIS5D 图形显示系统、GrADS 或者 RIP 等2.2.1 UNIX 环境计算机系统是有计算机硬件和软件构成。操作系统是系统软件的核心,它控制程序的执行和提供资源分配、调度、输入/输出控制和数据管理服务。 UN IX 系统是一种多用户多任务的分时的操作系统, 由于其安全可靠、开放性和可移植性良好等优点, 迅
7、速成为小型机和工作站上普遍使用的一种主流操作系统。UNIX 系统大致分为三层:最里层是 UNIX 内核,即 UNIX 操作系统常驻内存部分,它直接附着在硬件上;中间层是 shell,即命令解释程序,这是用户与系统和核心的接口;最外层是应用层,它包含众多的应用软件、实用程序和除 UNIX 操作系统之外的其他系统软件。在 UNIX 操作系统中,通常提供三种不同的 shell,即 Bourne shell(简称sh) 、Cshell(简称 csh)和 Korn shell(检查 ksh) 。Bourne shell 是 AT make NETCDFPATH=/u/denglt/netcdf FC=“
8、$(SFC) $(FCDEBUG) -qarch=auto -qfree=f90 -qzerosize -qnosave“ ; /bin/cp wrf_io_flags.h wrf_status_codes.h /inc )wrfio_int :( cd /external/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 $(C
9、PPFLAGS) $*.F $*.f$(FC) -c -qfree=f90 -qspillsize=32767 -I. $(MODULE_DIRS) $*.f修改为:FCBASEOPTS = -qarch=auto -qfree=f90 -bmaxdata:0x80000000 -bmaxstack:0x10000000 -qzerosize -qnosave -qmaxmem=-1 -qspill=20000 $(FCDEBUG) $(OMP)LDFLAGS = -bmaxdata:0x80000000 -bmaxstack:0x10000000 -qmaxmem=-1wrfio_nf :(
10、 cd /external/io_netcdf ; make NETCDFPATH=/u/denglt/netcdf 16FC=“$(SFC) $(FCDEBUG) -qarch=auto -qfree=f90 -bmaxdata:0x80000000 -bmaxstack:0x10000000 -qmaxmem=-1 -qzerosize -qnosave“ ; /bin/cp wrf_io_flags.h wrf_status_codes.h /inc )wrfio_int :( cd /external/io_int ; make CC=$(CC) FC=“$(SFC) $(FCDEBU
11、G) -qarch=auto -qfree=f90 -bmaxdata:0x80000000 -bmaxstack:0x10000000 -qmaxmem=-1 -qzerosize -qnosave“ all diffwrf )solve_interface.o : solve_interface.F$(RM) $(CPP) -I/inc $(CPPFLAGS) $*.F $*.f$(FC) -c -qfree=f90 -bmaxdata:0x80000000 -bmaxstack:0x80000000 -qmaxmem=-1 -qspillsize=32767 -I. $(MODULE_D
12、IRS) $*.f由于以上的修改,在运行清除程序 clean 后会被自动删除掉,造成修改信息丢失。有鉴于此,用户除了修改 configure.wrf 外,还可以直接修改 arch 子目录中的 configure.defaults 文件。找到 configure.defaults 文件中与 AIX 相关的十一个配置模块,按在 configure.wrf 中的修改方法一样修改。这样做好修改后,以后的每次清除编译环境重新配置编译环境时,都不会丢失修改好的信息。在编译 1.3 版时,发现有些程序在选用“优化”编译时,往往会编译很慢,甚至会由于优化消耗内存,造成内存不足后而导致编译失败。因此,一种解决方
13、法是可以在编译选项中去掉优化选项“-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_x.o module_initial
14、ize_quarter_ss.o module_initialize_squall2d_x.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 参数值,并且连接好相应的消息传递库函数时,可用
15、分布式内存并行机制进行编译。目前连接库只有一种可供选择:external/RSL/RSL/librsl.a。此时,其他一些必须设置生效的参数值包括:-DWRF_RSL_IO 和_DRSL。CFLAGS 参数必须取有-DWRF_RSL_IO,-DMAXDOM_MAKE = $(MAX_DOMAINS),DMAXPROC_MAKE= $(MAX_PROC ),DMAXPROC_MAKE = $(MAX_PROC),-I/external/RSL/RSL。在设置文件 arch/configure.defaults 的用于设置分布式内存并行编译的模板中包含了上面这些参数值。而在 configure.w
16、rf 文件中设置相应的编译标志参数时,就可以用共享式内存并行机制来进行编译。内存共享式并行机制采用 OpenMP 线程形式。172.5.4 编译代码在配置完编译环境变量之后,就可以输入编译命令“compile”进行程序代码编译了。首先,输入“compile ”,则会出现以下帮助选项:Usage:compile wrf compile wrf in run dirtest cases (see README_test_cases):compile em_b_wave (欧拉质量坐标斜压波方案)compile em_grav2d_x (欧拉质量坐标重力波方案 )compile em_hill2d_
17、x (欧拉质量坐标二维钟形山体方案)compile em_quarter_ss (欧拉质量坐标三维超级单体云体方案)compile em_real (欧拉质量坐标真实大气方案)compile em_squall2d_x (欧拉质量坐标 x-z 平面二维飚线方案 )compile em_squall2d_y (欧拉质量坐标 y-z 平面二维飚线方案 )compile exp_real (真实大气试验方案 )compile nmm_real (欧拉高度坐标真实大气方案 )compile -h (帮助信息)上面的帮助信息里,列出了目前 WRF 模式中可以编译运行的方案选择。其中 em 表示“欧拉质量
18、坐标”模式动力框架。当模式从一个方案转到其他方案时,必须重新编译。重新编译后,wrf.exe 不变,但初始化程序(比如real.exe 和 ideal.exe)会有所不同。除了“nmm_real”和“em_real”两个编译方案是真实大气方案外,其他方案都是用理想数据进行大气模拟试验的方案。编译时,输入带参数的编译命令“compile ”,命令格式为:$compile case_name比如说要编译质量动力框架下的二维飚线方案时,则可键入命令:$compile em_squall2d_x然后,编译程序启用注册机制:在“tools/directory”目录中的 c 程序会根据文件 Registr
19、y/Registry 中的列表内容创建文件,放在 inc 目录中。然后,编译程序会编译一些源程序目录中的源代码,产生目标文件“.o”以及一些中间文件(如“.f” ) 。注意,其中目录“frame/”中的一个源代码文件(“frame/module_state_description.F” )不是随模型源程序一起发布的,而是在编译时由注册机制自动创建的。如果想要在下一次编译时强制重新运行注册机制,则将文件“frame/module_state_description.F” 移除掉即可。成功编译后,会产生两个可执行文件“ideal.exe”和“wrf.exe”,放置目录为“main/”,并且在目录“
20、test/em_squall2d_x”中有他们的连接文件。对于每一个不同理想大气试验方案,ideal.exe 都会不同,这是因为它们建立方案时是编译了不同的模块“module_initialize ”。如果用户想修改试验方案,则需对目录“dyn_em/”或者“dyn_eh/”中的“module_initialize”进行修改。可以改变它们的初始状态,比如边界环境、热力湍流(thermal bubble) 、模式层数以及地形等。如果模式动力框架不同,那么“ideal.exe ”也会不同。当编译失败或者要重新编译时,可用模式提供的清除命令 clean 来进行。18当未指定任何参数时,清除程序“cl
21、ean”将删除源程序目录中的目标文件(*.o)以及编译时产生的一些中间文件,文件“configure.wrf”会保留。当指定“-a ”为“clean ”的参数时,则会连同文件“configure”以及一些在“external”目录中的库函数一起删除。所以,用带参数“-a”的清除命令,则会将模式恢复到模式的安装最原始的状态,而文件“configure.wrf”中的一些修改信息都会丢失。 (注意,清除程序并不会将 run 或 test 子目录中的数据文件或可执行文件删除掉) 。 对发布的原始代码或运行了清除程序“clean -a”后的代码进行第一次编译时,编译程序会在“external”目录中创建
22、一些库函数。另外,编译错误时显示的行号是中间文件“.f”的对应行号,但不一定都是源程序目录中的“.F ”文件的对应行号。这可能会给查找错误所在地位置带来一些麻烦。F90 编译器允许在向外部子程序传递实参时,产生 f90 型伪形(assumed-shape)数组的副本。一些 F90 编译器即使整个数组(无需分割成子集)被作为实参传递时也会产生这种副本。这样的话,产生副本是非常浪费内存的。-DDEREF_KLUDGE 指示注册机制在构建调用子程序的实参列表时创建一个额外标志信息,从而使编译器认为仅仅是传递数组的第一个元素,避免了创建副本。2.7 资料前处理系统(WPS)的安装2.6.1 文件和资料
23、的获取资料前处理系统是 WRF 模式的数据前处理部分,是为 WRF 模式提供初/边值的部分。WPS 主要的具有两大功能:(1) 模式区域的定义和创建在这里,用户可以定义计算区域(投影参数,范围大小,区域位置等) 。根据这些定义设置,SI 的“gridgen_model.exe ”程序会产生一个名为“static”的文件。它是 NetCDF 格式的文件,包含模式格点定义信息和一些静态数据场(如地形、土地利用、土壤类型、月叶面积指数、经度和纬度等)。(2) 将数据插值到 WRF 模式的计算格点(只包括水平方向,垂直方向插值在real 程序部分实现)上,为 WRF 模式提供初始场和边界条件场。这项功
24、能是由“geo_grid.exe ”和“met_grid.exe”程序来完成。另外,“un_grib.exe”程序是将标准的 GRIB 码格式的数据文件转换成“met_grid.exe”程序能识别的格式。也可以不用“un_grib.exe ”程序,而是直接将其他数据格式的数据写成“met_grid.exe”所能识别的格式即可。安装之前,首先需从 WRF 模式的提供网站(http:/www.wrf-model.org )下载资料前处理系统(WPS)的压缩程序包 WPSV2.2.TAR.gz、AVN 模式的试验数据 avn_data.tar.gz 以及模式所需的静态数据(如地形、土地利用类型、土壤
25、温度等):19WPSV2.2.TAR.gz avn_data.tar.gzgeo.tar.gz 或者 geo_10m.tar.gz 解压 geo.tar.gz 这些文件后,应该得到以下目录:albedo_ncep/greenfrac/islope/landuse_10m/landuse_5m/landuse_2mlanduse_30s/maxsnowlabsoiltemp_1deg/soiltype_bot_10m/soiltype_bot_2m/soiltype_bot_30s/soiltype_bot_5m/soiltype_top_10m/soiltype_top_2m/soiltype
26、_top_30s/soiltype_top_5m/topo_10m/topo_5m/topo_2m/topo_30s/解压后的各目录中所得到的数据文件大多数都是 10,5,2和 30的数据块文件。用户大约需要 10Gb 的磁盘空间来存储这些数据。其目录在 WPS 的参数配置文件中需要做相应的设定。2.6.2 安装环境要求编译时,要求系统装有 Perl(5.003 以上的版本)和 make(3.75 以上的版本) 。由于 WPS 模式的程序采用了 C,Fortran77 和 Fortran90 编写,所以也要求操作平台具有 FORTRAN77,FORTRAN90 和标准 C(或 C)编译器。WP
27、S 的数据格式采用了 NetCDF 的格式,要求系统安装了 NetCDF 函数库。2.6.3 编译环境配置编译安装 WPS 要求先安装 WRFV2 的主模式。在编译和安装前,还需要检查 NetCDF 函数库的安装情况及其环境变量设置。找到正确的 netCDF,设置一下环境变量 NETCDF,将其指到包含 netCDF 库函数的正确目录,例如:在 cshell 环境中:setenv NETCDF /usr/local/netcdf-3.4在 sh(sh,bash 和 ksh)环境中:export NETCDF/usr/local/netcdf-3.420进行 WPS 编译环境配置时,进入 WRF
28、 模式的顶级目录中,键入“./configure”。假设设置脚本可以找到相应版本( 5.004 或更高版本)的 Perl 程序,那么设置文件“arch/configure.defaults ”中的模板将会被扫描检测,提取相应的配置模块信息,并且会列出一个选择菜单共用户选择。Will use NETCDF in dir: /u/wrf_xp/netcdf$JASPERLIB or $JASPERINC not found in environment, configuring to build without grib2 I/O.-Please select from among the fol
29、lowing supported platforms.1. AIX serial, NO GRIB22. AIX serial3. AIX DM parallel, NO GRIB24. AIX DM parallelEnter selection 1-4 :用户输入一个 14 的整数,然后按回车。如果选择有效,则所作的选择和提示符会显示出来。用户选择结束后,正常运行脚本程序时,会在顶级目录中创建文件“configure.wps ”,并退出程序,回到操作系统。如果在选择时要退出设置脚本程序,用 shell 的中断命令即可(如按“Control-C” ) 。模式目录中还提供了用于卸载的清除程序
30、clean(Csh 类 shell 脚本) 。安装失败时,可以使用这一程序来恢复到最初的状态。当未指定任何参数时,清除程序“clean” 将删除 src 目录中的目标文件(*.o)以及编译时产生的一些中间文件,文件“configure.wrf ”会保留。当指定“-a”为“clean”的参数时,则会连同文件“configure”以及一些在“external”目录中的库函数一起删除。所以,用带参数“-a”的清除命令,则会将模式恢复到模式的安装最原始的状态,而文件“configure.wps”中的一些修改信息都会丢失。在“configure.wps”创建后,还可以根据需要来修改编译选项。在编译器、编
31、译选项或者编译规则需要变动时,可以对“configure.wps”文件进行修改。2.6.4 编译代码在配置完编译环境变量之后,就可以输入编译命令“compile”进行程序代码编译了。首先,输入“compile h” ,则会出现以下帮助选项:*Unrecognized compile target -h.Usage: compile targetwhere target is one ofwpsutilgeogrid21ungribmetgridg1printg2printplotfmtrd_intermediateplotgridsmod_levsavg_tsfcor just run com
32、pile with no target to build everything.*上面的帮助信息里,列出了目前 WPS 源代码中可以编译运行的方案选择。编译时,输入带参数的编译命令“compile ”,命令格式为:compile wps成功编译后,会产生可执行文件。当编译失败或者要重新编译时,可用模式提供的清除命令 clean 来进行。当未指定任何参数时,清除程序“clean ”将删除源程序目录中的目标文件(*.o)以及编译时产生的一些中间文件,文件“configure.wrf”会保留。当指定“-a”为“clean”的参数时,则会连同文件“configure”以及一些在“external”目录
33、中的库函数一起删除。 2.6.5 问题处理(1) 如果失败,则可以用 clean 来清除失败的安装程序。(2) 进入到目录下的各个子目录(如 ungrib、metgrid、geogrid 和 util 等)下,输入 make 命令对单个目录进行编译。这样就相对容易找出编译安装时的错误所在。223. WRF 模式与 T213 模式连接3.1 连接方案T213 模式是一个全球谱模式,而 WRF 模式是一个区域格点模式。目前,要实现 WRF 模式与 T213 模式的完全嵌套,在理论上和实践上都还有许多困难。因此,根据 WRF 模式当前只处于调试阶段的实际情况,我们仅将 WRF 模式与T213 模式作
34、简单地连接。简单连接的基本思路就是以 T213 模式的预报场或者客观分析场为 WRF 模式的背景场,并为 WRF 模式提供边界条件。具体实现的方法有两种,一种是从 T213 场库获取要素场,然后修改WRFSI 源程序,读取 T213 要素场,处理后生成 WRF 模式的输入场;另一种是利用从 T213 场库获取要素场,然后利用 MM5 的前处理程序TERRAIN、REGRID 以及 INTERPF 等程序,生成 MM5 的初始场及边界条件,再利用 MM52WRF 程序,将其转换成 WRF 模式的输入要素场。第一种方法简捷方便,易于操作;第二种方法相对繁杂些,但由于 MM5 模式有比较完善的资料同
35、化方案,可以解决目前 WRF 模式没有资料同化方案的不足。3.2 连接程序设计3.2.1 T213 场库资料的通用接口程序IBM SP 机器中 T213 场库的水平分辨率为 0.5625*0.5625(度) 。目前,由于 T213 场库资料的检索已经模块化,用户根据检索时,可直接调用通用场库(T213)检索接口程序“gdbrck ”。调用通用场库接口程序时,用户只必须设置好程序的各个接口参数。具体各接口参数说明如下:call gdbrck(ftype,idate,iftime,ielemcd,level,ii,jj,kk,record,data,index_dic,iret)ftype : c
36、haracter*4,场类型,例 :暴雨系统为 BJLP,t213 系统为 BJGLidate : integer idate(4), 日期数组,年(四位) 、月、日、时次iftime : integer, 时效ielemcd : integer, 要素代码level : integer level(n+1), 层次数组,第一元为调用的总层数 n, 2 到 n+1 元为具体的调用层次,如 level(3), data level/2,500,700/ii : integer,纬度格点数jj : integer, 经度格点数kk : integer, 调用层数 nrecord : integer
37、,本场最大 ii * jj。T213 系统为: 640*321data : real*8 dimension data(ii,jj,kk) ,符点数组,数据区index_dic : character*80, 字符串,模式字典文件全名iret : integer,返回码 0:正常6:场没生成或记录不存在9:其他错值得注意的是,由于场库资料中整数和浮点数都是以 64 位格式存储的,也就是 8 个字节。因此,在程序的声明部分注意场库调用参数的存储长度;或者23在编译程序的时候,选用 64 位编译方式编译。当然,也可以在编译的时候,用编译选项 -qintsize=8 和 -qrealsize=8 两
38、个选项来进行编译。index_dic 是模式字典文件全名,在调用前必须指定。在 IBM SP 上,场库在 SP:/gpfs/fs2/nwp/gdbt213 目录下用 index_dic(1:28)=/u/nwp/gdbt213/dic/index_dic;在场库在盘阵库/asm2/nwpgdb/t213gdb 目录下用 index_dic(1:32)=/u/nwp/gdbt213 /dic/index_nfs_dic。3.2.2 读取 T213 场库资料的程序设计读取 T213 场库资料的基本思路是首先设置好相应的气象要素场的具体调用参数;然后利用 T213 场库提供的通用接口程序读取场库资料
39、,保存在内存变量中;再将内存变量中的相应气象要素场数据按不同的要求输出为不同的数据文件格式。根据这一思想,可以得到读取 T213 场库资料的程序流程图(见图 10) 。实现读取 T213 场库资料的程序名称为 readt213.F。程序开始调用子程序parse_table 来变量列表 Vtable 文件中的变量信息。Vtable 的格式如下:GRIB Code| Level Code| Level 1 | Level 2 | REGRID Name | REGRID Units | REGRID Description |-+-+-+-+-+-+-+80 | 1 | 0| | SST | K
40、| Sea Surface Temperature |1 | 1 | 0 | | PSFC | Pa | Surface Pressure |2 | 102 | 0 | | PMSL | Pa | Sea-level Pressure |7 | 1 | 0 | | HGT | m | Height |Terrain Height211 | 1 | 0 | | SKINTEMP | K | Skin temperature |229 | 105 | 2 | | T | K | Temperature | At 2 m230 | 105 | 2 | | RH | % | Relative Humi
41、dity | At 2 m202 | 105 | 10 | | U | m s-1 | U | At 10 m203 | 105 | 10 | | V | m s-1 | V | At 10 m7 | 100 | | | HGT | m | Height |11 | 100 | * | | T | K | Temperature |33 | 100 | * | | U | m s-1 | U |34 | 100 | * | | V | m s-1 | V |52 | 100 | * | | RH | % | Relative Humidity |-+-+-+-+-+-+-+变量列表 Vtabl
42、e 文件中,第一行是说明信息,调用 parse_table 子程序时,会忽略这些信息。而 parse_table 子程序识别这些信息与有用的变量信息的重要标志就是第一列包含中画线“-”的第二行。也就是说,程序将忽略第一次出现中画线的那一行以前的所有信息,然后读取第一次出现中画线到第二次出现中画线之间的所有变量信息。如果在第二次出现中画线的那一行后面还有信息,那么将忽略第二次出现中画线的那一行之后的所有信息,直到第三次出现中画线的那一行,同时必须有第四次出现中画线的行。第三和第四次之间有没有变量信息不重要,重要的是第三次和第四次必须同时配套出现。24T213 场库读取要从 T213 场库中读取的
43、变量列表读取时间参数及输出格式参数初始化计算时间变量循环:当 1loopj 变量总数时间循环:当计算时间在起止时间之内文件打开标志赋值 flopen.true.要读取的变量为地形?否读取场库气象场是打开地形文件:t213_terrain.dat读取地形数据、设置场的相关信息关闭地形文件要读取的变量为 SST?call proc_sst否是气象场是否为高斯格点场? 否call GAUSS2LATLON是1调用子程序 parse_table,读取变量列表文件 Vtable读取参数列表文件 namelist.input读取 SST场数据,并按要求格式输出25读取 landsea 文件,截取计算区域范
44、围中的水陆标志信息,并按要求格式输出图 1. 读取 T213 场库资料程序流程图结束flopen 为真(.true.)? 否call proc_landsea设置输出区域范围1输出类型?是=3=1=2创建文本格式输出文件创建 AVN 第 4类格式输出文件创建 AVN 第 3类格式输出文件变量为地形? 是输出类型? =4=2call out_wpscall get_sec1call get_sec2call get_gridinfo设置地形场相关输出信息call out_hinterp否结束:变量循环结束:时间循环26在变量列表 Vtable 文件中,这些变量信息设计程表格形式,其中第一列是变量
45、的GRIB 码,这些 GRIB 码是 T213 场库中规定的编码(详见附录 2) 。当要使用 WRF SI 的prep_grib.exe 程序时,还必须将 T213 场库的 GRIB 编码转换成 AVN 的编码形式。第二列是气象要是变量所处的垂直层的 GRIB 编码。其中 100 指气压层,105 指特定的垂直层,102 是指海平面层,1 是指包括海面与陆面的地球表面层。第三、四列是相应于具体的次类型的垂直层的值。比如垂直层类型为 100,则第三列就是去各个等压面的值,如1000、950、850 等等,则第三列用通配符“*”表示,而第四列为空;如果垂直层类型为 105,则第三列则为具体指定的垂
46、直层面的值,如 10 米高度的风速则用 10 米等高面的值,第三列为 10,而第四列为空;如果垂直层类型为 102或 1,则第三列取为 0,第四列为空。第五列为变量名称,按照 GRIB 编码的标准进行变量命名。第六列为变量单位,采用 GRIB 编码的单位标准。第七列为变量文字描述信息,不超过 42 个字符。在表格中,每一列都是用竖线“|”分隔。第一列的起始处不要加分隔符“|” ,但最后一列也就是第七列必须以分隔符结束。后面可以跟一些说明文字信息,但这些信息会被忽略掉。程序读完变量列表信息后,紧接着便打开参数设置文件“namelist.input” ,读取用户调用场库的起止时间、输出区域的范围以及输出文件的格式。例如:&filetimespecSTART_YEAR = 2003START_MONTH = 04START_DAY = 07START_HOUR = 00START_MINUTE = 00START_SECOND = 00END_YEAR = 2003END_MONTH = 04END_DAY = 10END_HOUR = 00END_MINUTE = 00END_SECOND = 00INTERVAL = 21600START_X = 1START_Y = 1DELTA_X = 320DELTA_Y = 160