4 输出文件

4.1 文件名格式

为了方便结果的分类和用户理解,作者规则化定义了输出文件的文件名;用户通过文件名即可读懂文件所包含的变量类型、所属单元和读写格式。输出文件的文件名格式:

[项目名].[识别码].[格式]

或者:

[Project Name].[Identifier].[format]

  • [项目名][Project Name]) 是用户给模拟定的名称,通常为流域的名字简写。例如:黄河流域,可以写成hh或者huanghe.

  • [格式][format])可以使用csv或者dat. csv为规则文本格式,可使用任意文本编辑器或者WPS表格打开。dat二进制格式,文件占用硬盘空间较小

  • [识别码][Identifier]) 定义了输出结果内涵。识别码基本结构为 [模型单元][变量类型][变量名][Model cell][Variable Type][Variable Name])。 [Model cell]ele (element,模型三角单元), riv (river,河段) or lak (lake,湖泊). 变量类型包括 y, v and q,分别代表状态变量 (单位L), 单位流量或速度(单位L3L2T1)和体积流量(in L3T1)——L为长度单位,T为时间单位。

下表为SHUD输出文件列表:

识别码 单元 类型 变量名 含义 单位
.eleyic. ele y ic 储量,冠层截流 m
.eleysnow. ele y snow 储量,雪水当量 m
.eleysurf. ele y surf 储量,地表水 m
.eleyunsat. ele y unsat 储量,未饱和层 m
.eleygw. ele y gw 储量,地下水水位 m .GW
.elevetp. ele v etp 通量,潜在蒸散发 m3m2d
.eleveta. ele v eta 通量,实际蒸散发 m3m2d
.elevetic. ele v etic 通量,冠层截流蒸发 m3m2d
.elevettr. ele v ettr 通量,植被蒸腾 m3m2d
.elevetev. ele v etev 通量,直接蒸发 m3m2d
.elevprcp. ele v prcp 通量,降雨 m3m2d
.elevnetprcp. ele v netprcp 通量,净降雨量 m3m2d
.elevinfil. ele v infil 通量,下渗 m3m2d
.elevexfil. ele v infil 通量,出渗(反下渗) m3m2d
.elevrech. ele v rech 通量,地下水补给 m3m2d
.eleqsurf. ele q surf 流量,地表径流(坡面流) m3/d
.eleqsub. ele q sub 流量, 地下水水平流动 m3/d
.rivystage. riv y stage 储量,河段水位 m
.rivqup. riv q up 流量,向上游 m3/d
.rivqdown. riv q down 流量,向下游 m3/d
.rivqsurf. riv q surf 流量,向坡面 m3/d
.rivqsub. riv q sub 流量,向地下水 m3/d

4.2 文本格式输出文件(.csv)

N - 输出文件列数(不含时间列) m - 步长总数 StartTime - 开始时间 (YYYYMMDD or YYYYMMDD.hhmmss)

N StartTime
T1 v11 v12 v1N
T2 v21 v22 v2N
T3 v31 v32 v3N
Tm vm1 vm2 vmN

4.3 二进制输出文件(.dat)

二进制文件输出的结果与文本格式完全一致,但是使用了不同的存储结构。二进制文件格式紧凑,读写效率高,占用较小磁盘空间,因此作为SHUD模型的默认输出方式。 二进制文件格式不仅可被各类计算机语言(C/C++, Basic, Fortran,……)快速读取,并且也能在R、python、 Matlab、 Mathmetica等交互式语言中高效读取,如果读取有障碍,请联系模型作者获取帮助。

序号 i 格式 长度
1 - N double 8
2 - StartTime double 8
3 0 T1 double 8
4 1 v11 double 8
5 2 v12 double 8
double 8
N+1T1+i+3 N v1N double 8
N+1T1+i+3 0 T2 double 8
N+1T1+i+3 1 v21 double 8
N+1T1+i+3 2 v22 double 8
N+1T1+i+3 double 8
N+1T1+i+3 N v2N double 8
N+1T1+i+3 0 T3 double 8
N+1T1+i+3 1 v31 double 8
N+1T1+i+3 2 v32 double 8
N+1T1+i+3 double 8
N+1T1+i+3 N v3N double 8
N+1T1+i+3 double 8
N+1T1+i+3 double 8
N+1T1+i+3 double 8
N+1T1+i+3 double 8
N+1m1+i+3 0 Tm double 8
N+1m1+i+3 1 vm1 double 8
N+1m1+i+3 2 vm2 double 8
N+1m1+i+3 double 8
N+1m1+i+3 N vmN double 8

注:double为计算机的双精度数据格式,默认长度为8个比特位