首先任意建立一个目录存放自定义的程序,例如:
$ mkdir ~/MyNCL
然后建立一个环境变量:
export NCL_DEF_SCRIPTS_DIR="~/MyNCL"
然后在MyNCL文件夹里面放入你的ncl文件,文件名不重要,放在该文件夹里面的所有文件都会在程序运行前自动加载。
例如该功能可以用于:
a.简化load
每次调试代码都要load一大堆代码,可以如果能自动load该有多好!
b.简化输入
在调试ncl代码时,可以使用print和printVarSummary等,但是print给出的信息太多,而printVarSummary有时对文件变量给出的信息又太少,且输入printVarSummary太繁琐。
这时可以创建一个简化的子程序pvs,方便脚本调试。内容如下:
undef("pvs")
procedure pvs(x)
local i,varnames
begin
printVarSummary(x)
if (isfile(x))then
varnames = getfilevarnames(x)
if(.not.any(ismissing(varnames))) then
do i=0,dimsizes(varnames)-1
printFileVarSummary (x,varnames(i))
end do
end if
end if
end
测试文件变量的信息,也只要简单地输入pvs(f)即可:
ncl 7> f=addfile("Jsst.nc","r")
ncl 8> pvs(f)
Variable: x (parameter)
Type: file
File path: Jsst.nc
Number of global attributes: 7
Number of dimensions: 1
Number of variables: 3
Variable: time
Type: integer
Total Size: 2208 bytes
552 values
Number of Dimensions: 1
Dimensions and sizes: [time | 552]
Coordinates:
time: [0..551]
Number of Attributes: 3
long_name : Months since January 1950
short_name : Mo
units : Month
Variable: SST
Type: float
Total Size: 2208 bytes
552 values
Number of Dimensions: 1
Dimensions and sizes: [time | 552]
Coordinates:
time: [0..551]
Number of Attributes: 4
units : C
short_name : sst
long_name : SST Anomalies for Nino-3
_FillValue : -999
ncl 9>
The NCAR Command Language (NCL),功能确实比grads强多了.当在输入方面没有grads简洁明了,如果在调试的时候,使用pvs就可以避免繁琐的输入。