=================== 运行步骤 =================== .. contents :: 观测的解码 ^^^^^^^^^^ 请参考 :doc:`观测的解码 <../decoders/index>` 下载GFS/GDAS全球模式预报资料或使用GRAPES的全球预报模式资料 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * GFS/GDAS原始模式预报 * 下载地址 * :code:`ftp://ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gdas.ccyymmdd/` * :code:`ftp://ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.ccyymmdd/` * 下载文件: * :code:`gdas.t??z.atmf???.nemsio` * :code:`gfs.t??z.atmf???.nemsio` * 具体下载那些文件,由分析的 :code:`cycle` 决定 * GRAPES模式预报 * :code:`pride` 存放地址 * :code:`/g2/nwp/OPER_ARCH_TEST/nwp/GMFS_GRIB2_GRAPES/ORIG` * 存放地址和文件名(每个 :code:`cycle` 需要3,6和9hours的预报场) * :code:`/g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.ccyymmdd/gfs.t??z.pgrbf03` * :code:`/g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.ccyymmdd/gfs.t??z.pgrbf06` * :code:`/g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.ccyymmdd/gfs.t??z.pgrbf09` 运行 **dump** 和 **obsproc** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block :: bash > cd /g5/nwpc_ep8/obsproc/nwprod > ./batch_run_global_obsproc.py :code:`batch_run_global_obsproc.py` 的内容如下: .. code-block :: python #!/bin/env python3 import os from datetime import datetime, timedelta start_date = datetime(2019, 6, 2, 0) end_date = datetime(2019, 8, 15, 0) end_date = datetime(2019, 6, 9, 0) step = timedelta(hours=6) curr_time = start_date while curr_time < end_date: print('Processing ', curr_time.strftime("%Y%m%d%H")) # Update the date and time filename = os.path.join('/g5/nwpc_ep8/obsproc/nwprod', "com", "date", "t"+curr_time.strftime("%H")+"z") f = open(filename,'w') f.write('nwprod'+curr_time.strftime("%Y%m%d") ) f.close() # link the GFS curr_timem6 = curr_time - timedelta(hours=6) gfs_dir=os.path.join('/g5/nwpc_ep8/obsproc/nwprod', 'com', 'gfs', 'prod', 'gfs.'+curr_timem6.strftime("%Y%m%d")) if not os.path.exists(gfs_dir): os.mkdir(gfs_dir) time_marker=curr_timem6.strftime("%Y%m%d%H") gfs_filep3=os.path.join('/g2/nwp/OPER_ARCH_TEST/nwp/GMFS_GRIB2_GRAPES/ORIG', \ 'GRAPES_GFS_ORIG_'+time_marker, \ 'gmf.gra.'+time_marker+'003.grb2') gfs_filep6=os.path.join('/g2/nwp/OPER_ARCH_TEST/nwp/GMFS_GRIB2_GRAPES/ORIG', \ 'GRAPES_GFS_ORIG_'+time_marker, \ 'gmf.gra.'+time_marker+'006.grb2') gfs_filep9=os.path.join('/g2/nwp/OPER_ARCH_TEST/nwp/GMFS_GRIB2_GRAPES/ORIG', \ 'GRAPES_GFS_ORIG_'+time_marker, \ 'gmf.gra.'+time_marker+'009.grb2') print(gfs_filep3) if os.path.exists(gfs_filep3): dst3=os.path.join(gfs_dir, 'gfs.t'+curr_timem6.strftime("%H")+'z.pgrbf03') if not os.path.exists(dst3): os.symlink(gfs_filep3, dst3) if os.path.exists(gfs_filep6): dst6=os.path.join(gfs_dir, 'gfs.t'+curr_timem6.strftime("%H")+'z.pgrbf06') if not os.path.exists(dst6): os.symlink(gfs_filep6, dst6) if os.path.exists(gfs_filep9): dst9=os.path.join(gfs_dir, 'gfs.t'+curr_timem6.strftime("%H")+'z.pgrbf09') if not os.path.exists(dst9): os.symlink(gfs_filep9, dst9) os.system("./run_global_obsproc.bash " + curr_time.strftime("%H")) curr_time += step :code:`batch_run_global_obsproc.py` 通过修改 :code:`/g5/nwpc_ep8/obsproc/nwprod/com/date/t??z` 文件,来指令质控程序对哪个时间的观测资料进行质控; :code:`batch_run_global_obsproc.py` 调用 :code:`run_global_obsproc.bash`, :code:`run_global_obsproc.bash` 会读取 :code:`/g5/nwpc_ep8/obsproc/nwprod/com/date/t??z` 的内容, 并且从命令行获取 :code:`cyc` 来得到时间信息; :code:`run_global_obsproc.bash` 会进一步设置各种参数来控制质控,内容如下: .. code-block :: bash #!/bin/bash -e export PATH=.:${PATH} ulimit -s unlimited if [[ $# -eq 0 ]]; then echo "No cycle is given" echo "Usage:: run_rap_obsproc.bash 00" exit fi # Common setting export ROOT_DIR=/g5/nwpc_ep8/obsproc/nwprod export NWROOT=${ROOT_DIR} export DATAROOT=${ROOT_DIR}/tmpprod export COMIN_ROOT=${ROOT_DIR}/com export COMROOT=${ROOT_DIR}/com # default root directory path to $TANK, $EPRM and $QPRM export DCOMROOT=${ROOT_DIR}/dcom # Where is the utility scripts export UTILROOT=${ROOT_DIR}/util export utilscript=${ROOT_DIR}/util/ush export NDATE=${UTILROOT}/exec/ndate export NHOUR=${UTILROOT}/exec/nhour export grib_util_ver=1.0.5 # Run locally and background threads export sys_tp="local" export launcher="threads" # root directory tree for the path to temporary work files export TMPDIR=/tmp # Geographical filtering of the data export LALO=0 # export RUN_ENVIR="nco" export envir="prod" export KEEPDATA="YES" export LOUD="off" ############################################ # SENDCOM - Copy files to $COMOUT directory # SENDECF - Flag Events on ECFLOW # SENDDBN - Alert output file to TOC ############################################ export SENDCOM=YES export SENDECF=NO export SENDDBN=NO export PROCESS_GRIBFLDS="NO" export PROCESS_REMOREST="NO" # Only conventional data being processed export JOB_NUMBER=1 # Which group will be processed export DUMP_group2="YES" export DUMP_group3="YES" export DUMP_group4="YES" export DUMP_group8="YES" export MPMD=NO export CHGRP_RSTPROD=NO export POE="NO" export BACK="NO" export NET="gfs" export cyc=$1 export job=${NET}_dump_${cyc} . ${ROOT_DIR}/versions/obsproc_global.ver export HOMEgfs=${ROOT_DIR}/obsproc_global.${obsproc_global_ver} ${ROOT_DIR}/obsproc_global.v3.1.2/jobs/JGFS_DUMP ${ROOT_DIR}/obsproc_global.v3.1.2/jobs/JGFS_DUMP_POST export GETGUESS="YES" export NEMSIO_IN=.false export job=${NET}_obsproc_${cyc} export GESROOT=${ROOT_DIR}/com/gfs ${ROOT_DIR}/obsproc_global.v3.1.2/jobs/JGFS_PREP ${ROOT_DIR}/obsproc_global.v3.1.2/jobs/JGFS_PREP_POST exit 检查运行结果 ^^^^^^^^^^^^^^^^^^^ .. code :: bash [nwpc_ep8@login_a05 nwprod]$ find /g5/nwpc_ep8/obsproc/nwprod/com/gfs -name gfs.t??z.prepbufr -exec ls -la {} \; -rw-rw-r-- 1 nwpc_ep8 nwpep 1986312 10月 28 09:24 /g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.20190601/gfs.t00z.prepbufr -rw-rw-r-- 1 nwpc_ep8 nwpep 47840008 10月 28 09:58 /g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.20190601/gfs.t12z.prepbufr -rw-rw-r-- 1 nwpc_ep8 nwpep 56930888 10月 28 10:22 /g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.20190601/gfs.t18z.prepbufr -rw-rw-r-- 1 nwpc_ep8 nwpep 37600968 10月 28 09:39 /g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.20190601/gfs.t06z.prepbufr -rw-rw-r-- 1 nwpc_ep8 nwpep 53104576 10月 28 16:00 /g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.20190602/gfs.t00z.prepbufr -rw-rw-r-- 1 nwpc_ep8 nwpep 46818304 10月 28 16:29 /g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.20190602/gfs.t12z.prepbufr -rw-rw-r-- 1 nwpc_ep8 nwpep 59199992 10月 28 16:56 /g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.20190602/gfs.t18z.prepbufr -rw-rw-r-- 1 nwpc_ep8 nwpep 33879280 10月 28 16:12 /g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.20190602/gfs.t06z.prepbufr -rw-rw-r-- 1 nwpc_ep8 nwpep 57441072 10月 28 17:19 /g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.20190603/gfs.t00z.prepbufr -rw-rw-r-- 1 nwpc_ep8 nwpep 38958944 10月 28 17:33 /g5/nwpc_ep8/obsproc/nwprod/com/gfs/prod/gfs.20190603/gfs.t06z.prepbufr ... ... 观测资料的分布 ^^^^^^^^^^^^^^^^ 利用 :code:`MET` 的绘图功能,可以绘制各种观测的分布, 例如: .. figure:: ./images/adpupa-58113-1289.png :align: center :width: 75% :alt: 探空观测的分布(2019060112 +/- 3.0 hour) 探空观测的分布 58113 observations at 1289 locations(2019060112 +/- 3.0 hour) .. figure:: ./images/surface-225196-126022.png :align: center :width: 75% :alt: 地面观测的分布 225196 observations at 126022 locations(2019060112 +/- 3.0 hour) 地面观测的分布(2019060112 +/- 3.0 hour) .. figure:: ./images/aircraft-690838-280999.png :align: center :width: 75% :alt: 飞机观测的分布(2019060112 +/- 3.0 hour) 飞机观测的分布 690803observations at 280999 locations(2019060112 +/- 3.0 hour) .. figure:: ./images/satwind-411301-138783.png :align: center :width: 75% :alt: 卫星风观测的分布(2019060112 +/- 3.0 hour) 卫星风观测的分布 411301 observations at 138783 locations(2019060112 +/- 3.0 hour) .. figure:: ./images/sfcshp-19968.png :align: center :width: 75% :alt: 海洋和船舶观测的分布(2019060112 +/- 3.0 hour) 海洋和船舶观测的分布 19968 observations(2019060406 +/- 3.0 hour)