ncks为多个小netcdf文件添加缓慢

时间:2016-04-26 09:41:10

标签: netcdf nco

我的模型为每个时间步和每个变量生成一个netcdf文件, 名为DDDDDDD.VVV.nc,其中DDDDDDD是日期,VVV是变量名。

对于每个时间步,我使用nco附加对应于不同变量的文件,以便每个时间步获得一个文件。

#! /bin/bash  
# looping on timesteps to merge all variables 
# I use one variable 'O2o' to get the list of timesteps                                                                                                                                                                    
for timesteps in *.O2o.nc;
do
  timestep=$(echo $timesteps| cut -b -21)
  echo $timestep
   for var in $timestep*.nc;
   do
     ncks -Ah  $var 'F1_'$timestep.nc
   done
done

大约有432个输出变量,每个文件大约是6,4K或1,1K(变量的维数不同)。

我觉得这个过程很慢(例如,每个时间步长15秒),而文件非常小。知道如何优化脚本吗?

1 个答案:

答案 0 :(得分:4)

缓慢可能是由于打开,移动数据,添加数据和关闭文件432次。要优化此操作,请减少文件操作的数量,特别是附加(导致)。尝试一次将所有数据写入一个netCDF4文件(成组),然后将文件展平为netCDF3。对于每个时间步长,它将如下所示:

ncecat --gag in*.nc all_group.nc
ncks -3 -G : all_group.nc all_flat.nc

两个命令而不是432.如果任何变量出现在多个输入文件中,您将收到一个错误,指出变量将在all_flat.nc中进行多次定义。通过删除重复的输入来避免这种情况。