河流输入
将河流输入添加到FVCOM涉及以下步骤:
-
创建必要的输入文件。
-
将相关信息添加到名称列表。
从POLCOMS文件创建FVCOM输入文件
FVCOM手册给出了FVCOM版本3.x所需的NetCDF文件格式的示例。该脚本会write_FVCOM_river.m
生成与此格式匹配的文件。此外,要将POLCOMS ASCII河文件转换为FVCOM NetCDF,get_POLCOMS_rivers.m
可以使用该功能。以下过程概述了必要的步骤:
-
读入SMS网格(
read_sms_mesh
)。 -
提取开放边界节点(
add_obc_nodes_list
),add_obc_nodes_list
如果不应用平均流,则将的参数中的ObcType赋值为1 ,否则为ObcType选择2。有关ObcType选项,请参见FVCOM手册中的表6.1。 -
使用读取POLCOMS河域的位置和索引文件以及POLCOMS模型域的NetCDF
get_POLCOMS_river_positions
。 -
使用读取POLCOMS河的流量
get_POLCOMS_river_discharge
。 -
对于POLCOMS文件中的每条河流,使用来查找FVCOM域中最近的节点
get_FVCOM_rivers
。添加多条河流的节点的流量相加。 -
用
write_FVCOM_river
NetCDF 写出河流流量数据。
如果在网格节点处输入河流流量,则河流节点不得属于具有两个海岸线边缘(且只有一个开放边缘)的元素。下图说明了河流输入的好坏节点。实际上,应将两个海岸线边缘的元素从网格中完全删除,因为它们的速度始终为零。
生成河流名称列表(nml)文件
-
请遵循上述步骤(1-5)。
-
运行
write_FVCOM_river_nml
of的输出get_FVCOM_rivers
以生成包含必要信息的名称列表。
注意:名称列表RIVER_VERTICAL_DISTRIBUTION
根据sigma级别列出了河流流量,温度和盐度()的垂直分布。或者,可以将字符串“ uniform” RIVER_VERTICAL_DISTRIBUTION
手动添加到该值。若要使用sigma级别导出的垂直分布,可能需要在未FLAG_14 = -DRIVER_FLOAT
注释的情况下编译FVCOM 。默认值(带注释)表示垂直分布由字符串给出(例如'uniform'或'40 * 2.5E-02,10 * 0'(请参见此处的示例))。
编辑型号名称列表
要将河流数据包括在模型仿真中,请编辑以下条目:
&NML_RIVER_TYPE
RIVER_NUMBER = n,
RIVER_KIND = 'variable',
RIVER_TS_SETTING = 'calculated',
RIVER_INFLOW_LOCATION = 'node',
RIVER_INFO_FILE = 'casename_riv.nml',
/
其中n是NetCDF和名称列表(nml)文件中的河流数。设置RIVER_TS_SETTING
为“计算”时会根据需要使用建模的温度和盐度调整来保持质量守恒。RIVER_KIND
如果排放数据是气候学(即非给定年份)而不是特定时间的时间序列,则可以更改为“定期”。RIVER_FILE
如果您有多个河流(在casename_riv.nml
文件中分别进行了描述),则不要包括该指令,否则模型将拒绝启动。错误可能包括:
Read_Name_List:
&NML_RIVER_TYPE
RIVER_NUMBER = 1,
RIVER_KIND = variable ,
RIVER_TS_SETTING = calculated ,
RIVER_INFO_FILE = casename_riv.nml ,
RIVER_INFLOW_LOCATION = node
/
Opend File: ./input/casename_riv.nml
Bad River data in the Name List!
Specified number of rivers: 1
But Found 0 ; Valid river name list objects.(Printing Last)
&NML_RIVER
RIVER_NAME = AFON_GOCH ,
RIVER_FILE = casename_riv.nc ,
RIVER_GRID_LOCATION = 4100,
RIVER_VERTICAL_DISTRIBUTION = 0.1
/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FVCOM Fatal Error!
PLEASE REPAIR THE NAME LIST SO IT IS CONSISTANT... see above
Stopping FVCOM
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
错误是包含RIVER_FILE
指令(或格式不正确的河流名称列表)的情况,或
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FVCOM Fatal Error!
Can Not Read NameList NML_RIVER_TYPE from file: ./casename_run.nml
Stopping FVCOM
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
错误是河流名称列表(nml)文件的格式。通过遵循上述步骤,可以避免这两种情况。
关于河流名称的注释
FVCOM不喜欢包含特殊字符的河流名称(例如,空格,(,)或_。此列表显然并不详尽-请添加更多内容)。数字和-似乎很好。
FVCOM还不喜欢两条河流共享相同的名称。重命名您的河流,例如Name1和Name2。
遇到上述任何一种故障,FVCOM都会崩溃,并且不会告诉您原因。
警告
FVCOM不会及时对河流数据进行插值,而是使用与当前模型时间步长最近的河流时间戳。因此,如果您使用错误年份的数据,则河流输入将始终使用最后一个或第一个(较近的那个)。