开边界设置1:仅生成潮汐以及潮汐和平均流量的开放边界强迫

2024-03-28 20:08

本文主要是介绍开边界设置1:仅生成潮汐以及潮汐和平均流量的开放边界强迫,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开放边界设置

这里的大多数指令都依赖于FVCOM MATLAB工具箱(fvcom-toolbox)。为了在FVCOM中使用平均流量函数,必须使用make.inc中启用的平均流量标志重新编译FVCOM(从2013/02/26开始,这是FLAG_18 = -DMEAN_FLOW)。

1. 仅潮汐(光谱或表面高程)

使用MATLAB fvcom-toolbox生成边界强制的过程如下:

  • 读入SMS网格(read_sms_mesh)。
  • 提取开放边界节点(add_obc_nodes_list),为的参数中的ObcType分配值1 add_obc_nodes_list。有关ObcType选项,请参见FVCOM手册中的表6.1。
  • 使用保存打开边界节点文件write_FVCOM_obc

对于频谱涨潮:

  • 提取开放边界位置处的潮汐谐波振幅和相位(Mobj.read_obc_nodes用于识别边界处的节点)。TPXO和POLPRED已成功用于提取所需的值。将潮汐振幅和相位保存到Mobj.obc_amp和中,Mobj.obc_phase然后用于write_FVCOM_spectide输出到netCDF。

对于边界处的表面高程:

  • 使用Mobj.read_obc_nodes来识别开放的边界节点,使用TPXO工具tmd_tide_pred来生成时间序列的每个节点,保存到Mobj.surfaceElevationMobj.el_time与写出write_FVCOM_elevtide

&NML_OPEN_BOUNDARY_CONTROL名称列表的部分中,设置以下值:

    OBC_ON                     = T,OBC_NODE_LIST_FILE         = 'casename_obc.dat',OBC_ELEVATION_FORCING_ON   = T,OBC_ELEVATION_FILE         = 'casename_tide.nc',

其中 casename_tide.nc频谱或表面海拔潮汐的netCDF

2. 潮汐和平均流量

潮汐方面与上面的纯潮汐情况相似,但对于平均流量而言,变得更加复杂。

  1. 读入SMS网格(read_sms_mesh)。
  2. 提取开放边界节点(add_obc_nodes_list),为的参数中的ObcType赋值为2 add_obc_nodes_list(在Beardsley和Haidvogel(1981)之后被“钳制”)。有关ObcType选项,请参见FVCOM手册中的表6.1。
  3. 读取sigma坐标(用于read_sigma加载sigma.dat文件)。
  4. 用开放边界(find_boundary_elements)上的面识别元素。
  5. 在开放边界元素的质心处生成边界平均流量值。对于各种输出文件,我们需要u和v以及每个边界节点位置处的深度平均速度。get_POLCOMS_meanflow使用PML POLCOMS-ERSEM NetCDF文件将平均流插值到FVCOM开放边界元素和垂直网格。速度数据应该被保存在Mobj.velocity尺寸[nElements,n时间]和在U和V分量的Mobj.meanflow_uMobj.meanflow_v作为大小[nElements,nSiglay,n时间]的阵列。
  6. 可以使用来将开放边界节点处的深度平均速度数据写入netCDF write_FVCOM_meanflow。生成的NetCDF文件包括深度比例因子(MFDIST)以及平均流量(DMFQDIS)。
  7. 除了netCDF文件之外,FVCOM还具有许多硬编码的文件mod_obcs2.F,对于平均流量条件,还必须将其生成。为此,运行write_FVCOM_meanflow_ascii,提供与用于创建netCDF文件相同的速度数组(例如Mobj.velocityMobj.meanflow_uMobj.meanflow_v从POLCOMS数据生成)。

&NML_OPEN_BOUNDARY_CONTROL名称列表的部分中,设置以下值:

    OBC_ON                     = T,OBC_NODE_LIST_FILE         = 'casename_obc.dat',OBC_ELEVATION_FORCING_ON   = T,OBC_ELEVATION_FILE         = 'casename_spectide.nc',OBC_MEANFLOW               = T,OBC_MEANFLOW_FILE          = 'casename_mf.nc',

3. 多个开放边界

的维度Mobj.surfaceElevation必须为[nObc_nodes, nTime],其中nObc_nodes是用户指定的(OBC_TYPE=1)或任何其他开放边界类型的所有开放边界的节点总数,并且nTime是时间步的总数。因此,例如,在一个恒定宽度为11个节点的简单通道的情况下,上游端由用户指定开放边界,下游端封闭,则的大小Mobj.surfaceElevaton应为11 by nTimecasename_obc.dat文件将读取为:

  OBC Node Number = 111 n1 12 n2 1...

niOBC节点的节点ID 在哪里i。如果现在将通道的下游端更改为重力波辐射开放边界(OBC_TYPE=5),而上游端仍是用户指定的开放边界,则casename_obc.dat文件现在将读取:

  OBC Node Number = 221 n1 12 n2 1...12 n12 513 n13 5...

现在Mobj.surfaceElevationnTime即使用户未指定新的开放边界,的尺寸也必须为22 。因此,在此示例中,附加空间Mobj.surfaceElevation可能用零填充,但尺寸必须为,[nObc_nodes, nTime]否则FVCOM会导致致命错误。

平均流量注意事项

FVCOM的平均流量部分是FVCOM 2.7代码库中的残差。因此,存在一些粗糙的边缘。

首先,读入的文件mod_obcs2.F在源中被硬编码:

201      CALL FOPEN(INMF,   TRIM(INPUT_DIR)//TRIM(CASENAME)//'_meanflow.dat'  ,"cfr")
202      CALL FOPEN(INTCELL,TRIM(INPUT_DIR)//TRIM(CASENAME)//'_tide_cell.dat' ,"cfr")
203      CALL FOPEN(INTNODE,TRIM(INPUT_DIR)//TRIM(CASENAME)//'_tide_node.dat' ,"cfr")
204      CALL FOPEN(INTELEL,TRIM(INPUT_DIR)//TRIM(CASENAME)//'_tide_el.dat'   ,"cfr")
205      CALL FOPEN(INTUV,  TRIM(INPUT_DIR)//TRIM(CASENAME)//'_tide_uv.dat'   ,"cfr")

它们的格式相对简单(请参阅print_vals.Fmod_obcs2.F),概述如下。

casename_meanflow.dat

  nbelID(1)belID(2)...belID(m)1 mfdist(1, 1) mfdist(1, 2) ... mfdist(1, z)2 mfdist(2, 1) mfdist(2, 2) ... mfdist(2, z)...m mfdist(m, 1) mfdist(m, 2) ... mfdist(m, z)ttt(0)dmfqdis(1, 1) dmfqdis(1, 2) ... dmfqdis(1, m)t(1)dmfqdis(2, 2) dmfqdis(2, 2) ... dmfqdis(2, m)...t(n-1)dmfqdis(tt, 1) dmfqdis(tt, 2) ... dmfqdis(tt, m)

其中m是边界元素的数量,belID是边界元素ID,mfdist是平均流量的垂直分布,z是垂直层的数量,dmfqdis是平均流量,t是时间步数(不是时间),tt是时间步长。

casename_tide_el.dat

  tt(1) elev(1, 1) elev(1, 2) ... elev(1, m)tt(2) elev(2, 1) elev(2, 2) ... elev(2, m)...tt(t) elev(t, 1) elev(t, 2) ... elev(t, m)

其中tt是自模型开始以来的时间,以秒t为单位,是时间步长,m是边界节点的数量,elev是开放边界节点的表面高程。

casename_tide_node.dat

  nbndID(1)bndID(2)...bndID(n)

其中n是边界节点的数量,bndID是边界节点ID。

casename_tide_cell.dat

  ebelID(1)belID(2)...belID(e)

其中e是边界元素的数量,belID是边界元素ID。

casename_tide_uv.dat

tt(1) ubar(1, 1) ubar(1, 2) ... ubar(1, m)
tt(1) vbar(1, 1) vbar(1, 2) ... vbar(1, m)
tt(1) u(1, 1, 1) u(1, 1, 2) ... u(1, 1, m)
tt(1) v(1, 1, 1) v(1, 1, 2) ... v(1, 1, m)
tt(1) u(1, 2, 1) u(1, 2, 2) ... u(1, 2, m)
tt(1) v(1, 2, 1) v(1, 2, 2) ... v(1, 2, m)
...
tt(1) u(1, z, 1) u(1, z, 2) ... u(1, z, m)
tt(1) v(1, z, 1) v(1, z, 2) ... v(1, z, m)
tt(2) ubar(2, 1) ubar(2, 2) ... ubar(2, m)
tt(2) vbar(2, 1) vbar(2, 2) ... vbar(2, m)
tt(2) u(2, 1, 1) u(2, 1, 2) ... u(2, 1, m)
tt(2) v(2, 1, 1) v(2, 1, 2) ... v(2, 1, m)
tt(2) u(2, 2, 1) u(2, 2, 2) ... u(2, 2, m)
tt(2) v(2, 2, 1) v(2, 2, 2) ... v(2, 2, m)
...
tt(2) u(2, z, 1) u(2, z, 2) ... u(2, z, m)
tt(2) v(2, z, 1) v(2, z, 2) ... v(2, z, m)
...
...
tt(t) ubar(t, 1) ubar(t, 2) ... ubar(t, m)
tt(t) vbar(t, 1) vbar(t, 2) ... vbar(t, m)
tt(t) u(t, 1, 1) u(t, 1, 2) ... u(t, 1, m)
tt(t) v(t, 1, 1) v(t, 1, 2) ... v(t, 1, m)
tt(t) u(t, 2, 1) u(t, 2, 2) ... u(t, 2, m)
tt(t) v(t, 2, 1) v(t, 2, 2) ... v(t, 2, m)
...
tt(t) u(t, z, 1) u(t, z, 2) ... u(t, z, m)
tt(t) v(t, z, 1) v(t, z, 2) ... v(t, z, m)

其中tt是以秒为单位的时间(由于时间系列的开始?),t是时间索引,m是边界元件的数量,z是西格玛层的数量,uv与平均流量U和V分量(大小[吨, Z,M])和ubarvbar是深度平均平均流量U和v分量(大小[T,M])。

casename_elj_obc.datmod_obcs2.F在第235行中指定的额外文件:

235        CALL FOPEN(111,TRIM(INPUT_DIR)//TRIM(CASENAME)//'_elj_obc.dat',"cfr")

它的格式casename_tide_el.dat与第一列非常相似,只是它省略了第一列中的时间戳:

casename_elj_obc.dat

elev(1, 1) elev(1, 2) ... elev(1, m)
elev(2, 1) elev(2, 2) ... elev(2, m)
...
elev(tt, 1) elev(tt, 2) ... elev(tt, m)

其中,tt是时间步数,m是边界节点的数量,elev是开放边界节点处的表面高程。

这篇关于开边界设置1:仅生成潮汐以及潮汐和平均流量的开放边界强迫的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856583

相关文章

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成