v1.0 可编辑可修改 Usage:
compile wrf compile wrf in run dir test cases (see README_test_cases): compile em_b_wave
(欧拉质量坐标斜压波方案)
compile em_grav2d_x (欧拉质量坐标重力波方案) compile em_hill2d_x
(欧拉质量坐标二维钟形山体方案)
(欧拉质量坐标三维超级单体云体方案)
compile em_quarter_ss compile em_real
(欧拉质量坐标真实大气方案)
(欧拉质量坐标x-z平面二维飚线方案 ) (欧拉质量坐标y-z平面二维飚线方案 )
compile em_squall2d_x compile em_squall2d_y
compile exp_real (真实大气试验方案 ) compile nmm_real (欧拉高度坐标真实大气方案 ) compile -h (帮助信息)
上面的帮助信息里,列出了目前WRF模式中可以编译运行的方案选择。其中em表示“欧拉质量坐标”模式动力框架。当模式从一个方案转到其他方案时,必须重新编译。重新编译后,不变,但初始化程序(比如和)会有所不同。除了“nmm_real”和“em_real”两个编译方案是真实大气方案外,其他方案都是用理想数据进行大气模拟试验的方案。
编译时,输入带参数的编译命令“compile”,命令格式为: $compile case_name
比如说要编译质量动力框架下的二维飚线方案时,则可键入命令:
$compile em_squall2d_x
然后,编译程序启用注册机制:在“tools/directory”目录中的c程序会
根据文件Registry/Registry中的列表内容创建文件,放在inc目录中。然后,编译程序会编译一些源程序目录中的源代码,产生目标文件“.o”以及一些中间文件(如“.f”)。注意,其中目录“frame/”中的一个源代码文件(“frame/”)
24
v1.0 可编辑可修改 不是随模型源程序一起发布的,而是在编译时由注册机制自动创建的。如果想要在下一次编译时强制重新运行注册机制,则将文件“frame/”移除掉即可。
成功编译后,会产生两个可执行文件“”和“”,放置目录为“main/”,并
且在目录“test/em_squall2d_x”中有他们的连接文件。对于每一个不同理想大气试验方案,都会不同,这是因为它们建立方案时是编译了不同的模块“module_initialize”。如果用户想修改试验方案,则需对目录“dyn_em/”或者“dyn_eh/”中的“module_initialize”进行修改。可以改变它们的初始状态,比如边界环境、热力湍流(thermal bubble)、模式层数以及地形等。如果模式动力框架不同,那么“”也会不同。
当编译失败或者要重新编译时,可用模式提供的清除命令clean来进行。当未指定任何参数时,清除程序“clean”将删除源程序目录中的目标文件(*.o)以及编译时产生的一些中间文件,文件“”会保留。当指定“-a”为“clean”的参数时,则会连同文件“configure”以及一些在“external”目录中的库函数一起删除。所以,用带参数“-a”的清除命令,则会将模式恢复到模式的安装最原始的状态,而文件“”中的一些修改信息都会丢失。(注意,清除程序并不会将run或test子目录中的数据文件或可执行文件删除掉)。
对发布的原始代码或运行了清除程序“clean -a”后的代码进行第一次编译时,编译程序会在“external”目录中创建一些库函数。
另外,编译错误时显示的行号是中间文件“.f”的对应行号,但不一定都是源程序目录中的“.F”文件的对应行号。这可能会给查找错误所在地位置带来一些麻烦。
F90编译器允许在向外部子程序传递实参时,产生f90型伪形(assumed-shape)数组的副本。一些F90编译器即使整个数组(无需分割成子集)被作为实参传递时也会产生这种副本。这样的话,产生副本是非常浪费内存的。-DDEREF_KLUDGE指示注册机制在构建调用子程序的实参列表时创建一个额外标志信息,从而使编译器认为仅仅是传递数组的第一个元素,避免了创建副本。
25
v1.0 可编辑可修改 3. WRF模式与T213模式嵌套
嵌套方案
T213模式是一个全球谱模式,而WRF模式是一个区域格点模式。目前,要实现WRF模式与T213模式的完全嵌套,在理论上和实践上都还有许多困难。因此,根据WRF模式当前只处于调试阶段的实际情况,我们仅将WRF模式与T213模式作简单地嵌套。
简单嵌套的基本思路就是以T213模式的预报场或者客观分析场为WRF模式的背景场,并为WRF模式提供边界条件。
具体实现的方法有两种,一种是从T213场库获取要素场,然后修改WRFSI源程序,读取T213要素场,处理后生成WRF模式的输入场;另一种是利用从T213场库获取要素场,然后利用MM5的前处理程序TERRAIN、REGRID以及INTERPF等程序,生成MM5的初始场及边界条件,再利用MM52WRF程序,将其转换成WRF模式的输入要素场。第一种方法简捷方便,易于操作;第二种方法相对繁杂些,但由于MM5模式有比较完善的资料同化方案,可以解决目前WRF模式没有资料同化方案的不足。
嵌套程序设计
T213场库资料的通用接口程序
IBM SP机器中T213场库的水平分辨率为*(度)。目前,由于T213场库资料的检索已经模块化,用户根据检索时,可直接调用通用场库(T213)检索接口程序“gdbrck”。调用通用场库接口程序时,用户只必须设置好程序的各个接口参数。具体各接口参数说明如下:
call
gdbrck(ftype,idate,iftime,ielemcd,level,ii,jj,kk,record,data,index_dic,iret)
26
v1.0 可编辑可修改
ftype : character*4,场类型,例:暴雨系统为 'BJLP',t213系统为 'BJGL’ idate : 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, 调用层数n
record : integer,本场最大ii * jj。T213系统为: 640*321 data : real*8 dimension data(ii,jj,kk) ,符点数组,数据区 index_dic : character*80, 字符串,模式字典文件全名 iret : integer,返回码 0:正常
6:场没生成或记录不存在 9:其他错
值得注意的是,由于场库资料中整数和浮点数都是以64位格式存储的,也就是8个字节。因此,在程序的声明部分注意场库调用参数的存储长度;或者在编译程序的时候,选用64位编译方式编译。当然,也可以在编译的时候,用编译选项 -qintsize=8 和 -qrealsize=8两个选项来进行编译。
index_dic是模式字典文件全名,在调用前必须指定。在IBM SP上,场库在
SP:/gpfs/fs2/nwp/gdbt213
目
录
下
用
index_dic(1:28)='/u/nwp/gdbt213/dic/index_dic';在场库在盘阵库/asm2/nwpgdb/t213gdb/dic/index_nfs_dic’。
读取T213场库资料的程序设计
目录下用
index_dic(1:32)='/u/nwp/gdbt213
27
v1.0 可编辑可修改 读取T213场库资料的基本思路是首先设置好相应的气象要素场的具体调用参数;然后利用T213场库提供的通用接口程序读取场库资料,保存在内存变量中;再将内存变量中的相应气象要素场数据按不同的要求输出为不同的数据文件格式。根据这一思想,可以得到读取T213场库资料的程序流程图(见图10)。 实现读取T213场库资料的程序名称为。程序开始调用子程序parse_table来变量列表Vtable文件中的变量信息。Vtable的格式如下:
GRIB Code| Level Code| Level 1 | Level 2 | REGRID Name | REGRID Units | REGRID Description |
-----+------+------+------+----------+----------+------------------------------------------+
80 | 1 | 0 | | SST | K | 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 Height
211 | 1 | 0 | | SKINTEMP | K | Skin temperature (can use for SST also) | 229 | 105 | 2 | | T | K | Temperature | At 2 m 230 | 105 | 2 | | RH | % | Relative Humidity | At 2 m 202 | 105 | 10 | | U | m s{-1}| U | At 10 m 203 | 105 | 10 | | V | m s{-1} | V | At 10 m 7 | 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 | -----+------+------+------+----------+----------+---------------------------------------------+
变量列表Vtable文件中,第一行是说明信息,调用parse_table子程序时,
28