韋 瑋
(安徽省水利水電勘測設計研究總院有限公司 合肥 230088)
SMS 全稱Surface Water Modeling System,是美國陸軍工程兵水利工程實驗室和揚·伯明翰大學等合作開發的水體流場、濃度場模擬軟件,它由FESWMS-2DH、RMA2、RMA4、SED2D 等計算模塊組成,包括二維有限元、二維有限差分、三維有限元和一維建模工具。MIKE 軟件是丹麥水資源及水環境研究所(DHI)開發的水動力、水文、水環境、水生態、水資源等多模塊數值模擬軟件,能夠進行降雨、產匯流、河網、城市、河口、近海、深海等不同類別、區域的一維到三維數值模擬。二維水動力模塊是很多類型數值模擬的基礎模塊,網格的質量直接影響計算的效率、精度甚至成敗。一般來說,SMS 自動生成的網格對于不規則邊界的適應性相對更強,對灘槽等地形界限反應更加清晰精確,且三維展示功能更加強大,因此不管最終數值模擬是基于哪個模擬軟件,不少用戶偏向于用SMS 自動剖分和優化網格。SMS 和MIKE 這兩種數模軟件在國內均得到廣泛使用,經常要將基于其中一個模擬軟件開發的二維模型移植到另一個模擬軟件環境中,或者利用其中一個模擬軟件制作的二維網格,移植到另一個模擬軟件中直接使用,或作進一步編輯修改,這些都要對SMS 與MIKE 模擬軟件二維網格進行相互轉換。
SMS 的網格文件可以存儲的拓展名可以為2DM、GRD、GEO 等幾種類型,這里以常用的2DM文件說明。2DM 文件包含文件標識符、單元信息、節點信息、邊界信息等四個部分。文件標識符位于文件首行,都為MESH2D。單元信息的行數與單元數相同,每行對應一個單元,從左到右依次為單元類型、單元編號、單元各節點編號、單元特征符等;單元類型一般分為E3T(三角網格)或E4Q(四點四邊形網格),對應的節點編號分別有三列和四列數據;單元特征符都是1。節點信息的行數與節點數量相同,每行對應一個節點,從左到右分別為節點標識符ND、節點編號、節點X、Y、Z 坐標。邊界信息包含全部網格開邊界,每一行對應一條開邊界,從左到右分別為邊界標識符NS 及各節點編號,邊界最后一個節點編號前一般添加負號。
MIKE 結構網格文件拓展名為MESH,包含文件頭信息、節點信息、單元信息三個部分。文件頭信息位于文件的首行,一般由“1000791000”開頭代表高程及單位,后面接著節點數量數據和標準坐標字符串,如未指定坐標系則坐標字符串為“NONUTM”。節點信息行數與節點數量對應,每行從左到右分別為節點編號、X、Y、Z 坐標及邊界碼,節點邊界為0、1 或大于1 自然數,分別代表節點位于區域內部、陸地邊界或開邊界上。單元信息由單元標題行和具體單元數據組成;單元標題行包含單元數量、最大節點數及類型碼,類型碼為21 或25 分別對應全部三角單元或四邊形單元(混合單元);具體單元數據行數與單元數量對應,每行從左到右分別為單元編號及此單元各節點編號,混合網格文件中三角單元最后節點編號為0。
采用C#語言編寫了SMS 與MIKE 二維非結構網格相互轉換程序。程序包含網格數據讀取、數據文件輸出及界面設計三個部分。網格數據讀取部分,首先需設置網格類型、坐標信息等變量、包含節點編號、坐標、邊界屬性的節點信息可變數組以及包含單元編號、單元各節點編號的單元信息可變數組,再采用文本讀取函數將文件數據讀取到內存中字符串中,根據數據格式對字符串進行逐步分解,最后給各變量及數組賦值。數據文件輸出部分與數據讀取部分相反,將各變量及數組中的數據按照文件數據格式分部拼接成文本字符串,采用文本輸出函數寫入到指定文件中。界面設計包含輸入輸出文件按鈕及對話框、轉換類型、進度顯示等,如圖1 所示。

圖1 界面設計組成示意圖
需要注意,MIKE 網格文件的邊界信息包含在節點數據中,而SMS 邊界信息需通過獨立部分呈現。當將MIKE 二維網格轉換為SMS 網格文件時,需根據將有相同邊界碼的節點分別歸為一條邊界,并需根據整個網格邊界的節點排列順序,對統一邊界各節點編號的順序重新排序,否則SMS 軟件無法正確識別邊界條件。
通過解析SMS 和MIKE 兩種水流數值模擬軟件二維非結構網格文件的數據格式,提出了兩種網格文件相互轉換的方法以及轉換注意事項。利用上述方法開發的轉換軟件可實現兩種數值模擬軟件二維網格的快速轉換,在數值模型研發工作中,為二維模型網格編輯、優化及模型移植提供了很大的便利■