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), 单位流量或速度(单位L3L−2T−1)和体积流量(in L3T−1)——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 | v1⋅1 | v1⋅2 | … | v1⋅N | |
T2 | v2⋅1 | v2⋅2 | … | v2⋅N | |
T3 | v3⋅1 | v3⋅2 | … | v3⋅N | |
… | … | … | … | … | |
Tm | vm⋅1 | vm⋅2 | … | vm⋅N |
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 | v1⋅1 | double | 8 |
5 | 2 | v1⋅2 | double | 8 |
… | … | … | double | 8 |
(N+1)∗(T−1)+i+3 | N | v1⋅N | double | 8 |
(N+1)∗(T−1)+i+3 | 0 | T2 | double | 8 |
(N+1)∗(T−1)+i+3 | 1 | v2⋅1 | double | 8 |
(N+1)∗(T−1)+i+3 | 2 | v2⋅2 | double | 8 |
(N+1)∗(T−1)+i+3 | … | … | double | 8 |
(N+1)∗(T−1)+i+3 | N | v2⋅N | double | 8 |
(N+1)∗(T−1)+i+3 | 0 | T3 | double | 8 |
(N+1)∗(T−1)+i+3 | 1 | v3⋅1 | double | 8 |
(N+1)∗(T−1)+i+3 | 2 | v3⋅2 | double | 8 |
(N+1)∗(T−1)+i+3 | … | … | double | 8 |
(N+1)∗(T−1)+i+3 | N | v3⋅N | double | 8 |
(N+1)∗(T−1)+i+3 | … | … | double | 8 |
(N+1)∗(T−1)+i+3 | … | … | double | 8 |
(N+1)∗(T−1)+i+3 | … | … | double | 8 |
(N+1)∗(T−1)+i+3 | … | … | double | 8 |
(N+1)∗(m−1)+i+3 | 0 | Tm | double | 8 |
(N+1)∗(m−1)+i+3 | 1 | vm⋅1 | double | 8 |
(N+1)∗(m−1)+i+3 | 2 | vm⋅2 | double | 8 |
(N+1)∗(m−1)+i+3 | … | … | double | 8 |
(N+1)∗(m−1)+i+3 | N | vm⋅N | double | 8 |
注:double为计算机的双精度数据格式,默认长度为8个比特位