VB版3維邊界元素法應用於沿岸及港灣附近海域


周宗仁 2024/12/15  更新日期 2024/12/25

 

本應用軟體係將下列2文獻,設計成通用程式。

i.任意形狀海底地形港池水面波動

ii.沿岸透水消波離岸潛堤群

 

本應用軟體適用於沿海港灣附近海域,下列地理環境存在時

1.離岸堤群不存在。無離岸堤,僅有海灘無港灣時港形只取海灘就可,程式相同。

2.不透水露出水面離岸堤群存在

3.不透水沒水離岸堤(潛堤)群存在

4.透水露出水面離岸堤群存在

5.透水沒水離岸堤(潛堤)群存在


目前一邊作程式最終驗証一邊編輯操作手冊中,完成後將軟體上網。

表單1~6的操作說明完成。

原預定離岸堤結構為不透水(已完成),為更符合實際,追加透水結構離岸潛堤,程式必要大幅增加,請期待。

目前僅針對垂直柱體,順利的話再追加至梯形堤。

 

    本應用軟體的目的為解析沿岸附近海域及港灣受波浪來襲時引起的波況變化,進而推估波浪為因產生的沿岸流,終極目標則為海灘變形的預測。


    本軟體特徵為利用微軟視覺工作室(Microsoft Visual Studio) 的開發工具Visual Basic,全程建構電子(數位)海圖及港灣模型,並生成數值解析用節點,應用Delaunay三角分割建置3維海域各邊界網格元素,將3維邊界元素法編譯成VB語言。本程式共分成基本程序及應用程式等2部分。

基本程序:


表單1:總表單

   總表單選定欲執行項目,對分析對象首先必要執行電子地形圖繪製,再針對各邊界逐次執行2~5程式後,進行應用程式、繪製等值線。各表單定義如下:

 

表單2:Form_SeaMap       海圖、沿岸海域地形及結構物繪製

表單3:Form_Node         節點生成

表單4:Form_TriAngle     三角形網格生成

表單5:Form_Square       四角形網格生成

表單6:Form_Model        沿岸海域地理模型建構

表單7:Form_WaveFreq     頻率領域(特徵值問題)港灣波場模擬

表單8:Form_WaveTime     時間領域(造波問題)港灣波場模擬

表單9:Form_IsoDraw      等值線繪製

表單10:Form_LongShore   沿岸流場模擬(奮鬥中)

表單11:Form_Sand        漂砂場模擬(奮鬥中)


表單2:海圖、沿岸海域地形及結構物繪製

     對執行對象海域,可利用電子海圖建構沿岸海域地形、港灣形狀及沿海離岸堤等結構物的位置及水深資料,若無電子海圖時,可利用市販海圖或規劃用測量圖,利用掃描機對欲解析範圍海圖(必要去除邊框以免誤差)掃描成電子檔(jpg)

 

1.建立基本資料

a.資料夾名(自訂),使用者依銀幕指示。

b:開發者參考:存於「專案資料夾(自訂)」→「bin」→「release」→「net6.0-windows」內

c.海圖檔名及完整路徑(含副檔名)、儲存檔名(不含副檔名)

d.海圖欲解析對象海域實際寬及長(m)

e.影像高crty及寬crtx(dot數),可由影像檔數據取得。

f.寬y方向海圖分割數Nygrid(長x方向Nxgrid會自動計算)。y方向為沿岸方向

g.資料(黃框)鍵入完成按「確定」後,依銀幕指示執行。

 

2.生成港形、離岸堤及等水深線,包含碼頭水深、離岸堤位置等

a.等深線、港形等的生成採用自動化,將人工作業最少化,本軟體可階段暫停並將之存檔。

b.港形、等深線的生成,何者先執行均可,等深線以各等水深為單項,「等深線」繪製概念詳如文獻

c.離岸堤的生成建議宜於港形、等深線生成完成並執行「格點水深製作」自動完成任意點水深功能後,再執行可節省人工作業。

 

港形、等水深線及離岸堤等生成操作步驟如下:

a.選定「港形」或「等深線」。

b.在滑鼠區內任意點按右鍵1次,表示啟動滑鼠。

c.在繪製起始點按左鍵開始生成,移動滑鼠按左鍵,依序至終點,按「單項確定」。

   1.港形的起始點為右假想邊界線(y=0)與港形線相交處,終點則為港形線與左假想邊界線(y=crty)相交處。

  2.第1次生成港形時,依銀幕指示,依序人工鍵入該點水深(負值),該點座標及水深值會自動儲存。

   3.港形線的目的在於能正確簡潔表現港形,因此只在起點、各港形線轉折點及終點處設點並鍵入該點水深值。

  4.沿港形線的實際水深是執行「還界節點」,依比例將上述港形線代表點值自動分割,存於quaynode檔。

  5.執行「碼頭水深」將quaynode檔轉換成quaydepth檔為提高港內水深精準度。

   6.執行「港形」及「等深線」後,才可執行離岸堤配置。

   7.離岸堤線視為港形線的追加,依「港形追加」執行。

d.執行各單項步驟後按「單項確定」

e.等深線以各水深線各自視為單項執行。

f.全部完成後按「存檔」

g.欲追加港形或等深線時,按「確定」→「顯示港形」→港形追加」或「追加等深線」執行。

h.連續追加時第2次以後改按「港形」或「等深線」。修改時亦同。

i.欲追加或修改港形或等深線時,依「顯示港形」可知欲追加或修改編號或檢視資料夾,追加將最大編號 + 1 就可。

 

3.網格點水深製作

a.按「顯示港杉」,確認依上述「等深線」生成等深線,包含碼頭水深。

b.依基本資料設定的寬y方向海圖分割數,「網格點水深製作」執行,概念參考文獻

c.按「任意點水深」,可顯示任意點座標及水深。

d.本表單執行完成後,將數據儲存於Subroutine TerrianGenData()。

下圖為八斗子漁港的數值模擬用數位海圖。

 
表單3:節點生成

   本表單目的為生成數值計算生成三角形及四邊形網格元素必要的平面邊界節點,以海岸港灣3維模型而言,因考量各平面邊界各有不同的邊界條件,通常可分成水面、海底、碼頭垂直面及假想邊界面等4部分。

    水面及海底是依實際地形,假想邊界面則可依解析對象而有不同形狀。側如外海處的離島群,假想邊界面可設定為圓形。解析沿岸海域水理或港灣遮蔽問題,可配置成半圓形。

    本軟體目的為解析沿岸附近海域或港灣的水理現象,包含波場、流場及漂砂場等,因此為通用,假想邊界面採用「ㄇ」字型,區分成左、右及中間(起始)假想邊界,各有不同的邊界條件。中間假想邊界,在時間領域模擬造波場時主要目的是模擬造波裝置,可模擬各種波浪,故又稱之為起始邊界。

    總共有水面、海底、碼頭垂直面、左、右及中間等6個邊界面,港灣不存在的沿岸海域,將碼頭垂直面簡化成海灘線就可。若有離岸堤群,其平面形狀(目前僅考量矩形)、位置及水深分別在水面及海底項內加以配置。

    離岸堤目前僅適用於垂直柱狀形的矩形透水或不透水的沒水潛堤及露出水面離岸堤。

 

 

    邊界節點生成的目的為,作為表單4應用Delaunay三角分割生成三角形元素網格的前置作業,概念詳如文獻,本文說明操作步驟。

1.基本資料建立

a.設定資料夾名、海圖檔名及完整路徑(含副檔名)、儲存檔名(不含副檔名)。

b.選定生成節點的邊界面。

   1:水面邊界面  2:海底邊界面 3:中間(起始)邊界面  4:右假想邊界面  5:左假想邊界面

   碼頭面節點資訊已於表單2取得,呼叫Form_SeaMap.TerrianGenData()就自動導入。 

c.設定水平面寬y方向(沿岸方向)分割節點數(包含兩端節點),長x方向分割節點數會自動計算。

  分割節點數建議大於65。 

d.設定海底面寬y方向(沿岸方向)分割節點數(包含兩端節點),可不同於水平,長x方向分割節點數會自動計算。

  因海底物理量變化較小,可設定少於水面,以減少計算時間及容量。 

e.設定離岸堤高,堤頂高比topZ = 0 表示堤頂高出水面,堤頂高比 ≠ 0 表示離岸堤為沒水式,其堤頂高為水深 x 堤頂高比。

   堤頂高比設定係為後續作業預設。

f.選定解析領域  1:頻率領域(特徵值問題)  2:時間領域(造波問題)

   特徵值問題著重於實際工程應用,如港內外水面波高分布,造波問題則重點為學理探討。

g.設定起始面造波板數,只用於時間領域(造波問題)

h.設定去除係數:目的為判定節點是否必要去除,通常在0.3~0.8間(間隔大時取小值,預設值為0.4)。

i.設定其餘各邊界預估節點數視解析區域大小及精度要求而定(自訂)。

j.全部資訊鍵入後按「確定」

 

2.地形顯示

   按「地形繪圖」, 確認港形、等深線、有無離岸堤等。

 

3.內外邊界節點建構

    在基本資料選定欲執行邊界面,對5個邊界面依序個別執行。

(1)自由水面

    邊界面已選定"1"。

    自由水面的構成邊界為,由中間(起始)邊界線、右邊界線、港形線(包含海灘、防波堤及碼頭)及左邊界線所構成的封閉外部邊界,節點編號順時針方向(各自編號)。

    若有離岸堤群存在時加入為內部邊界,節點編號逆時針方向(各離岸堤各自編號)。

a.按「內外邊界節點」,生成構成自由水面的邊界線節點。 必要時,可按「地形繪圖」,顯示節點分佈,重新設定。

b.按「內部網格點」,生成內部網格點

    依y方向網格分割數,生成內部網格點,黑點為邊界節點。由於生成內部網格點(藍點)時,會自動啟動去除機制,首先去除海域外的網格點。若內部網格點太靠近碼頭或離岸堤,將來會影響數值計算,亦會利用去除係數的設定加以去除(詳如文獻)。

 

c. 判斷有否必要增設內部加強點

    如上圖,離岸堤或碼頭附近,因去除機制使內部網格點形成空白,尤其是在轉折角處,會影響後續三角形元素生成。此時必要啟動「內部加強點」機制。如下圖,按「內部加強點」,依銀幕指示,人工作業增設加強點(紅點)。

(2)海底面

    邊界面已選定"2",按「內外邊界節點」,餘同水面,但y方向網格分割數為Nyb,可不同於水面。

(3)中間(起始)面

    邊界已選定"3",按「內外邊界節點」,自動生成邊界節點

(4)右邊界面

    邊界已選定"4",按「內外邊界節點」,自動生成邊界節點

(5)左邊界面

    邊界已選定"5",按「內外邊界節點」,自動生成邊界節點

(6)由海灘線、防波堤及碼頭線構成的港形垂直面,因可直接使用表單2取得的資訊,不必再行處理。

4.檔案儲存

   按檔案儲存將各檔案存於Subroutine NodeGenData(),必要時可呼叫之。

 


表單4:三角形網格繪製

    Delaunay三角分割的基本概念及如何應用於港灣海域詳如文獻。由於港內會配置突堤瑪頭,屬細長形結構,必要在執行Delaunay三角分割後,作適切修正調整。

    僅針對1:水面邊界面  2:海底邊界面 ,執行Delaunay三角分割

 

1.基本資料建立

a.設定資料夾名、海圖檔名及完整路徑(含副檔名)、儲存檔名(不含副檔名)。以八斗子漁港為說明例,但離岸堤純屬虛構,是為程式設計。

b.選定生成節點的邊界面。1:水面邊界面  2:海底邊界面

c.按「確定」後,地理及節點等資訊會自動導入。

 

2.顯示圖形

a.顯示海圖

   必要時按「顯示圖形」,顯示海圖。

b.顯示節點

   必要時按「節點繪圖」,顯示節點

c.任意點水深

   必要時按「任意點水深」,取得水深資訊。

 

3.三角形元素生成

   由於港內會配置突堤瑪頭,屬細長形結構,邊界節點間隔大小會影響三角形元素的生成,詳如文獻,摘要如下。

   三角形元素生成步驟:

(1)由內外部邊界節點生成的三角形元素

    僅由內外部邊界節點生成的三角形元素,如下圖可知,除領域內會有多餘三角形元素生成(藍圈)外,港區外會有三角形元素生成(紅圈),突堤碼頭、防波堤或離岸堤內亦會生成三角形元素。必要加以去除(下述)。

 

(2)邊界節點及內部網格共同生成的三角形元素

     由內外部邊界節點及內部網格點共同生成的三角形元素如下圖所示,依過往測試,知道影響三角形元素的生成,主要有2因素,其一是邊界節點的間隔,其二是內部網格分割數的多寡(亦即分割間隔大小)。通常間隔小會得到較好結果,但元素數會增加,即增加計算容量。

y方向分割數宜在65以上。必要多次測試(重回表單3邊界節點生成)才能覓得好的結果,幸好是自動計算不會麻煩。本項工作是本應用軟體的重點,必要在表單3「邊界節點生成」與表單4「三角形網格繪製」間,作往覆調整才能得到期待的結果。 若欲調整港形線間隔,則必要由表單2執行「修改港形」後,再重新執行表單3的自由水面「內外邊界節點」乙次。 

   若防波堤、突堤碼頭或離岸堤等內部出現如下圖所示三角形元素時,必要將之去除。

(3)去除不要三角形元素

a.將Delaunay三角分割生成的元素中,大於全部邊界節點數(外部邊界節點 + 內部邊界節點)者加以去除(將元素編號設定為0),即可將港內多餘元素及港域外部份去除如下圖。本作業會自動執行。

b.調整邊界節點間隔或內部網格分割間隔,因調整邊界節點間隔比較煩雜,港形線的調整必要在表單2執行,因此建議以試錯法調整內部網格分割數,這項工作是在表單3「內部網格點」執行。

c.去除多餘三角形元素(參考文獻)後,可能發生的必要改正加強問題如下

i.如上圖所示,綠框表示該區未配置網格點,利用表單3「節點生成」,配置加強點即可補正。不得已時可利用表單2港池「碼頭水深」節點配置數及網格數的試錯調整,因凹角處自動生成加強點。

ii.粉紅框部分即內港口處網格呈四邊形,在四邊形元素內配置1個加強點即可補正,本問題目前尚無自動修正方案。

iii.紫框藍框部分表示(未框角落亦同)於上述去除外部元素時因去除條件相同而被去除。補正方法為在角落三角形斜邊配置1個加強點即可。已昇級為自動生成,提昇精準度及效率。

iv.紅框部分亦因去除條件相同而被去除,補正方法之一為利用海域邊界及內部節點生成配置若干加強點自動修正,但會產生大量網格,其二為若該處的形狀對物理量不具影響時,可考量將該處形狀簡化,重新配置港形及碼頭水深。

v.配置若干加強點後的完成圖,若尚有必要加強處可持續加強。

4.三角形元素存檔

  將三角形元素相關資訊存於Subroutine TriAngleData() 

5.顯示三角形元素

按「三角形繪圖」顯示全體三角形元素。

   為驗証參考用,設立下列2指令:

1.顯示指定節點的周邊元素

   按「繪製各節點周邊元素」,可顯示節點的周邊元素。

2.顯示指定元素的相鄰元素

   按「繪製各元素相鄰元素」,可顯示元素的相鄰元素。

 
表單5:四邊形網格繪製

    本表單目的為將表單4生成的三角形網格元素轉換成四邊形網格元素,因在流體力學應用上四邊形元素有其利點,例如代表座標、法線方向等計算或流速的定義。

1.基本資料建立

a.設定資料夾名、海圖檔名及完整路徑(含副檔名)、儲存檔名(不含副檔名)。

b.選定生成節點的邊界面。1:水面邊界面  2:海底邊界面

c.設定反復修正次數(預設值=5),目的為將由三角形網格元素轉換而得的四邊形網格元素,盡可能調整成正方形,本作業自動執行。

d.按「確定」後,地理、三角形網格元素等資訊會自動導入。

e.設定基本資料後,本表單依序按鍵自動執行。

 

2.顯示地形

a.顯示三角形網格(必要時)

b.顯示節點(必要時)

c.顯示任意點水深(必要時)

 

3.四邊形網格元素建立

a.四邊形元素生成

  按「四邊形元素生成」,自動執行

b.四邊形元素存檔

  按「四邊形元素存檔」,存於Subroutine  SquareData()

c.四邊形元素繪圖

  按「四邊形元素繪圖」,顯示全體四邊形網格元素

d.調整節點位置

按「調整節點位置」,會依反復修正次數,自動修正,但原則不執行


表單6:沿岸海域地理模型

    本表單目的為利用表單2、表單3、表單5生成的網格元素,建構3D邊界元素法數值計算必要的邊界面網格。

 

1.基本資料建立

a.設定資料夾名、海圖檔名及完整路徑(含副檔名)、儲存檔名(不含副檔名)。

b.設定離岸堤結構型式。1:不透水 2:透水

c.設定海灘、防波堤、碼頭等的反射率。以節點數表示其範圍。

d.設定海底摩擦係數。

e.設定有無考量流速分布。

f.按「確定」後,地理、四角形網格元素等資訊會自動導入。

 

2.顯示地形

a.顯示三角形網格(必要時)

b.顯示節點(必要時)

c.顯示任意點水深(必要時)

 

3.各邊界面網格建構

按下列各項邊界網格製作,自動執行。

a.水面邊界網格製作

b.海岸邊界網格製作

c.中間邊界網格製作

d.右邊界網格製作

e.港池邊界網格製作

f.左邊界網格製作

g.離岸堤邊界網格製作

h.按「節點繪圖」顯示節點編號,從右海灘開始,分5段落決定其反射率及元素數。例如若右海灘決定為1至31節點,則有30倜元素。以此類推。

各邊界網格資訊存於Subroutine ModelData()


應用程式:


表單7:頻率領域港灣波場模擬

 


表單8:時間領域港灣波場模擬

 


表單9:等值線繪製

 



表單10:沿岸流場模擬(奮鬥中)


表單11:漂砂場模擬(奮鬥中)