设置和运行 ------------- 一旦成功构建了UPP,用户将准备好开始在其模型数据上运行UPP的过程。尽管 :code:`unipost.exe` 可以在命令行上交互式运行,但它要求用户将所有必需的文件链接到其工作目录并创建itag文件,其中包括unipost本身读取的所需用户定义信息。相反,鼓励新用户使用 :code:`UPPV4.0/scripts/` 目录中提供的便捷运行脚本之一。 :code:`unipost.exe` 程序需要以下文件: * itag:4-5行文本文件,详细介绍要处理的WRF模型输出 * 控制文件::code:`wrf_cntrl.parm` (grib1)或 :code:`postxconfig-NT.txt` (grib2):文件指定要输出的字段/级别 * 额外文件:例如,微物理或卫星的数据表。 .. code-block:: bash ***提供的运行脚本将自动创建和/或链接这些必需的文件*** ITAG ^^^^^^^^^^^^^^ 该ITAG由unipost读入,并在自动生成的run_unipost基于在用户编辑部分用户定义的选项脚本。所述ITAG包含以下5(6),用于处理WR(FV3GFS)数据: 1. 要进行后处理的WRF(FV3GFS dyn\*)输出文件的路径和名称。 #. WRF(FV3GFS)模型输出的格式(netcdf或binarynemsio)。 #. UPP输出的格式(GRIB1或GRIB2)。 #. 以WRF格式预测有效时间(不是模型开始时间)(即,需要进行后处理的预测时间)。 #. 使用的动态核心(NCAR或GFS)。 #. 仅限FV3GFS:要后处理的FV3GFS phy\*输出文件的路径和名称。 WRF-ARW的示例: .. code-block:: bash /path/to/file/wrfout_d01_2010-06-10_00:00:00 netcdf grib2 2010-06-10_00:00:00 NCAR FV3GFS的示例: .. code-block:: bash /path/to/file/dynf006.nemsio binarynemsio grib2 2016-10-03_06:00:00 GFS /path/to/file/phyf006.nemsio GRIB1的控制文件 ^^^^^^^^^^^^^^^^^^^^^^ 本节介绍了参数文件,可以修改该参数文件以控制后处理的方式,以输出仅适用于WRF-ARW的GRIB1格式。供WRF运行的 :code:`/UPPV4.0/parm/wrf_cntrl.parm` 中可以找到供用户练习的默认控制文件。 WRF控制文件的组件 控制文件由标题和主体组成。标头指定输出文件信息。主体允许您选择要处理的字段和级别。 :code:`wrf_cntrl.parm` 文件的头 包含以下变量: * KGTYPE:定义输出网格类型,应始终为255 * IMDLTY:标识AWIPS的进程ID * DATSET:定义用于输出文件名的前缀(即用于WRF运行的WRFPRS) :code:`wrf_cntrl.parm` 文件的主体 由一系列线对组成,类似于: .. code-block:: bash PRESS ON MDL SFCS)SCAL =(3.0) L =(11000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000) 第一行指定: * 变量(例如PRESS) * 级别类型(例如,ON MDL SFCS) * 写入GRIB1文件的数据的精度(例如SCAL = 3.0) 第二行指定要在其上输出变量的级别。在此示例中,:code:`0` 指示在该级别上没有输出,而 :code:`1` 指示该变量将在由数字位置和定义的级别类型指定的级别上输出。 对于那些希望修改 :code:`wrf_cntrl.parm` 文件的用户,请参阅 `如何控制输出哪个GRIB1变量和级别 `_ 。 变量和级别修改 =================================== 控制哪些变量UNIPOST输出 """""""""""""""""""""""""" 要输出字段,控制文件的主体需要: - 包含适当变量的条目 - 输出至少打开了一级 控制其水平UNIPOST输出 """""""""""""""""""""""""" 为了控制要输出level,请使用第二行,其中 :code:`1` 打开 level,:code:`0` 关闭 level。 * 对于等压输出,从2到1000 hPa(2、5、7、10、20、30、50、70 mb,然后每25到75 mb至1000 mb)有47个级别是可能的。可以在 :code:`/UPPV4.0/src/unipost/CTLBLK.f` 中进行等压线级别的修改 - 修改变量LSMDEF以更改阵列中的压力级别数(例如LSMDEF = 47) - 修改SPLDEF数组以更改压力水平的值,即(/200.,500....97500.,100000./) * 对于模型级别的输出,所有模型级别都是可能的,从最高到最低 * 对于土壤水平,层数或水平取决于您的LSM: - Noah LSM土壤层为0-10、10-40、40-100和100-200厘米。 - RUC LSM土壤水平为0、1、4、10、30、60、100、160和300 cm。对于RUC LSM,有必要在wrf_cntrl.parm中打开5个附加级别以输出9而不是4 。(对于旧的RUC-LSM,只有6层,如果使用此层,则需要在 :code:`WRFPOST.f` 例程中将RUC LSM从9更改为6 )。 - Pliem-Xiu LSM层是0-1和1-100厘米。 * 对于低,中和高云层,分别为≥642hPa,≥350hPa和<350 hPa。 * 对于PBL层平均值,这些级别对应于6个层,每个层的厚度为30 hPa。 * 对于飞行级别,级别为30、50、80、100、305、457、610、914、1524、1829、2134、2743、3658、4572、6000和7010 m。 * 对于AGL雷达反射率,水平为4000和1000 m。 * 对于地表或掩体级输出,仅需要打开线路的第一个位置。 有关GRIB1的可用字段的列表,请参见 `GRIB1表 `_ GRIB2的控制文件 ^^^^^^^^^^^^^^^^^^^^^^^^ 为了以GRIB2格式输出,使用了许多参数文件,并且可以在 :code:`/UPPV4.0/parm/` 目录中找到 : * post_avblflds.xml:参数文件列出了所有可能的字段,可用于在UPP中输出 * postcntrl.xml:样本可配置参数文件,该文件声明将从UPP输出哪些字段 * postxconfig-NT.txt:从 :code:`postcntrl.xml` 创建的文本文件,由 unipost读取 对于新用户,示例文本文件可用于运行UPP。 以下各节描述了可配置的 :code:`postcntrl.xml` 参数文件以及unipost输出GRIB2格式所需的创建 :code:`postxconfig-NT.txt` 文件的过程。 XMLPOST CONTROL XML的组件 =================================== :code:`postcntrl.xml` 文件的头包含许多用于指定输出文件信息的变量,其中大多数将不需要修改。第一个变量是datset它定义(例如用于输出文件名的前缀WRFPRS为WRF运行或GFSPRS用于FV3GFS运行),并且将是唯一一个在此描述。 :code:`postcntrl.xml` 文件的主体包含每个变量的信息,类似于以下示例: 范例 1: .. code-block:: bash PRES_ON_HYBRID_LVL PRES 1。2. 3. 4. 5。 6.0 其中, * shortname 声明变量(例如PRES)和级别类型(例如ON_HYBRID_LVL) * pname 是该类型的变量(例如PRES)的标准GRIB2缩写。 * level 列出了输出变量的级别(例如,混合级别1. 2. 3. 4. 5.) * scale 是写入GRIB2文件的数据的精度(例如6的小数位数) 范例 2: .. code-block:: bash LFTX_ON_ISOBARIC_SFC_500-1000hpa LFTX NCEP 50000。 100000。 3.0 其中, * shortname 声明变量(例如LFTX)和级别类型(例如ON_ISOBARIC_SFC_500-1000hpa) * pname 是该类型的变量(例如LFTX)的标准GRIB2缩写。 * table_info 指定要使用的表信息(如果不是标准的话)(例如NCEP) * level 列出了一层的第一个级别,如果输出多个层,则用逗号分隔(例如,压力级别50000。Pa) * level2 列出了一层的第二层,如果输出多个层,则以逗号分隔(例如,压力水平100000。Pa) * scale 是写入GRIB2文件的数据的精度(例如3的小数位数) .. note:: 尽管unipost实际上未直接读取 :code:`postcntrl.xml`,但是创建 :code:`postxconfig-NT.txt` 则需要它。 对于那些希望修改 :code:`postcntrl.xml` 文件的用户,请参阅 `如何控制输出哪些GRIB2变量和级别 `_ 。 创建POSTXCONFIG文本文件 ==================================== 输出GRIB2格式时,如果对 :code:`postcntrl.xml` 进行了任何修改,则用户需要执行预处理步骤才能将 :code:`postcntrl.xml` 转换为纯文本文件 :code:`postxconfig-NT.txt` 。 首先,为了确保xml文件没有错误,可使用xml样式表来验证它们,这些样式表位于 :code:`/UPPV4.0/parm/` 目录中: * EMC_POST_CTRL_Schema.xsd:用于验证 postcntrl.xml * EMC_POST_Avblflds_Schema.xsd:用于验证 post_avblflds.xml 要运行验证,请键入: .. code-block:: bash xmllint -noout --schema EMC_POST_CTRL_Schema.xsd postcntrl.xml xmllint -noout --schema EMC_POST_Avblflds_Schema.xsd post_avblflds.xml 将给出确认信息(例如 :code:`postcntrl.xml` vlalidates),否则将返回错误。 验证xml后,即可创建postxconfig-NT.txt文件。编辑/UPPV4.0/parm/makefile,使其指向正确的目录位置。生成文件将调用perl程序/UPPV4.0/parm/POSTXMLPreprocessor.pl生成新的文本文件postxconfig-NT.txt。 要运行 :code:`makefile` ,输入: .. code-block:: bash make 这将创建输出GRIB2格式所需的新的 :code:`postxconfig-NT.txt` 文本文件,该文件将包含 :code:`postcntrl.xml` 中的所有字段。 变量和级别修改 ==================================== 要输出字段,:code:`postcntrl.xml` 文件的主体需要包含相应变量的条目,并至少包括shortname,pname,level和scale,并视需要包含其他标签。如果您的:code:`postcntrl.xml` 中没有字段,但该字段可供输出,则可以从 :code:`post_avblflds.xml` 复制该参数。 控制其水平UNIPOST输出 """""""""""""""""""""" 要修改要输出的级别,需要编辑级别标签中的值以反映该变量所需的输出级别。如果该变量在一个特定层中定义,则level(该层的第一级)和level2(层的第二级)标签将需要被编辑。 下面的列表详细说明了哪些变量可用于各种字段的输出。 * 对于等压输出,从2到1000 hPa(2、5、7、10、20、30、50、70 mb,然后每25到75 mb至1000 mb)有47个级别是可能的。可以在 :code:`/UPPV4.0/src/unipost/CTLBLK.f` 中进行等压线级别的修改 - 修改变量LSMDEF以更改阵列中的压力级别数(例如LSMDEF = 47) - 修改SPLDEF数组以更改压力水平的值,即(/200.,500....97500.,100000./) * 对于模型级别的输出,所有模型级别都是可能的,从最高到最低 * 对于土壤水平,层数或水平取决于您的LSM: - Noah LSM土壤层为0-10、10-40、40-100和100-200厘米。 - RUC LSM土壤水平为0、1、4、10、30、60、100、160和300 cm。对于RUC LSM,有必要在wrf_cntrl.parm中打开5个附加级别以输出9而不是4 。(对于旧的RUC - LSM,只有6层,如果使用此层,则需要在WRFPOST.f例程中将RUC LSM从9更改为6 )。 - Pliem-Xiu LSM层是0-1和1-100厘米。 * 对于低,中和高云层,分别为≥642hPa,≥350hPa和<350 hPa。 * 对于PBL层平均值,这些级别对应于6个层,每个层的厚度为30 hPa。 * 对于飞行级别,级别为30、50、80、100、305、457、610、914、1524、1829、2134、2743、3658、4572、6000和7010 m。 * 对于AGL雷达反射率,水平为4000和1000 m。 * 对于地表或掩体级别的输出,请为特定变量指定地表级别。 有关GRIB2的可用字段的列表,请参见 `GRIB2表 `_ 脚本 ^^^^^^^^^^^^^^ UPP软件包包括许多用于运行UPP的示例脚本。这些可以在 :code:`/UPPV4.0/scripts` 中找到,包括以下内容: * run_unipost:用于运行UPP的基本运行脚本 * run_unipostandgrads:基本运行脚本,带有使用GrADS软件包进行绘图的其他示例代码 * run_unipostandgempak:基本运行脚本,带有用于使用GEMPAK软件包进行绘图的其他示例代码 * run_unipost_frames:运行模型输出的脚本,每个文件超过一次(仅限WRF) * run_unipost_gracet:以非零分钟/秒的速度运行模型输出的脚本(仅WRF) * run_unipost_minutes:亚小时模型输出(即15分钟输出)的运行脚本(仅适用于WRF) 运行脚本用户编辑 ======================== 每个运行脚本的所有用户修改变量的顶部均包含一个部分,包括说明。对于本教程,我们将只看基本的运行脚本。 1. 设置基本路径变量: * TOP_DIR:UPPV4.0源代码的顶级目录 * DOMAINPATH:运行的工作目录 * UNIPOST_HOME:UPP构建目录的路径 * POSTEXEC:UPP可执行文件的位置 * 脚本:UPP脚本目录的位置(即 :code:`UPPV4.0/scripts`) * modelDataPath:要处理的模型数据的位置(例如 :code:`wrfprd/`) * paramFile:wrf_cntrl.parm文件的名称和位置,该文​​件列出了GRIB1输出的所需字段 * txtCntrlFile:postxcntrl-NT.txt的名称和位置,该名称和位置是从postcntrl.xml生成的,用于GRIB2输出 #. 指定正在运行的动态核心: * dyncore:正在使用的模型核心(即ARW或FV3) #. 指定输入模型文件和输出UPP文件的格式: * inFormat:输入模型数据的格式(例如,用于ARW的netcdf或用于FV3GFS的binarynemsio) * outFormat:UPP输出的格式(grib或grib2) #. 指定要后处理的预测周期: * startdate:YYYYMMDDHH中的预测开始日期 * fhr:要进行后处理的第一个预测小时 * lastfhr:要进行后处理的最后预测小时 * crementhr:预测文件之间的增量(以小时为单位) #. 指定要后处理的域: * domain_list:要后处理的域列表(例如“ d01 d02”) #. 为您的系统设置运行命令: * RUN_COMMAND:串行(默认)或并行运行的系统运行命令。 - 串行::code:`./unipost.exe` ,用于在单个处理器上运行 - 并行::code:`mpirun -np N unipost.exe` ,其中 :code:`N` 是处理器数 运行UPP ^^^^^^^^^^^^^^^^^ 在运行任何运行脚本之前,请执行以下指示: 1. cd到运行脚本中指定的DOMAINPATH目录 #. 创建一个目录以将UPP结果放入: .. code-block:: bash mkdir postprd #. 创建目录以将控制参数文件的副本放入: .. code-block:: bash mkdir parm .. note:: 注意:对于初次使用的用户,建议使用代码版本附带的默认参数文件运行 #. 将相关控制文件从 :code:`UPPV4.0/parm/` 复制到新创建的parm目录: * wrf_cntrl.parm为GRIB1 * GRIB2的postxconfig- NT.txt #. 编辑你的控制文件,以反映你想unipost输出的变量和level(见 `GRIB1 `_ 和 `GRIB2 `_ 控制文件) #. 将所需的运行脚本从 :code:`UPPV4.0/scripts/` 复制到 :code:`postprd/` 目录 #. 编辑运行脚本(有关详细信息,请参见 `脚本页面 `_) 设置好这些目录并完成运行脚本编辑后,只需在命令行中键入脚本名称,即可从 :code:`postprd/` 目录交互式运行脚本: .. code-block:: bash ./run_unipost UPP输出 ^^^^^^^^^^^^^^^^ 成功完成运行后,生成的输出文件将位于 :code:`postprd/` 工作目录中,并将包括 :code:`WRFPRS_dnn.hh` 或 :code:`GFSPRS.hh` ,其中 :code:`nn` 表示域ID,:code:`hh` 表示预测小时。 要查看GRIB1输出文件,请使用wgrib实用程序(如果在您的计算机上可用)。要查看文件中所有变量的详细信息,请键入例如: .. code-block:: bash wgrib -V wrfprs_d01.12 要查看GRIB2输出文件,请使用wgrib2实用程序(如果在您的计算机上可用)。要查看文件中所有变量的详细信息,请键入例如: .. code-block:: bash wgrib2 -V wrfprs_d01.12 如果您选择运行 :code:`run_unipostandgrads` 或 :code:`run_unipostandgempak` 脚本,那么还将为GrADS或GEMPAK分别生成一个名为:codeL`variablehh_GrADS.png` 或 :code:`variablehh.gif` 的附加图像集。 如果运行未成功完成,则在后处理器工作目录中的日志文件名为 :code:`unipost_dnn.hh.out`(WRF)或 :code:`unipost.hh.out` (FV3GFS),其中 :code:`nn` 是域ID,:code:`hh` 是域文件表示预测时间,可参考以获取更多信息。