CESM输出文件一般存在archive对应的case目录下,包括下面几个子目录
![]()
以大气模块atm为例,
cd atm/hist/
这里我以我的一个目录为例展示一下,每个文件有141M,如果要对比较长时间的数据进行分析,一个常见的做法是把所有文件下到本地再进行处理,但一般超算的文件传输速度并不是很快,所以这样就导致在数据传输上浪费的大量时间,并且由于文件较大,读写的时间也很长。


今天介绍一个操作,来提高数据分析效率。
通常我们运行完模式后,可能主要分析的只有其中的几个变量,比如最常见的温度、海平面气压、降水、辐射等。那其实我们就可以把这几个需要的变量从原文件中剪切,合并,再下载。
如图1中有两个sh文件,我就是用这个脚本来进行剪切操作。
eg. cut_meto.sh (主要是使用ncks这个命令,不熟悉的可以参考我之前写的一篇CESM笔记——模式运行输出netCDF数据初步处理(NCO推荐)_J同学的大气笔记的博客-CSDN博客)
- #!/bin/tcsh -f
-
- #----
- foreach filename (slim_cam5_som_ctrl_202207.cam.h0.???????.nc)
- echo $filename
- set timeid = `echo $filename | cut -c 34-40`
- ncks -v TS,PSL $filename TS_PSL_ctrl_$timeid.nc
-
- end
- #----
我这个示例中就是把TS和PSL两个变量剪切出来,timeid是为了在剪切的文件中仍保留对应的时间信息。大家可以按自己的需求切出对应变量。
运行该脚本:
./cut_meto.sh
就可以得到如下的剪切文件,保留两个变量的文件大小仅有112K。

ncrcat TS_PSL_ctrl_000* 0_5yr_TS_PSL_ctrl_202207.nc
直接使用ncrcat这个命令,将这些文件进行合并,ncrcat会自动按照文件名的时间顺序将这个TS_PSL*文件合并成一个,就是最上面的0_5yr_TS_PSL_ctrl_202207.nc这个。合并之后也只有6M,这样从超算上下一个几M或者几十M的文件到本地分析就可以啦。
Oh yeah,分析数据效率up up!
整天摸鱼的小J同学希望帮大家感受到一点点科研的快乐额。。。