zoukankan      html  css  js  c++  java
  • Mike post process with Matlab toolbox

    表怕,这个博客只有题目是英文的……

    Matlab toolbox 安装

    去DHI官网下载最新的MikeSDK2014与Matlab toolbox,下载好后安装MikeSDK2014,注意电脑上不能有其他版本的Mike软件。

    安装成功后进入解压缩后的Matlab toolbox文件夹MatlabDfsUtil内,运行脚本MatlabDfsUtilBuild.bat,若脚本成功运行,则Toolbox安装成功。注意检查SDK安装路径与MatlabDfsUtilBuild.bat中内容是否一致,如默认路径为:

    set csc=C:WindowsMicrosoft.NETFrameworkv4.0.30319csc.exe

    set sdkBin=C:Program Files (x86)DHI2014MIKE SDKin

    %csc% /t:library /out:MatlabDfsUtil.2014.dll /r:"%sdkBin%DHI.Generic.MikeZero.DFS.dll" /r:"%sdkBin%DHI.Generic.MikeZero.EUM.dll" MatlabDfsUtil.cs

    Mike结果读取

    说明:这里以Mike3 FM计算为例,使用的是非结构化三角形网格,垂向采用6层sigma网格

    1. 地形

    作为地形数据最主要的有两个:一是x、y节点坐标(Node coordinates);二为节点组成单元信息(element table)。

    首先Mike使用三角形网格计算时,其计算的单元体为6顶点的三棱柱体,单元体编号循环遍历顺序为:从底层到表层,然后再水平方向循环。

    所以,在Mike结果中单元体总数应该为[水平单元个数X垂向分层数],而表示节点组成单元信息的矩阵EToV行X列大小则为[单元体总数X 6]。

    另外,三棱柱单元内6个节点循环顺序是从底部三角形三个顶点开始,顶部三角形三个顶点结束,如下图所示:

    下面介绍如何获得有关数据:

    _________________________________________________________

    NET.addAssembly('DHI.Generic.MikeZero.DFS');
    import DHI.Generic.MikeZero.DFS.*;
    
    dfsu3 = DfsFileFactory.DfsuFileOpen('winter_3D.dfsu');
    
    % Node coordinates
    xn = double(dfsu3.X);
    yn = double(dfsu3.Y);
    zn = double(dfsu3.Z);
    
    
    % Create element table in Matlab format
    EToV = mzNetFromElmtArray(dfsu3.ElementTable);

    _________________________________________________________

    上面的dfsu就是使用Matlab toolbox函数读取的计算文件结构体,这个结构体中单元节点信息储存并非Matlab直接可读格式,需要调用函数mzNetFromElmtArray进行转换。

    2. 计算结果变量相关

    计算结果变量信息,包括变量名与单位、变量个数、变量数据读取等方面。

    变量个数:dfsu3.ItemInfo.Count        format: integer

    变量名与单位:dfsu3.ItemInfo.Item        format: cell{ 0 ~ dfsu3.ItemInfo.Count-1 }

                 dfsu3.ItemInfo.Item(varid).Quantity.Unit

                 dfsu3.ItemInfo.Item(varid).Quantity.UnitAbbreviation

    变量数据读取:varData = double(dfsu3.ReadItemTimeStep(varid,iTime).Data);

                                Format: double[ 1 x elementNum ];

    注意,这里varidiTime分别代表变量序号与时间步,而提取得到的数据varData也是按照单元循环顺序进行循环(先由底至表在三棱柱内循环,后在水平方向循环)。

  • 相关阅读:
    Ubuntu 19.04安装phpipam软件
    ubuntu snmp 安装与配置
    xcode 拷贝新的ios image 进去以后 出现 the divices is locked
    常用 Git 命令清单
    ios 从工程中删除Cocoapods
    ios app上架流程
    MySql某一列累计查询
    Docx4j将html转成word时,br标签为软回车的问题修改
    java面试题
    java获取classpath
  • 原文地址:https://www.cnblogs.com/li12242/p/4038853.html
Copyright © 2011-2022 走看看