好消息! FLAC2D 9.0及FLAC3D 9.0正式釋出囉! ...
首頁
1
FLAC自學
2
第一章 概述
3
1.1 FLAC2D 9.0版與FLAC 8.1版的差異與互通4
https://www.jscic.com.tw/custom_132925.html 1.1 FLAC2D 9.0版與FLAC 8.1版的差異與互通 1.1 FLAC2D 9.0版與FLAC 8.1版的差異與互通 第一章 概述             FLAC2D是一個源自於二維有限差分的有限體積法(Finite Volume Method),它的前身稱為FLAC。自從問世以來FLAC即採用所謂的 I、J 網格系統,亦即其格點及格區(Zone)的識別,皆以二個編號來表示,歷經40年之後軟體開發者Itasca Consulting Group決定將FLAC改為與其它軟體包括FLAC3D、3DEC及PFC一致,只用一個編碼來識別格點與格區,如此有利於分享其它軟體的資源並可無障礙地進行彼此間的耦合計算。這個識別編號系統的改變對FLAC而言是一個徹底的大改造,因為FLAC的整個內部資料結構、運算架構、圖形介面、Fish資料庫等等,都是建構在這個基礎上,一個嶄新的FLAC經過大改造後終於問世了,因此開發者決定將其改名為FLAC2D並以9.0版為其出發的版本。   FLAC2D是FLAC3D的2D版本 FLAC2D與FLAC3D二者之間的差異絕大部分僅在於所面對的是二或三個維度,它們所使用的指令及程式的運作方式幾乎是一模一樣的,因此熟悉了FLAC2D也等同於具備了使用FLAC3D的能力。   圖形介面或撰寫指令           對一般數值分析的應用而言,主要的工作流程可以劃分為二個大項(1)建模(2)後續分析。建模的工作在FLAC的早期版本是以指令為之,以撰寫指令的方式來建模是件耗費時間的事,尤其是除錯的工作更是讓人深感困擾 ; FLAC在5.0版之後容許使用圖形介面來建模就顯得輕鬆許多。至於後續分析的工作究竟是以圖形介面或是使用指令的方式來進行,何者為優就見仁見智了。就作者的看法是各有其優缺點,圖形介面的優點是較為直覺式的,對於不常用的人而言顯得較為簡單,不容易出錯但卻顯得繁瑣,圖形介面限制了分析之靈活性,讓FLAC強大的分析能力大打折扣,因此後期的FLAC版本即便是可以圖形介面來進行所有的分析程序,在許多情況下仍需要使用FISH來擴展其靈活性及強大功能,但別忘了,FISH是一種以指令撰寫的方式來表現的 ; 而使用指令分析的好處是寫一行指令就可以相當於使用圖形介面的好幾個步驟,而在分析的靈活性上可說是無所限制的,這對常用的人而言是如魚得水,對以英文為母語的人而言,指令就是他們平常的語言,但是對非英語系的人而言,指令是需要特別去記憶的單字,尤其對於不常用的人而言,要回復這個記憶有可能需要去查使用手冊,這顯然是個令人困擾的事。 FLAC2D 的開發者選擇以圖形介面來作建模工作,並選擇以指令的方式來做後續的分析工作,這個意思是圖形介面的「終點」為建立幾何模型及指派岩土的參數,這麼做乃是為了要去除繁瑣的建模工作卻仍能保留強大的分析能力。   指令速查 - 本書的重要附錄 為了讓讀者能夠更容易查得所需指令,我們在本書的後面,特別編了一個「指令速查」的附錄,該指令速查附錄是以「您要做什麼 ?」為出發點,並附上例句供讀者引用。   1.1         FLAC2D 9.0版與FLAC 8.1版的差異與互通   FLAC2D 的開發旨在為 FLAC2D 和 FLAC3D 的使用者提供一致的體驗。這必然意味著 FLAC2D 9.0 與其上一代的版本 FLAC 8.1(及更早版本)有著重大變化。儘管計算的方法相同(使用顯式求解邏輯及有限體積網格化,且絕大多數FLAC功能都在FLAC2D中重現),但使用者與程式互動的方式卻大相逕庭 :   IJ空間 最顯著的區別是FLAC2D不一定需要建構如舊版本所要求的如下圖顯示的結構化網格。格點和格區不由其 i、j 座標標識而是由單一的ID作標識。此外,由於 FLAC2D 不使用 i、j 空間,因此可以創建非結構化網格,如下右圖所示。這使得構建網格變得更加容易,而不必非得形成排列整齊的4邊型網格,這對幾何複雜的格網建模工作而言著實是個佳音。                   範圍 (Range) 在舊版的FLAC 中,格區和格點由其 i、j 座標標識。因此,例如,要固定模型左側的格點,您可以給出如下指令:                   fix x i = 1 在 FLAC2D 中,標識物件時使用一個關鍵字Range。由於沒有 i、j,因此通常用座標或群組(group)名稱來標識物件。在 FLAC2D 中可能等同於上述的指令如下:                zone gridpoint fix velocity-x range position-x = 0 在 FLAC2D 中為一個格區的群組指定莫爾-庫侖材料參數的指令可能如下:         zone model mohr-coulomb range group ‘sand’   Fish 因不使用 i,j 空間,因此FLAC2D需要以不同的方法來識別 FISH 中的格區和格點。在舊版的FLAC 中涉及需涵蓋所有格點的迴圈可能如下所示: loop i (1,igp)          loop j (1,jgp)             ; print x coordinate             ii = out(x(i,j))          end_loop end_loop   而FLAC2D對同樣的Fish則以下面的方式來呈現: loop foreach gp gp.list          io.out(gp.position.x(gp)) end_loop   FLAC2D中,所有格點都儲存在一個清單裡,並且使用 foreach 來輕鬆的進行迴圈運作。而格點則由用戶定義的變數 gp (這是gridpoint的簡寫)來辨識,而不是以 i 和 j 來標識。   指令和 FISH 語法 FLAC2D 中的所有指令都盡量符合以下的標準模式:   名詞 - 動詞 - 選項(option) - 修飾詞(modifier) - 範圍(range)   這樣做是為了能清楚地瞭解所針對的對象,並且讓程式之間能夠耦合(例如 zone gridpoint fix 是不同於 ball fix (註: ball是另一個PFC程式的基本單元)。指令(Command)具有使用新的連字符語法的關鍵字(例如 velocity-x),該語法記錄和列出完整的指令以便於理解,但仍允許那些不想鍵入整個單字的人使用縮寫。例如 : zone initialize stress-xx 可以寫為zon ini s-xx。 此外在FLAC2D中,內建的Fish之命名約定也改變為在要查詢或變更的事物類型後跟著一個句點( . )後再接量值。例如,zone.model 或 gp.disp。這大大提高了函式名稱的清晰度,並允許編輯器在您鍵入時自動突顯正確和不正確的內建函式名稱。           FLAC2D的Fish添加了許多新的函式類型,包括布林(Boolean)、張量、矩陣、清單(List)或映射(Map),而多線程的(Multithreaded) FISH 也可提供支援。           FISH 內建函式適用於 FLAC2D 中所有的量值。因此不再需要為了進入記憶體來獲取該些量值而增加額外的指令,因此在FLAC2D中不再有imem及fmem這種指令及相關的規定,FLAC的資料結構的量值可以簡單的指令即可取得,例如要取得一個結構元素的ID只需要使用struct.id 而不需要再寫複雜的程式碼如 “imem(sel+$kelid)”; 要獲得節理的剪切位移FLAC與FLAC2D分別為:   sjdisp = fmem(pa+$kidasd) ; FLAC   sjdisp = interface.node.disp.shear(pa) ; FLAC2D 最後:在FLAC2D中,材料屬性是直接分配給物件(格區、界面元素、結構元素),不像 FLAC 是採用間接分配的方式。譬如FLAC會將屬性分配給一個編號,然後再將材料編號分配給一個物件:   struct prop 1001 e 2e11 area 0.006 I 2e-4   struct beam prop 1001 在FLAC2D中則是:   struct beam prop young 2e11 cross-sectional-area 0.006 moi 2e-4   FLAC2D的線上使用手冊中亦提供了FLAC 8.1版本之指令與FLAC2D之指令對照表,參照這些對照表可讓習慣8.1版本之讀者更容易查詢轉換。此外針對Fish的語法的轉換,線上的使用手冊亦提供了對照表供用戶查詢。讀者可藉由點擊主要工具列最右邊的[Help] --> 視窗的右側即會出現該使用手冊,點擊其左側邊的     圖示 可展開使用手冊的目錄如下圖 ,開啟最底下的二項即可開啟前述之各項對照表。   請注意: “ --> ”圖示      : 在本書中意指“點擊”或“進行下一個步驟” “按鈕”或“標籤”: 在本書中皆以中括號 [ ] 含括文字表示,例如 [Help] 指的是 Help這個標籤 ; 在選單中的“選項”,則是以 < > 符號含括文字表示。例如 [Help] --> 意指「先按 Help標籤再於其下拉選單中點擊選取 Help and Documentation這個選項」    
https://www.jscic.com.tw/ 楓政科技工程有限公司

首頁 FLAC自學 > 第一章 概述 > 1.1 FLAC2D 9.0版與FLAC 8.1版的差異與互通

第一章 概述

 

          FLAC2D是一個源自於二維有限差分的有限體積法(Finite Volume Method),它的前身稱為FLAC。自從問世以來FLAC即採用所謂的 I、J 網格系統,亦即其格點及格區(Zone)的識別,皆以二個編號來表示,歷經40年之後軟體開發者Itasca Consulting Group決定將FLAC改為與其它軟體包括FLAC3D、3DEC及PFC一致,只用一個編碼來識別格點與格區,如此有利於分享其它軟體的資源並可無障礙地進行彼此間的耦合計算。這個識別編號系統的改變對FLAC而言是一個徹底的大改造,因為FLAC的整個內部資料結構、運算架構、圖形介面、Fish資料庫等等,都是建構在這個基礎上,一個嶄新的FLAC經過大改造後終於問世了,因此開發者決定將其改名為FLAC2D並以9.0版為其出發的版本。

 

FLAC2D是FLAC3D的2D版本

FLAC2D與FLAC3D二者之間的差異絕大部分僅在於所面對的是二或三個維度,它們所使用的指令及程式的運作方式幾乎是一模一樣的,因此熟悉了FLAC2D也等同於具備了使用FLAC3D的能力。

 

圖形介面或撰寫指令

          對一般數值分析的應用而言,主要的工作流程可以劃分為二個大項(1)建模(2)後續分析。建模的工作在FLAC的早期版本是以指令為之,以撰寫指令的方式來建模是件耗費時間的事,尤其是除錯的工作更是讓人深感困擾 ; FLAC在5.0版之後容許使用圖形介面來建模就顯得輕鬆許多。至於後續分析的工作究竟是以圖形介面或是使用指令的方式來進行,何者為優就見仁見智了。就作者的看法是各有其優缺點,圖形介面的優點是較為直覺式的,對於不常用的人而言顯得較為簡單,不容易出錯但卻顯得繁瑣,圖形介面限制了分析之靈活性,讓FLAC強大的分析能力大打折扣,因此後期的FLAC版本即便是可以圖形介面來進行所有的分析程序,在許多情況下仍需要使用FISH來擴展其靈活性及強大功能,但別忘了,FISH是一種以指令撰寫的方式來表現的 ; 而使用指令分析的好處是寫一行指令就可以相當於使用圖形介面的好幾個步驟,而在分析的靈活性上可說是無所限制的,這對常用的人而言是如魚得水,對以英文為母語的人而言,指令就是他們平常的語言,但是對非英語系的人而言,指令是需要特別去記憶的單字,尤其對於不常用的人而言,要回復這個記憶有可能需要去查使用手冊,這顯然是個令人困擾的事。

FLAC2D 的開發者選擇以圖形介面來作建模工作,並選擇以指令的方式來做後續的分析工作,這個意思是圖形介面的「終點」為建立幾何模型及指派岩土的參數,這麼做乃是為了要去除繁瑣的建模工作卻仍能保留強大的分析能力。

 

指令速查 - 本書的重要附錄

為了讓讀者能夠更容易查得所需指令,我們在本書的後面,特別編了一個「指令速查」的附錄,該指令速查附錄是以「您要做什麼 ?」為出發點,並附上例句供讀者引用。

 

1.1         FLAC2D 9.0版與FLAC 8.1版的差異與互通

 

FLAC2D 的開發旨在為 FLAC2D FLAC3D 的使用者提供一致的體驗。這必然意味著 FLAC2D 9.0 與其上一代的版本 FLAC 8.1(及更早版本)有著重大變化。儘管計算的方法相同(使用顯式求解邏輯及有限體積網格化,且絕大多數FLAC功能都在FLAC2D中重現,但使用者與程式互動的方式卻大相逕庭 :

 

IJ空間

最顯著的區別是FLAC2D不一定需要建構如舊版本所要求的如下圖顯示的結構化網格。格點和區不由其 ij 座標標識而是由單一的ID作標識。此外,由於 FLAC2D 不使用 ij 空間,因此可以創建非結構化網格,如下右圖所示。這使得構建網格變得更加容易,而不必非得形成排列整齊的4邊型網格,這對幾何複雜的格網建模工作而言著實是個佳音。

 

5bbbcf3c7fefd68af24a39f124aeb9fc.JPG

  

      

 

 4a948fb1e59e7312e60a9276e31da22c.JPG

 

範圍 (Range)

在舊版的FLAC 中,格區和格點由其 ij 座標標識。因此,例如,要固定模型左側的格點,您可以給出如下指令:

                  fix x i = 1

FLAC2D 中,標識物時使用一個關鍵字Range。由於沒有 ij,因此通常用座標或(group)名稱來標識物。在 FLAC2D 中可能等同於上述的指令如下:

               zone gridpoint fix velocity-x range position-x = 0

FLAC2D 中為一個格區的群組指定莫爾-庫侖材料參數的指令可能如下:

        zone model mohr-coulomb range group ‘sand’

 

Fish

因不使用 ij 空間,因此FLAC2D需要以不同的方法來識別 FISH 中的格區和格點。在舊版的FLAC 中涉及需涵蓋所有格點的迴圈可能如下所示:

loop i (1,igp)

         loop j (1,jgp)

            ; print x coordinate

            ii = out(x(i,j))

         end_loop

end_loop

 

而FLAC2D對同樣的Fish則以下面的方式來呈現:

loop foreach gp gp.list

         io.out(gp.position.x(gp))

end_loop

 

FLAC2D中,所有格點都儲存在一個清單裡,並且使用 foreach 來輕鬆的進行迴圈運作。而格點則由用戶定義的變數 gp (這是gridpoint的簡寫)來辨識,而不是以 i j 來標識。

 

指令和 FISH 語法

FLAC2D 中的所有指令都盡量符合以下的標準模式:

 

名詞 - 動詞 - 選項(option) - 修飾詞(modifier) - 範圍(range)

 

這樣做是為了能清楚地瞭解所針對的對象,並且讓程式之間能夠耦合(例如 zone gridpoint fix 是不同於 ball fix (註: ball是另一個PFC程式的基本單元)。指令(Command)具有使用新的連字符語法的關鍵字(例如 velocity-x),該語法記錄和列出完整的指令以便於理解,但仍允許那些不想鍵入整個單字的人使用縮寫。例如 : zone initialize stress-xx 可以寫為zon ini s-xx

此外在FLAC2D中,內建的Fish之命名約定也改變為在要查詢或變更的事物類型後跟著一個句點( . )後再量值。例如,zone.model gp.disp。這大大提高了函式名稱的清晰度,並允許編輯器在您鍵入時自動突顯正確和不正確的內建函式名稱。

          FLAC2D的Fish添加了許多新的函式類型,包括布林(Boolean)、張量、矩陣、清單(List)或映射(Map),而多線程的(Multithreaded) FISH 也可提供支援。

          FISH 內建函式適用於 FLAC2D 中所有的量值。因此不再需要為了進入記憶體來獲取該些量值而增加額外的指令,因此在FLAC2D中不再有imem及fmem這種指令及相關的規定,FLAC的資料結構的量值可以簡單的指令即可取得,例如要取得一個結構元素的ID只需要使用struct.id 而不需要再寫複雜的程式碼如 “imem(sel+$kelid)”; 要獲得節理的剪切位移FLAC與FLAC2D分別為

 

sjdisp = fmem(pa+$kidasd) ; FLAC

 

sjdisp = interface.node.disp.shear(pa) ; FLAC2D

最後:在FLAC2D中,材料屬性是直接分配給物件(區、界面元素、結構元素),不像 FLAC 是採用間接分配的方式。譬如FLAC會將屬性分配給一個編號,然後再將材料編號分配給一個物件:

 

struct prop 1001 e 2e11 area 0.006 I 2e-4

 

struct beam prop 1001

在FLAC2D中則是:

 

struct beam prop young 2e11 cross-sectional-area 0.006 moi 2e-4

 

FLAC2D的線上使用手冊中亦提供了FLAC 8.1版本之指令與FLAC2D之指令對照表,參照這些對照表可讓習慣8.1版本之讀者更容易查詢轉換。此外針對Fish的語法的轉換,線上的使用手冊亦提供了對照表供用戶查詢。讀者可藉由點擊主要工具列最右邊的[Help] --> 視窗的右側即會出現該使用手冊,點擊其左側邊的  e86acfbcf9d9a35552f4c976a1a7f0fc.png   圖示 可展開使用手冊的目錄如下圖 ,開啟最底下的二項即可開啟前述之各項對照表。

 

請注意:

-->圖示      :

在本書中意指“點擊”或“進行下一個步驟”

按鈕”或“標籤”:

在本書中皆以中括號 [ ] 含括文字表示,例如 [Help] 指的是 Help這個標籤 ; 在選單中的“選項”,則是以 < > 符號含括文字表示。例如 [Help] --> 意指「先按 Help標籤再於其下拉選單中點擊選取 Help and Documentation這個選項」

 66ce4ea9229954c0bb2709cd3f703885.JPG