cdo 中的链接运算符

问题描述

我正在使用以下等式计算 C 因子:

C 因子 =1,覆盖率 = 0
C 因子 =-0.083 xlg(coverfraction) + 0.417,0 78.3%,

为了计算总 C 因子,我应用了部分方程 C 因子 = 0.417 − 0.083 × lg(coverfraction)。但我不知道如何使用 cdo 在脚本中应用覆盖分数的条件。在这种情况下,计算所有值的对数,包括 0 和大于 78.3% 的值。

代码是:

echo "Log: " $gc_ofile
cdo -O -L -log inputfile.nc ofilelog.nc
cdo -O -L "-mulc,-0.083" outputlogfile.nc ofilemulti.nc
cdo -O -L "-addc,0.417" ofilemulti.nc cfactor.nc

解决方法

对于这些类型的操作,使用 cdo 命令 expr 通常更容易

如果 netcdf 文件(称为coverfrac.nc)中的coverfraction 的名称正是如此,那么您可以像这样使用expr:

cdo expr,'cfactor=0.417−0.083*log(coverfraction)' coverfrac.nc out1.nc

这将根据需要创建一个新变量“cfactor”。

另一方面,这就是 cdo 屏蔽的用武之地(我将很快在我的 youtube 气候未装箱频道上发布有关此主题的视频,并会在链接可用时更新此帖子)。

因此,您可以创建一个文件,在覆盖率高于 78.3% 的任何地方都为 0,否则为 1。

cdo lec,78.3 coverfrac.nc mask.nc

现在您需要将其乘以第一个输出文件以将结果设置为零,其中 coverfrac> 78.3%,否则保持不变。

cdo mul out1.nc mask.nc myfunction.nc