Link Search Menu Expand Document

初始/邊界/氣象檔案之檢核

Table of contents

背景

  • 基本上有幾個理由必須進行CMAQ輸入檔案的檢核
    • 為降低硬碟儲存負荷,初始/邊界/氣象此3類檔案的檔名都設成一樣,每天覆蓋。因此需要進行檢核。
    • 前述3類檔案的產生過程都在背景(或其他工作站)執行,那些程序是否已經完成、正確運作,是否產生正確的檔案,需要檢核。
  • 由於這3個檔案缺一不可,因此循序進行檢核。
  • 如果檢核不通過,則以不同秒數之停等來標示,如此就可以知道在哪裡出錯,以利偵錯修改。
檔案類別停等秒數可能錯誤原因
氣象59磁碟機滿、wrf未順利完成、mcip未完成
初始58未正確下載CAMS預報、前1日未正確完成cmaq模擬
邊界57上層網格未正確執行、檔案內容時間不足以執行cmaq

程式分段說明

io

  • 引數:domain number,i=0,1,2
  • 氣象檔:nc=$fcst/${GRD[$i]}/mcip/SOI_CRO.nc
  • 初始檔:nc=$fcst/${GRD[$i]}/icon/ICON_yesterday_${DOM[$i]}
  • CAMS處理紀錄檔:lg=/u01/ecmwf/CAMS/CAMS_global_atmospheric_composition_forecasts/2022/get_all.log
  • 邊界檔:nc=$fcst/${GRD[$i]}/bcon/BCON_yesterday_${DOM[$i]}

基本設定

kuang@dev2 /home/GFS
$ cat /home/GFS/chk_IBM.cs
if [[ ${#} -eq 0 ]];then
 echo 'input domain #';exit 0;fi

if [[ $BEGD == "" ]];then
  today=$(date -d -0day +%Y%m%d)
  export BEGD=$(date -d "$today -0days" +%Y-%m-%d)
  HR=10#$(date +%H)
  if [[ $HR -ge 7 && $HR -lt 16 ]];then export BEGD=$(date -d "$today -1days" +%Y-%m-%d);fi
fi

BEGJ=$(date -d $BEGD +%Y%j)
dates=();datep=()
for id in {0..11};do
  dates=( ${dates[@]} $(date -d "$BEGD +${id}days" +%Y-%m-%d) )
  datep=( ${datep[@]} $(date -d "$BEGD +${id}days" +%Y%m%d) )
done


fcst=/u01/cmaqruns/2022fcst
DOM=( 'CWBWRF_45k' 'SECN_9k' 'TWEPA_3k' 'tw_CWBWRF_45k' 'nests3')
RES=( 45 09 03 )
GRD=( 'grid45'     'grid09'  'grid03' )

i=$1

pr_tflag.py之應用

  • 為了有效了解檔案的時間標籤是否正確。如果使用ncdump還需要轉換Julian day,直接用pr_tflag.py有其必要性。
  • 詳見列印m3.nc的時間標籤

氣象檔案之檢核

  • 模擬期間的起迄日期,必須與mcip檔案完全一致。
  nc=$fcst/${GRD[$i]}/mcip/SOI_CRO.nc
  echo 'MCIP ck'
  while true;do
    if [[ -e $nc ]];then
      n1=$(~/bin/pr_tflag.py $nc|grep ${dates[0]}|wc -l)
      n2=$(~/bin/pr_tflag.py $nc|grep ${dates[10]}|wc -l)
      jj=$(/usr/bin/ncdump -h $nc|grep SDATE|cut -d' ' -f3)
      if [[ $n1 -eq 24  &&  $n2 -ge 1 && $jj -eq $BEGJ ]];then
        break
      fi
    fi
    sleep 59
  done
  echo 'MCIP ok'

初始檔案之檢核

  nc=$fcst/${GRD[$i]}/icon/ICON_yesterday_${DOM[$i]}
  lg=/u01/ecmwf/CAMS/CAMS_global_atmospheric_composition_forecasts/2022/get_all.log
  echo 'ICON ck'
  first=1
  while true;do
    test $first -ne 1 && sleep 58
    first=0
    if [[ -e $nc && -e $lg ]];then
      d=$(ls -lh --time-style=long-iso $nc|~/bin/awkk 6)
      echo $d ${BEGD}
#      test $d != ${BEGD} && continue
      n=$(grep aermr20 $lg|wc -l)
      echo $n
      test $n -ne 2 && continue
      jj=$(/usr/bin/ncdump -h $nc|grep SDATE|cut -d' ' -f3)
      echo $jj $BEGJ
      if [[ $jj -eq $BEGJ ]];then
        break
      fi
    fi
  done
  echo 'ICON ok'

邊界檔案之檢核

  • 邊界檔的時間可能很長,只要涵蓋模擬期間就好了,不必完全一樣也沒關係。
  nc=$fcst/${GRD[$i]}/bcon/BCON_yesterday_${DOM[$i]}
  nt=24
  test $i -eq 0 && nt=4
  echo 'BCON ck'
  while true;do
    if [[ -e $nc ]];then
      n1=$(~/bin/pr_tflag.py $nc|grep ${dates[0]}|wc -l)
      n2=$(~/bin/pr_tflag.py $nc|grep ${dates[10]}|wc -l)
      jj=$(/usr/bin/ncdump -h $nc|grep SDATE|cut -d' ' -f3)
      echo $n1 $n2 $jj $BEGJ
      if [[ $n1 -eq $nt  &&  $n2 -ge 1 && $jj -le $BEGJ ]];then
        break
      fi
    fi
    sleep 57
  done
  echo 'BCON ok'

簡單版本chk_Mcip.cs

  • 為前述chk_IBM.cs的氣象部分。
  • fcst_devp.cs為逐日模擬,其中的IC與BC皆為grid45逐日結果,並沒有對時間整併,因此比較不容易出錯,因此只需檢核氣象檔案即可。
kuang@DEVP /home/GFS
$ cat $fcst1/chk_Mcip.cs
today=$(date -d -0day +%Y%m%d)
BEGD=$(date -d "$today -0days" +%Y-%m-%d)
test $(date +%H) -lt 16 && BEGD=$(date -d "$today -1days" +%Y-%m-%d)
BEGJ=$(date -d $BEGD +%Y%j)
dates=();datep=()
for id in {0..11};do
  dates=( ${dates[@]} $(date -d "$BEGD +${id}days" +%Y-%m-%d) )
  datep=( ${datep[@]} $(date -d "$BEGD +${id}days" +%Y%m%d) )
done


fcst=/nas3/cmaqruns/2022fcst
DOM=( 'CWBWRF_45k' 'SECN_9k' 'TWEPA_3k' 'tw_CWBWRF_45k' 'nests3')
RES=( 45 09 03 )
GRD=( 'grid45'     'grid09'  'grid03' )

i=$1

  nc=$fcst/${GRD[$i]}/mcip/SOI_CRO.nc
  while true;do
    if [[ -e $nc ]];then
      n1=$(~/bin/pr_tflag.py $nc|grep ${dates[0]}|wc -l)
      n2=$(~/bin/pr_tflag.py $nc|grep ${dates[10]}|wc -l)
      jj=$(/usr/bin/ncdump -h $nc|grep SDATE|cut -d' ' -f3)
      if [[ $n1 -eq 24  &&  $n2 -ge 1 && $jj -eq $BEGJ ]];then
        break
      fi
    fi
    sleep 59
  done

程式下載