預報系統後處理方式的差異
Table of contents
背景
- 為得到綜合性的空氣品質項目(粒狀物與VOC’s),需要執行combine,程序上包括combine.exe與shk.cs
- 國網作業的特色之一就是磁碟空間的限制。/home/$USERNAME與/work/$USERNAME 下各有100G的免費空間,雖然可以申請增加容量上限,但終究也不是免費。這對作業系統後處理程序來說是很大的一個考量。
合併與壓縮
combine.sh
- 這個腳本基本上還能保持環保署公版模式的原來樣貌。(參TWNEPA_RecommCMAQ)
- 增加slurm設定值,此處設定使用ct56之10個執行緒。
- combine.exe使用環保署公版模式版本
- $SPECIES_DEF檔案中開啟VOC’s的計算
#sinotec2@lgn301 /work/sinotec2/cmaqruns/forecast
#$ cat combine.sh
#!/bin/sh
#SBATCH -A ENT111040 # Account name/project number
#SBATCH -J comb # Job name
#SBATCH -p ct56 # Partiotion name
#SBATCH -n 10 # Number of MPI tasks (i.e. processes)
#SBATCH -c 1 # Number of cores per MPI task
#SBATCH -N 1 # Maximum number of nodes to be allocated
#SBATCH --ntasks-per-node=10 # Maximum number of tasks on each node
#SBATCH -o rsl.out.%j # Path to the standard output file
#SBATCH -e rsl.error.%j # Path to the standard error ouput file
module load compiler/intel/2021 IntelMPI/2021 hdf5/1.12 netcdf/4.7.4 pnetcdf/1.12.2
nc=$1
ii=$(echo $nc|cut -d'/' -f6|cut -c5-6)
ymd=$(echo $nc|cut -d'_' -f7|cut -d'.' -f1)
export BASE=/work/sinotec2/cmaqruns/forecast
export BLD=/work/sinotec2/opt/cmaq_recommend/POST/combine/scripts/BLD_combine_v532_intel
export EXEC=$BLD/combine_v532.exe
export m3input=${BASE}/grid$ii
export cctmout=${BASE}/grid$ii/cctm.fcst/daily
# user define
#> File [1]: CMAQ conc/aconc file
#> File [2]: MCIP METCRO3D file
#> File [3]: CMAQ APMDIAG file
#> File [4]: MCIP METCRO2D file
export INFILE2=${m3input}/mcip/METCRO3D.nc
export INFILE4=${m3input}/mcip/METCRO2D.nc
# programs
export LC_ALL=C
export LANG=C
export GENSPEC=N
export SPECIES_DEF=${BASE}/SpecDef_cb6r3_ae7_aq.txt
export INFILE1=$nc
export INFILE3=${nc/ACONC/APMDIAG}
export OUTFILE=${cctmout}/out${ymd}.conc.nc
if [ -e ${OUTFILE} ]; then rm ${OUTFILE};fi
time mpirun -bootstrap slurm -n 10 ${EXEC} >& ${BASE}/cmb.out
if [ -e ${cctmout}/PMs$ymd.nc ];then rm ${cctmout}/PMs$ymd.nc;fi
${BASE}/shk.cs $OUTFILE ${cctmout}/PMs$ymd.nc
if [ -e ${OUTFILE} ]; then rm ${OUTFILE};fi
chk.cs
- 唯一需要修改的是NCO程式的路徑。
- 此處沒有使用rcec/tools(/opt/ohpc/pkg/rcec/pkg/tools/bin)中的程式,而是使用自行編譯、較新版本的程式(5.0.7-alpha04 版)。如果執行上有問題,可以考慮使用國網上的ncks及ncrcat(5.0.1版)
sinotec2@lgn301 /work/sinotec2/cmaqruns/forecast
$ cat shk.cs
#!/bin/sh
nc=$1
NCO=/work/sinotec2/opt/cmaq_recommend/bin
NCKS=${NCO}/ncks
NCRCAT=${NCO}/ncrcat
v=$(ncdump -h $nc|grep PM25|wc -l)
a=$(ncdump -h $nc|grep AVERAGE|wc -l)
if [ $v != 0 ];then
if [ $a == 0 ];then
#cmaq combined files
VAR='TFLAG,PM1_TOT,PM25_TOT,PM10,VOC,PMC_TOT'
else
#version 700 nc directly from CAMx
VAR='TFLAG,CO,NO2,SO2,O3,PNO3,PSO4,PNH4,PAR,CCRS,FCRS,CPRM,FPRM'
fi
#camx>400, nc generated by pncgen from uamiv file
else
VAR='TFLAG,CO,NO2,SO2,O3,PNO3,PSO4,PNH4,PAR,CCRS,FCRS,CPRM,FPRM'
fi
if ! [ -e $2 ];then
touch $2
$NCKS -O -v $VAR -d VAR,0,4 -d LAY,0 $1 $2
fi
檔案清理及空間維護
- 做完濃度場的nest down後,3維濃度場(CCTM_ACONC)及粒徑分布(CCTM_APMDIAG)檔案可以只留存第一層,以備作圖。
- 其餘檔案如不進一步偵錯或其他用途,可以全數刪除
清理項目
rm *DEP* CCTM_C* *cfg
- CCTM_CGRID 之考量
- domain3的起始濃度如果使用上層的內插,會發生塊狀不合理的濃度分布。
- 使用過去模擬結果的CCTM_CGRID會是比較平緩變化的一個選項。
- (似乎有留存的價值)
3維檔案之縮減
- 只需留下地面濃度與粒徑分率,後者在combine之會也沒有留存的必要。
for nc in $(ls *nc);do ncks -d LAY,0 $nc tmpnc;mv tmpnc $nc;done
空間維護
- 檢視使用者總磁碟機用量(TWCC - III 使用手冊:儲存資源與目錄位置)
/usr/lpp/mmfs/bin/mmlsquota -u sinotec2 --block-size auto fs01 fs02
- fs01:/work
- fs02:/home
Block Limits | File Limits
Filesystem type blocks quota limit in_doubt grace | files quota limit in_doubt grace Remarks
fs01 USR 110.8G 400G 500G 1.008G none | 19790 0 0 85 none NCHC_AIcls.twcc.ai
fs02 USR 9.872G 200G 300G 488.4M none | 194962 0 0 40 none NCHC_AIcls.twcc.ai
地面濃度圖製作
特殊python模組之安裝
- wrf-python及cartopy之安裝
- 安裝conda模組
module load pkg/Anaconda3
- 開新的環境或啟用既有的環境:
conda activate ncl_stable
- 安裝wrf-python:
conda install -c conda-forge wrf-python
- cartopy之安裝:
pip install cartopy
gif之製作
for s in PM2.5 PM10 SO2 CO O3 NO2;do
$bin/sub $pyt $bin/m3nc2gif.py $s.nc;done
結果檔案的傳輸