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/custom_132987.html
1.1 FLAC2D 9.0版与FLAC 8.1版的差异与互通(续)
1.1 FLAC2D 9.0版与FLAC 8.1版的差异与互通(续)
建模
FLAC2D 提供了一个草图窗格(Sketch Pane) 和模型窗格(Model Pane)作为建模使用,它们类似於 FLAC 中的几何生成器(Geometry Builder)和虚拟网格(Virtual Grid)编辑器。草图窗格容许您导入 dxf 或其他图档、绘制线条和形状、指派群组以及指定划设格区的疏密度。下面图1.1.1为FLAC2D的草图窗格样貌。
图 1.1.1 FLAC2D的草图窗格
完成在「草图窗格」创建格区之后,紧接著呈现的是「模型窗格」,模型窗格允许互动式的指定群组、指定组合律模式和材料属性,以及在选定的边(edges)上创建曲面(Surface)结构元素或界面(节理)。下面图1.1.2显示一个模型窗格的例子 :
图 1.1.2 模型窗格样貌
如果您喜欢使用指令来构建模型格网,FLAC2D提供了七个不同形状的原型模版(primitive),可以利用这些原型模版来创建格网再予并接。
如果不记得原型模版的完整指令的话,我们可以利用[Help] -->[Help and Documentation]进入线上使用手册 -->输入“zone create2D” 来搜寻相关指令(下左图) --> 点击”zone create2d command”后开启该主题的详细说明如下右图。
我们以其中的 “tunnel-quad”来说明 : 点击上右图中的tunnel-quad ,使用说明会移至该部分(下左图),点击该说明的小图示,则会出现一个呈现参考点(reference points)等之示意图(下右图)。
实际上的使用如下左图中的程式码(注:程式码后面的 … 表示下一行为延续该行指令),其显示的Model格网样貌则示於下右图中。读者可随意更改其中的数值来看看改变了什么。
另外在FLAC中,我们可以藉由线段来划分区块让网格的生成沿著该线段的走向来安排,但在FLAC2D中这是选择性的步骤。
结构元素
结构元素在 FLAC2D 中可经由下列方式建立:
l 在「草图窗格」中绘制边(edge),再导入指令将它们转换为结构元素。其指令,例如 : structure cable import from-sketch
l 汇入 dxf 图档再导入指令将它们转换为结构元素。例如:
structure cable import from-geometry
l 输入带有座标的指令。例如:
struct cable create by-line (0 , 10) (15 , 8)
l 附著於网格曲面(surface)上的结构元素,譬如衬砌,可以在模型窗格中以互动方式创建。如下图中欲在圆形隧道的表面安装以梁元素作为隧道衬砌的互动式输入对话框。
另外,目前在 FLAC2D 中还无法以图形方式指定初始条件和边界条件,必须使用指令。经由在「模型(model)窗格」中为格网的格区面(zone face)和格区(zones)指定群组(group)名称的功能,让我们在为格区面或格区群组指定初始条件和边界条件相对容易些。
从FLAC汇出模型到FLAC2D
(1).
在FLAC 8.1开启欲汇出的Project档 --> [Utility] / [Extrude] (图1.1.3)。
(2).
FLAC 8.1 弹出Extrude Flac mesh to FLAC2D/3D对话框,检查是否已点选 ,正确即可按 [ok] (图 1.1.4) ,一个模型几何档out. f2grid将生成且储存到 FLAC8.1的project资料夹里 (图1.1.5)。
(3).
开启FLAC2D (先建立一个Project档) --> 点击 [File] --> --> (如图1.1.6左图) -->循正确的路径到FLAC8.1的project 资料夹点选 out.f2grid (图1.1.6右图) --> FLAC2D的Data Files中即出现该档案,并且该data档(“out”)的内容会列出於编辑器中(图1.1.7)。
(4).
点击图1.1.8的 图示,并於下拉选单点选Model,该模型几何即会呈现,显示已成功地将模型几何汇入FLAC2D。
图1.1.3 FLAC 8.1的模型
图1.1.4 点击 [Utility] / [Extrude]出现Extrude 对话框
图1.1.5 FLAC 8.1 project 资料夹档案显示 out.f2grid
图1.1.6 由FLAC2D 汇入FLAC所汇出的格网图档
图 1.1.7 FLAC2D 显示模型几何的Data
图1.1.8 成功的将FLAC的模型几何汇至FLAC2D
绘图及视图
FLAC2D的绘图(plot)设施类似於 FLAC。 您需要创建一个新图(new plot),然后添加特定的图项(例如格区、向量、结构元素等)。与FLAC的差别在於没有一长串可供选择的绘图项目。相反地,您只需选择要绘制的内容(例如格区zone),然后指定标签(Label : 例如群组)或等值线图形(Contour : 例如位移,请参见下图)。
另一个区别是FLAC2D的用户对绘图的颜色、比例、字体、图例等可以有更多的控制。绘图的输出也很简单,可以经由单击右键并选择格式和解析度来完成。
FLAC2D 中没有内建的电影制作器。但提供可以简易地定期撷取图片(例如每 100 个steps)的方式来收集随著运算进行所产生的图形变化。我们可以使用Tools --> Options --> Movie 来进行这样的图片收集,并利用线上GIF制作软体来生成电影。
FLAC2D 9.0中仍未能具备的FLAC 8.1功能
并非 FLAC 8.1 中的所有功能都存在於目前的FLAC2D 9.0。因此Itasca仍将继续支援 FLAC,直到 FLAC2D 第10版正式发行。以下功能在目前的FLAC2D 9.0版仍无法使用:
l 无限弹性边界
l FISH 组合律模型
l 支撑元素 (Support elements)
l 自动重新分区(Automatic rezoning)。虽然这可以在某种程度上使用 FISH 完成。
l 双相流(Two-phase flow)。
https://www.jscic.com.tw/custom_132926.html
1.2 本书的几个表现方式
1.2 本书的几个表现方式
1.2 本书的几个表现方式
标签(Tab)或工具按钮是以中括号 [ ] 来表示。例如: [File]、[Edit]、[Tools]。
标签或工具之下拉选单中的选项以 < > 来表示。
例如:[File] 底下的 New选项,我们会以 < New >来表示。
「选取」或「点击」在书中的意思是相同的。例如点击 [File ] 项下的 与选取[File ] 项下的 是同样意思。
“二条短杠+大於” 的符号 ( --> ) 代表「接著做下一个动作(步骤)」,例如:点击 [File] --> < New > --> < Data File >表示点击 [File] 项下的 < New >后再选取 < Data File> ,此外,有时我们也可能也会以 [File] / < New> / 来简化表示。
本书中常会以FLAC来泛指 FLAC2D及FLAC3D
https://www.jscic.com.tw/custom_132988.html
1.3 软体使用说明(手册)
1.3 软体使用说明(手册)
1.3软体使用说明(手册)
FLAC2D 的软体使用手册采智慧型的连结方式,使用手册置放於 [Help] 的标签项下,查看使用手册有二种方式(1)查看全部内容 (2)针对关键内容。
(1). 查看全部内容 :
点击 [Help] --> < Help and Documentation> ,会显示如下图样貌,这是一个从FLAC2D 使用手册的第一页开始的使用说明。
点击 符号可以开启或关闭使用手册的黑底目录,点击使用手册中带有底线的字词可以连结到相关的说明,点击黑底目录上方的左、右二个箭头可以回到上一页或继续下一页。另外在使用页的右上方有个放大镜的搜寻框,您可以输入欲查找的关键字词,FLAC2D会列出一大串的相关内容,供选取查看。以右键点击使用说明画面会弹出一个对话框(如下图),选取 < Open in Default Browser > 会开启全视窗之说明页,关闭使用说明可点击 。
(2) 针对关键内容的说明( Contextual Help)
这是比较针对我们在撰写程式码时,遇到不熟悉的语句,或当执行发生错误时,针对某个指令(Command)要确定其正确用法时的一个搜寻方式。这个方式是先将游标移到指令上或指令的后面按 F1(快捷键)或点击[Help] --> 。如下图,我们将游标移到 zone cmodel 后面再按 F1键,则视窗右侧会出现有关 zone cmodel 指令的用法说明。
https://www.jscic.com.tw/custom_132989.html
1.4 本书与软体使用手册
1.4 本书与软体使用手册
1.4 本书与软体使用手册
本书为FLAC2D软体的基础入门说明,并不含盖动力、潜变、热力、双相流及用户自定义组合律的专章。此外有关组合律的部份亦仅用到弹性及莫尔-库伦模型,也不做针对组合律的深入探讨。这些未含盖的部份将在进阶篇作进一步的探讨。
本书并不是FLAC2D使用手册的翻译本,但是撰写的内容仍是以这个软体的使用为目的,而英文是FLAC2D采用的语言,因此本书中的一些用词会在中文后面加注英文,或直接使用英文的名词,这样能让读者在软体使用时更觉贴近一些,即便查阅使用手册时也不会发生隔阂。
本书无法含盖使用手册的全部内容,也无法取代使用手册,因此查阅使用手册的相关内容会更能窥得全貌,但本书尽量在较难理解的地方以简单易懂的方式来说明。
https://www.jscic.com.tw/custom_132990.html
1.5 新手上路 - 以 Project 档掌控整个分析
1.5 新手上路 - 以 Project 档掌控整个分析
1.5 新手上路 – 以Project档掌控整个分析
FLAC2D的档案系统是一个以Project档( .prj )来作为「指挥中心」的系统,所有因该project而生成的档案都会自动存入与该project档同一个资料夹里面,这包括图档(sketch)、model档、save档等等。而我们也应该将data档、fish档建立在该project资料夹里面。在project资料夹里面的档案,不管是要调用或储存,都不须写路径,也不须写副档名。
1.5.1 起始(Startup)对话框
当我们开启程式时,首先会出现一个 Startup的对话框(如下图)。
这个对话框有下列几个选项:
Open Project
: 开启既有的project
See the Change made to …
: 更新您的次版本
New to FLAC2D
: 开启使用手册的首页 (针对初学者)
Have a Problem ?
: 获得使用上的支援
Excluder is Now Sketch
: 右侧窗格弹出建模图形介面 Sketch的使用说明
除非您要开启所显示的既有Project,否则您可直接按底下的 [ Cancel] 来离开。另外,该对话框的最上方会显示您目前的版本,主版本(例如 9.00) 约2至3年会有一次更新,而次版本(例如 164) 约2个月更新一次。主版本的更新是收费的,而次版本的更新则是免费的。次版本的更新可点击 See the Change made to …后面的 Last Revisions来下载一个 .msi档并执行该msi档即可。
1.5.2 设置一个新的Project资料夹及Project档
按 [Cancel] 离开 Startup对话框后,视窗会呈现一个空白绘图板(下左图),我们可以在上面绘制草图,其档名被预设为 ModelGeometry 。在左侧窗格的上方是主功能标签 (含 [File]、[Edit]、[Tools]、[Python]、[Help] 五个标签),我们可点击展开 [File] 这个标签来展开其下拉式选单(下右图):
既然这里是针对新手要第一次上路,我们就详细介绍 [New Project] 这个选项。一个优良的档案系统应该是替每一个专案建立一个资料夹,即便只是要为某个专案做预先练习,您也应该替该练习建立一个资料夹,当一个资料夹里面有2个以上的project档 (.prj) 时,档案系统可能会产生混淆情况(程式不会混淆,但您会)。所以一个专案的档案系统应该是如下图中的架构 :
因此,当我们点击 [New Project] 后该作的前二件事就是(1)创建一个Project资料夹(2)创建一个project档。FLAC2D容许您将所有档名都取为同一名称,只要后面的副档名不同即可。
(1). 创建一个新资料夹
点击 [ New Project ] 按钮后即弹出一个 Create a flac2d project file的对话框,如下图。
利用该对话框中的左、右、上箭头图式来选择一个适当的目录,例如 D:\ 。点击 [创建新资料夹] 的图示,出现一个新的资料夹,将之改名为例如 pile。这样就完成了建立一个pile的project资料夹。
(2). 创建一个新的project档
点击进入该新建的资料夹,输入一个project档名,例如 pile --> [Save],则会在FLAC2D视窗的正上方显示project档的名称 pile.prj (见下二图)。
接下来可以有两个选择,建立草图集 ( Sketch Set)或直接建立Data档。不管哪一种,都可以藉由点击工作区上方的 [ select content] 来展开下拉选单作选择 (如下图)。假设我们要建立 data 档,就点击下拉选单的 < New > --> < Data File >。
接著会弹出一个 Add New Data File 的对话框,您可以看到这已经是在 D:\pile 资料夹里面了 (见下图)。我们可以输入 data 档名,例如 pile 。
完成上述工作后,一个空白的文字编辑区将出现於工作区,上方显示 pile这个 data档的名称,而其左侧的 project 窗格在 Data Files 栏位底下亦显示 pile.dat 这个对应於文字编辑器中的档名 (见下图)。
我们随意写三行指令,再点击 [执行] 图示 (见下图)。其中第2、3行的程式码是储存档案名称分别为 ‘initial’ 及 ‘pile’,我们并不需要加上路径或副档名,但是因为档名是一种字串的资料类型所以须加引号。注意: 字串资料永远都须加上单或双引号。
现在我们可以来检视project资料夹的内容 (如下图)。在 pile的project资料夹内有5个档案,包括pile的 prj 、dat、sav、temp档以及一个 initial.sav档。其中,pile.temp是系统自动生成的暂存档,只要关闭程式,该暂存档就会消失。
1.5.3 储存及关闭Project
一个经过编辑但未存档的档案它的档名的右上方会出现 * 标记,若是data档,我们可以 Ctrl+S来储存。但是经执行过的Project档,要储存则需以 [File] --> 来储存始能消除project档名右上方的 * 标记。另外,若要关闭该project则以 [File] --> < Close Project > 来进行。但是千万不要去误击其底下的 < Quit > ,那是关闭程式的选项。
1.5.4 再次开启project档
当我们关闭project (按 [File] --> < close project > ) 要再重新分析旧project,或是重新开启FLAC2D,其做法都是相同的。当重新起开启程式时,可以选择Startup对话框中Open Project: 里面最近做过的project并按 [OK] 来开启,或点击 [File] --> <Open/Import> (下左图) -->在弹出的Open对话框内选择 Pile资料夹(可利用捷径及左、右、上箭头),此时可见project资料夹内的所有档案 (下右图) --> 点选 pile.prj档来开启这个project。这时project的视窗将被开启,project窗格中会呈现 data、sav等档案名称。若要编辑某一个data档,只要双击该档案名称,则会启动文字编辑器,并显示程式码。
这里的pile.prj里面没有什么内容,因此重新开启时,程式并没有询问任何问题就直接开启了,但是对一般略有内容的project,当要重新开启时,程式可能会询问二个问题 : 是否要将目前的project另存新档,并在新档内作编辑分析(下左图),若无此需要则按[ Discard]。接著可能会问的第二个问题是当project被关闭时某个档案还是开启的,是否要复原它 ? (下右图),我们可以直接按 [ Yes ]。
FLAC2D使用Project资料夹来容纳一个project里面所有建立、储存或运算延伸出的档案,这些档案将由一个我们所建立的project档 ( xxx.prj)来管理。在这个资料夹内的档案,不管是储存或调用都不须给予路径及附档名。除非我们只是要做一些简单的测试,或可直接写一个 data档来执行,否则当我们的project牵涉到储存档案、草图档、model档、Fish档时,建立一个Project资料夹及Project档是必要的。
另外,FLAC2D容许两个project档同时进行,您可以启动两次FLAC2D来进行不同的Project,即便是同一个题目内容,也最好分开为两个独立的资料夹,以避免让自己混淆。
https://www.jscic.com.tw/
枫政科技工程有限公司