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\)), 单位流量或速度(单位\(L^3 L^{-2} T^{-1}\))和体积流量(in \(L^3 T^{-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 | 通量,潜在蒸散发 | \(\frac{m^3}{m^2 d}\) | |
| .eleveta. | ele | v | eta | 通量,实际蒸散发 | \(\frac{m^3}{m^2 d}\) | |
| .elevetic. | ele | v | etic | 通量,冠层截流蒸发 | \(\frac{m^3}{m^2 d}\) | |
| .elevettr. | ele | v | ettr | 通量,植被蒸腾 | \(\frac{m^3}{m^2 d}\) | |
| .elevetev. | ele | v | etev | 通量,直接蒸发 | \(\frac{m^3}{m^2 d}\) | |
| .elevprcp. | ele | v | prcp | 通量,降雨 | \(\frac{m^3}{m^2 d}\) | |
| .elevnetprcp. | ele | v | netprcp | 通量,净降雨量 | \(\frac{m^3}{m^2 d}\) | |
| .elevinfil. | ele | v | infil | 通量,下渗 | \(\frac{m^3}{m^2 d}\) | |
| .elevexfil. | ele | v | infil | 通量,出渗(反下渗) | \(\frac{m^3}{m^2 d}\) | |
| .elevrech. | ele | v | rech | 通量,地下水补给 | \(\frac{m^3}{m^2 d}\) | |
| .eleqsurf. | ele | q | surf | 流量,地表径流(坡面流) | \(m^3/d\) | |
| .eleqsub. | ele | q | sub | 流量, 地下水水平流动 | \(m^3/d\) | |
| .rivystage. | riv | y | stage | 储量,河段水位 | \(m\) | |
| .rivqup. | riv | q | up | 流量,向上游 | \(m^3/d\) | |
| .rivqdown. | riv | q | down | 流量,向下游 | \(m^3/d\) | |
| .rivqsurf. | riv | q | surf | 流量,向坡面 | \(m^3/d\) | |
| .rivqsub. | riv | q | sub | 流量,向地下水 | \(m^3/d\) |
4.2 文本格式输出文件(.csv)
N - 输出文件列数(不含时间列) m - 步长总数 StartTime - 开始时间 (YYYYMMDD or YYYYMMDD.hhmmss)
| N | StartTime | ||||
|---|---|---|---|---|---|
| \(T_1\) | \(v_{1 \cdot 1}\) | \(v_{1 \cdot 2}\) | … | \(v_{1 \cdot N}\) | |
| \(T_2\) | \(v_{2 \cdot 1}\) | \(v_{2 \cdot 2}\) | … | \(v_{2 \cdot N}\) | |
| \(T_3\) | \(v_{3 \cdot 1}\) | \(v_{3 \cdot 2}\) | … | \(v_{3 \cdot N}\) | |
| … | … | … | … | … | |
| \(T_{m}\) | \(v_{m \cdot 1}\) | \(v_{m \cdot 2}\) | … | \(v_{m \cdot N}\) |
4.3 二进制输出文件(.dat)
二进制文件输出的结果与文本格式完全一致,但是使用了不同的存储结构。二进制文件格式紧凑,读写效率高,占用较小磁盘空间,因此作为SHUD模型的默认输出方式。 二进制文件格式不仅可被各类计算机语言(C/C++, Basic, Fortran,……)快速读取,并且也能在R、python、 Matlab、 Mathmetica等交互式语言中高效读取,如果读取有障碍,请联系模型作者获取帮助。
| 序号 | \(i\) | 值 | 格式 | 长度 |
|---|---|---|---|---|
| 1 | - | \(N\) | double | 8 |
| 2 | - | StartTime | double | 8 |
| 3 | 0 | \(T_1\) | double | 8 |
| 4 | 1 | \(v_{1 \cdot 1}\) | double | 8 |
| 5 | 2 | \(v_{1 \cdot 2}\) | double | 8 |
| … | … | … | double | 8 |
| \((N+1) * (T-1) + i +3\) | N | \(v_{1 \cdot N}\) | double | 8 |
| \((N+1) * (T-1) + i +3\) | 0 | \(T_2\) | double | 8 |
| \((N+1) * (T-1) + i +3\) | 1 | \(v_{2 \cdot 1}\) | double | 8 |
| \((N+1) * (T-1) + i +3\) | 2 | \(v_{2 \cdot 2}\) | double | 8 |
| \((N+1) * (T-1) + i +3\) | … | … | double | 8 |
| \((N+1) * (T-1) + i +3\) | N | \(v_{2 \cdot N}\) | double | 8 |
| \((N+1) * (T-1) + i +3\) | 0 | \(T_3\) | double | 8 |
| \((N+1) * (T-1) + i +3\) | 1 | \(v_{3 \cdot 1}\) | double | 8 |
| \((N+1) * (T-1) + i +3\) | 2 | \(v_{3 \cdot 2}\) | double | 8 |
| \((N+1) * (T-1) + i +3\) | … | … | double | 8 |
| \((N+1) * (T-1) + i +3\) | N | \(v_{3 \cdot 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 | \(T_{m}\) | double | 8 |
| \((N+1) * (m-1) + i +3\) | 1 | \(v_{m \cdot 1}\) | double | 8 |
| \((N+1) * (m-1) + i +3\) | 2 | \(v_{m \cdot 2}\) | double | 8 |
| \((N+1) * (m-1) + i +3\) | … | … | double | 8 |
| \((N+1) * (m-1) + i +3\) | N | \(v_{m \cdot N}\) | double | 8 |
注:double为计算机的双精度数据格式,默认长度为8个比特位