陈育民对FLAC3D常见问题的解答.docx
《陈育民对FLAC3D常见问题的解答.docx》由会员分享,可在线阅读,更多相关《陈育民对FLAC3D常见问题的解答.docx(50页珍藏版)》请在冰豆网上搜索。
陈育民对FLAC3D常见问题的解答
目录
1.FLAC3D的固流耦合计算模式1
2.FLAC3D固流耦合学习小结5
3.关于流固耦合的问题6
4.也谈采用FLAC3D对地下采矿的模拟8
5.FLAC3D本构模型开发8
6.FLAC3D自定义本构模型11
7.数值计算中初始应力场的模拟13
8.FLAC3D应变分析13
9.FLAC3D的调参14
10.开采沉陷垂直剖面等值线的生成15
11.FLAC3D的应变硬化软化模型16
12.FLAC3D的塑性流动格式17
13.FLAC3D的动画制作17
14.地下连续墙基坑开挖支护18
15.一个汇的小例子21
16.用3DEC生成岩体随机节理网络23
17.固结小算例24
FLAC3D的固流耦合计算模式英文原文26
1.FLAC3D的固流耦合计算模式
FLAC3D的计算模式中是否需要做孔压分析取决于是否采用configfluid命令。
1无渗流模式(不使用configfluid)
即使不使用命令configfluid,仍然可以在节点上施加孔压。
这种模式下,孔压将保持为常量。
如果采用塑性本构模型的话,材料的破坏将由有效应力状态来控制。
节点上的孔压分布可由initialpp命令或watertable命令来设定。
如果采用watertable命令,由程序自动计算水位线以下的静水孔压分布。
此时,必须施加流体密度(waterdensity)和重力(setgravity)。
流体密度值和水位位置可以用命令printwater显示。
如果水位线是由face关键字来定义的,则可用命令plotwater命令显示水位。
这两种情况,单元的孔压都由节点孔压值平均求出,并在本构模型计算中用作有效应力。
这种计算模式下,体积力中不反映流体的出现:
用户必须根据水位线以上或以下相应地指定干密度和湿密度。
使用命令printgppp和printzonepp可分别得到节点或单元孔压。
plotcontourpp命令可绘出节点孔压云图。
2渗流模式(使用configfluid)
如果使用命令configfluid,则可进行瞬时渗流分析,孔压改变和潜水面的改变都可能出现。
在configfluid模式下,有效应力计算(静态孔压分布)和非排水计算均被执行。
除此之外,还可进行全耦合分析,这种情况下,孔压改变将使固体产生变形,同时体积应变反过来影响孔压的变化。
如果采用渗流模式,单元孔压仍由节点孔压平均求出。
但这种模式,用户只能指定干密度(不论是水位以上还是以下),因为FLAC3D将流体的影响考虑到了体积力的计算中。
采用渗流模式时,渗流模型必须施加到单元上,使用命令modelflisotropic模拟各向同性渗流,modelflanisotropic模拟各向异性渗流,modelflnull模拟非渗透物质。
注意,力学模型为空的单元并不代表渗流模型为空。
流体性质(参数)可施加到单元或节点上。
各向同性渗透率、孔隙率、比奥系数和非排水热系数等单元流体性质由命令property施加。
对于各向同性渗流,渗透率通过perm关键字赋予。
对各向异性渗流,渗透率的3个主值采用关键字k1,k2,k3赋予,主方向由关键字fdip,fdd,frot确定。
渗透率的主方向服从右手系统。
fdip和fdd分别为k1和k2确定的平面的倾向和倾角。
frot为k1轴和倾角矢量的旋转角。
如果不特别指定,比奥系数默认为1,孔隙率默认为0.5。
节点的渗流性质由命令initial指定。
这些性质包括流体重度、流体体积模量、比奥模量、流体抗拉强度和饱和度。
每种性质在空间上都可以变化。
流体重度也可以用water命令给出。
在渗流模式里,有必要知道可压缩性被定义在以下两种参数中:
(1)比奥系数和比奥模量;
(2)流体体积模量和孔隙率。
第一种参数表征的是固体颗粒的可压缩性(对不可压缩颗粒,比奥系数设为1)。
对第二种参数,固体颗粒被认为是不可压缩的。
单元属性可由命令printzoneproperty显示,节点属性由printgp命令显示。
流体重度,如果随着水位位置被确定,则可由printwater命令显示。
渗流性质可由命令plotbcontourproperty显示。
对于各向异性渗流,渗透率的各球形分量可通过使用单元的属性关键字kxx,kyy,kzz,kxy,kxz,kyz来显示(注意,这些球形分量不可被直接初始化)。
初始节点孔压分布的施加对于渗流模式和非渗流模式都是一样的(如,要么用initialpp命令或用watertable命令)。
在指定节点可用命令fixpp或freepp对孔压固定或释放。
流体涌入或渗漏或可由命令apply施加。
渗流计算由命令setfluid和solve控制。
如,setfluidon或off命令开启或关闭渗流计算模式。
具体使用开启或关闭模式取决于渗流分析的耦合程度。
渗流分析结果以下面这些命令给出。
命令printgppp和printzonepp分别给出节点和单元孔压。
节点和单元孔压历史可由命令histroygppp和命令historyzonepp进行监测。
对于瞬时计算,孔压与时间的关系可由命令historyfltime监测。
命令plotcontourpp绘出节点孔压云图。
命令plotcontoursaturation绘出饱和度云图。
命令plotfluid绘出流量矢量图。
渗流模式的所有信息由命令printfluid命令给出。
FISH还提供了一些渗流变量。
其中一个与节点有关的变量gp_flow,只能通过FISH函数使用。
该变量描述了通过节点的净流入或流出量。
因为可以提供一个系统总的流入或流出量,这些流量的统计在孔压固定的边界是很有用的。
渗流边界条件,初始条件
FLAC3D默认为不透水边界,即认为所有节点上的孔压随着从邻近单元流入或流出的量发生自由变化。
可以使用命令fixpp将节点上的孔压设为“自由”,也可使用freepp使节点上的孔压“固定”。
如果孔压固定,流体可以在外边界上流入或流出节点。
下面总结这两种边界条件的影响:
1,孔压自由
这是默认的不透水边界条件。
节点与外界之间不发生流量交换。
系统根据当前饱和度值和流体是否形成涡凹现象来计算压力和饱和度变化。
2,孔压固定
这是一种流体通过外界流入或流出的边界条件。
如果设定孔压为0,饱和度才可能变化。
否则,饱和度被设为1(FLAC3D假设孔压只在完全饱和材料中存在)。
孔压不能被固定在低于拉力极限的值,如果出现这种情况,FLAC3D会将其设定到拉力极限值。
如前所述,边界条件不是任意的。
FLAC3D在进行计算前会“检查”并“修正”这些条件。
可使用fixpp命令将孔压固定在某个值,也可在外边界或内边界上使用命令applypp。
如果边界条件被用于一个非表面节点,则必须加关键字interior。
apply命令具有可以用“历史”命令进行监测的优点。
渗流边界条件可以通过apply命令用在单个或部分节点、单元面或单元上。
命令applypwell为边界节点指定了一个流入或流出井。
如果加上interior关键字,则该条件用于内部节点。
命令applydischarge和applyleakage为边界单元的表面分别指定了涌出和渗漏边界条件。
命令applyvwell为指定区域内的单元提供一个流速。
这些边界条件除了applyleakage外,均可使用history监测命令。
具有固定孔压节点就好像是流入源或流出源。
没有直接的命令显示这些节点的流入或流出量。
但可通过FISH变量gp_flow来记录。
孔压的初始分布,孔隙率,饱和度和流体属性可通过命令initial或property施加。
如果还加了重力,则孔压初始分布应与重力梯度,水的重度和节点饱和度和孔隙率相容。
如果这些初始分布不相容,则计算开始时所有单元中将出现流体流动。
因此,应在模拟开始时设一定的计算步来检验初始条件是否相容。
如果模型中含有接触面,有效应力将沿着这些接触面进行初始化(即:
在节点应力初始化时,认为接触面应力包含孔压)。
watertable命令将包含沿着接触面的孔压,这是因为定义在单元节点上的孔压也在接触面节点上。
如果接触面的上下两面连在一起,在没有阻力时,将发生穿越接触面的流体流动。
但程序不对沿着接触面的流体流动(裂隙流)进行计算。
单渗流与渗流耦合问题
FLAC3D既能进行单渗流分析,也能进行固流耦合分析。
耦合分析可由FLAC3D内置力学模型完成。
但要注意,渗流模型中的空单元并不是力学空单元。
必须用命令modelfl_null给单元赋予流体空属性。
对于耦合过程,FLAC3D提供了几种计算模式。
其中之一是假设孔压一旦被赋予便不再改变。
该方法并不要求任何额外空间存储计算过程。
除此之外涉及到渗流的计算模式都要求使用命令configfluid。
命令modelfl_iso使所有单元中都能发生渗流。
不同的耦合计算模式在下面讨论。
一般情况下,在能跟所模拟问题的物理过程相似的情况下,应使用尽可能简单的模式。
计算模式的选择根据以下几个方面确定。
时间比例
对所需模拟的渗流或耦合问题用FLAC3D估计与涉及的不同进程相关的时间比例是非常有用的。
对有关研究问题的时间度量和扩散性的认识有助于估计最大网格宽度、最小区域尺寸、时步大小和计算可行性。
如果不同进程的时间比例相差太大,则很可能采用一种简单的(非耦合)方法。
时间比例可用特征时间给出。
以下这些由量纲分析得出的定义,都是基于解析的连续源理论表达式。
它们可用于得出FLAC3D分析的大致时间比例。
力学过程特征时间、流体扩散过程特征时间
流体扩散率
FLAC3D中使用了取决于控制过程的储水系数的几种形式:
流体存储系数、地下潜水相存储系数、弹性存储系数
以上定义,有几点特性值得注意:
(1)因为FLAC3D中显式的时步对应于最小区域中信息从一个节点传到下一节点所需要的时间,时步的大小可用计算特征时间公式中特征长度的最小区域来估计。
重要的是注意FLAC3D中在用流体扩散率(即使是在耦合模拟中)计算显式流体时步。
因此,时步的大小可用特征长度的最小区域尺寸来估计。
(2)在饱和流体问题中,简化的体积模量不但导致时步的增加,同样导致到达稳定状态时间的增加,所以总步数增加,该总步数可用模型和最小区域的特征长度来估计。
(3)在部分饱和流体流动问题中,可通过调整流体体积模量加速收敛以趋于稳定状态,但要注意不可将体积模量减小太多以至产生数值不稳定。
数值稳定条件能由流体储量在一个特征长度区域的高度上必须保持低于地下潜水储量的要求推导而出。
(4)为避免扩散问题中的边界效应,模型的特征长度必须大于某个尺度。
同样,最小模拟时间由某个关系式控制。
(5)在耦合流体问题中,实际扩散率由流体刚度与岩土介质的刚度比来控制。
完全耦合模拟方法的选择
用FLAC3D进行完全耦合的准静态固流耦合分析通常要耗费大量时间,且有时候并不必要。
很多情况下,可使用不同程度的非耦合方法简化分析并加快计算速度。
下面的例子给出了对应于流固耦合的不同水平的FLAC3D模拟方法。
选择计算方法时有3个主要的因素需要考虑:
(1)模拟时间比例和扩散过程的特征时间;
(2)耦合过程中强制扰动特性;
(3)流固刚度比。
时间比例
首先通过从扰动的开始阶段计算时间来考虑时间比例因素。
定义分析所需要的时间(模拟时间),对应于耦合扩散过程的特征时间。
短期行为(不排水)
如果对应于耦合扩散特征时间,分析所需时间非常短,在模拟结果中流体流动的影响几乎可以忽略不计,则可采用不排水模拟(configfluid,setfluidoff)。
数值模拟中不涉及真实的时间,但如果给流体体积模量一个实际值,则体积应变将导致孔压的变化。
长期行为(排水)
如果分析所需时间大于耦合扩散特征时间并在模拟时间到达时排水,则孔压场可不耦合到立场中。
稳定状态的孔压场可用单纯流动模拟确定(setfluidon,setmechoff)(不代表扩散率),然后力学场可通过在设置流体模量为0的力学模式中(setmechon,setfluidoff)计算到平衡状态获得。
(严格说,这种方法仅对弹性材料有效,因为塑性材料力学行为是与路径有关的)。
另外一种描述时间比例的方法是不排水行为和排水行为。
严格地说,不排水表示与模型外界无流体交换。
排水则是与模型外界有完全的流体交换,这就意味着流体压力能在各处达到平衡。
由于不排水试验通常所需时间很短,而排水试验则需要很长的时间以使多余的流体压力消散,因此,“排水”和“不排水”这两个词常分别和“短期行为”和“长期行为”联系在一起。
在现场,“短期行为”通常意味着流体流动可以忽略,而“长期行为”则意味着几乎所有压力降都变为0(这需要一个很长的过程)。
注意在无渗流计算模式(不使用configfluid)和短期行为模式(使用configfluid,setfluidoff)的模拟过程中,由于施加的孔压发生变化而产生的总应力的修正并不是通过程序在内部执行。
但是,孔压增量可用FISH函数监测,并用于减小循环到力学平衡前的总法向应力。
如果地下水位已在网格内部移动,同时需要调整饱和及非饱和的质量密度。
强制扰动到耦合进程的特性
将扰动强加到完全耦合的固流系统可能导致流体流动边界条件和力学边界条件的改变。
如,流向位于层间含水层内的井的瞬时流体流动是由井内孔压变化引起的。
作为公路路堤建设成果的饱和地基的固结是由路堤高度确定的力学载荷控制。
如果扰动是由于孔压的变化,很可能流体流动进程可不与力学过程耦合。
如果是固体产生的扰动,非耦合的程度取决于流固刚度比。
刚度比
相对刚度比对用于解决固流耦合问题的模拟方法有重要影响:
相对刚性岩土介质(相对刚度比远小于1)
如果岩土介质骨架刚度很大(或者流体是高压缩性的)且相对刚度比很小,孔压的扩散方程可以不耦合,因此扩散率有流体控制。
建模方法取决于流体或固体扰动的力学机制:
(1)在固体控制的模拟中,孔压可假设保持不变。
在弹性模拟中,固体表现的力学行为好像流体不存在;但在塑性分析中,孔压压力的出现可能导致破坏。
这种模拟方法在边坡稳定性分析中使用。
(2)在孔压控制的弹性模拟中(如由于流体被挤出导致的沉降),体积应变不显著影响孔压场,且流体的计算可独立进行(setfluidon,setmechoff)(这种情况下,扩散率是精确的,因为对于相对刚度比小于1,总压缩系数等于流体扩散率)。
一般地,孔压变化会影响应变,且这种影响可以通过随后在力学模式中将模型循环到平衡状态来加以研究(setmechon,setfluidoff)。
相对柔性岩土介质(相对刚度比远大于1)
如果岩土介质骨架刚度很小(或流体不可压缩),且相对刚度比很大,则岩土骨架控制系统扩散率的耦合。
模拟方法也取决于控制的力学机制。
(1)在力学控制的模拟中,计算可能比较耗时。
FLAC3D的显式时步可能会很小,为增加时步,可减小流体模量。
注意,流体模量不应该设置得大于流体的实际值。
(2)在多数孔压控制系统的实际例子中,经验表明,孔压场和力学场的耦合是微弱的。
如果介质是弹性的,可用单纯流动模式(setmechoff,setfluidon)计算,然后在单纯力学模式(setmechon,setfluidoff)中计算到平衡。
必须注意为保持系统的扩散率(以及特征时间比例),流体模量必须在流体计算阶段调整到某一值,且在力学计算阶段为0,以防通过体积应变进一步调整。
对于建模方法的选择,建议根据以下步骤进行。
首先,对于特定的问题条件和特性,确定扩散进程的特征时间,且将此时间同所关注的实际时间进行对比。
其次,考虑对于系统的扰动是由孔压控制还是由固体控制。
第三,确定流体刚度对固体基质骨架的刚度比。
最后,基于这3个因素综合考虑选择合适的建模方法。
在建模时需注意:
(1)为建立无地下水流动的有效应力分析的初始条件,用watertable或initialpp命令,或者用FISH函数建立稳定状态的孔压分布。
指定正确的位于地下水位以下区域的湿密度和地下水位以上区域的干密度。
(2)为建立地下水流动的有效应力分析的初始条件,如果地下水位位置未知,用initial命令或FISH函数建立稳定孔压分布,或者指定setfluidon和setmechoff并逐步计算到稳定状态。
将流体模量设为一个较小的值以加快部分饱和系统的收敛速度。
注意设定的流体模量值应满足数值稳定。
(3)为建立孔压驱动分析的初始条件,如果地下水位位置未知,用initial命令或FISH函数建立稳定孔压分布,或者指定setfluidon和setmechoff并逐步计算到稳定状态。
将流体模量设为一个较小的值以加快部分饱和系统的收敛速度。
注意设定的流体模量值应满足数值稳定。
(4)非流固耦合方法推荐用于孔压驱动系统,且在相对刚度比远大于1时谨慎使用。
注意在单纯流动分析阶段调整流体模量的值以满足耦合扩散率是正确的。
(5)完全耦合分析中,注意对于相对刚度比远大于1时的情况,如果流体模量调整得低于某个值,时间响应将会接近于无限大的流体模量的时间。
2.FLAC3D固流耦合学习小结
通过几天来对FLAC3D手册固流耦合部分的翻译和学习,对FLAC3D在流体方面的应用有了大致的了解。
其计算模式主要分为几种情况:
无渗流、非耦合方法以及各种不同程度的固流耦合方法。
这些方法都有各自的适应条件,应根据需要模拟问题的具体情况加以选择。
总体来说,固流耦合涉及到了两种不同形态物质的力学行为研究甚至二者的相互作用,这比单一介质的分析复杂多了,其参数也比单一介质分析要多得多。
众所周知,数值模拟的一个最大难题便是参数的确定,参数越多,各种不可预测因素就越多,直接影响到数值计算的有效性和准确性。
尤其是对于岩土工程,各种不确定因素太多,很多人由此对数值模拟结果产生了怀疑,认为那是花架子,放在项目报告里只有唬人的作用。
中尉对此不敢苟同。
任何技术的发展均遵从实践-理论-实践的过程,经验以及由经验得出的方法确实在很多工程中起到了不可抹杀的作用,但经验如果上升不到理论,就永远是经验,不能是“放之四海皆准”的真理,真理虽然没有绝对,但在一定时期内它是推动整个技术进步的源动力。
没有理论,就不能把实践上升到更高程度的实践。
数值模拟目前在所有领域内均取得了广泛的应用便是其具有强大生命力的最好证明。
诚然,岩土工程领域是有很多不确定因素,数值模拟结果的不尽人意应该是多种因素造成的,我们为何不检讨获取数值模拟参数的现场观测手段、实验室手段,而去质疑这种方法本身?
在这几天的学习过程中,还有一点对翻译的额外体会。
以前也看过很多中国人直接翻译自老外的教材,以计算机教材最多,看的过程中总感觉翻译的痕迹太重,可当自己翻译出来时,才发现无论怎么修改,润色,仍然晦涩不堪。
中尉的一位朋友对这个问题曾有评论,中尉很以为然,援引之:
中文的表达方式惯用短句,层层推进,像一条河,后浪推前浪,引人入胜。
而英文的句子像一棵棵枝繁叶茂的大树,句子套句子,得透过无数的从句、定语去寻找主干。
翻译者或许是在两种思维方式中穿梭得迷了路,翻译过来的句子披着中文的外衣却完全是英文的表达方式,看到主语之后就是一大堆莫名其妙的短句、分号、连接符,最后找到谓语、宾语时已经不知所云。
3.关于流固耦合的问题
qinjianshe
记住概念:
ko为有效应力之比,
ini应力为总应力
按此原则计算初始应力场
水平应力=k0×竖向有效应力+水应力
hfm009
请问
水平应力=k0×竖向有效应力+水应力,其水应力还需要乘以Porosity吗?
下面是我所建立的模型,总觉得初始应力场有点怪,调试了好几天,还是老样子,还望抽空指点!
new
configfluid
defpara_model
wid_x=70
h_model=-100
rad_tun=3.5;隧道半径
rad_tunnel=(-1)*rad_tun
width_m=1
dep_r1=20
dep_r11=(-1)*dep_r1
dep_r2=15
dep_r22=-dep_r2
depth_r=-(dep_r1+dep_r2)
wid_add=wid_x-dep_r1
h_add=-dep_r2-dep_r1-dep_r1-h_model
end
para_model
genzoncylp000depth_rp1addrad_tun00p2add0width_m0p3add00rad_tunsize618rat1.211
grouptunnel
genzonradcylp000depth_rp1adddep_r100p2add0width_m0p3add00dep_r1&
dimrad_tunrad_tunrad_tunrad_tunsize5188rat1111.2
genzonebrickp0dep_r10depth_rp1addwid_add00p2add0width_m0p3add00dep_r1&
size514rat1.311
genzonreflectnormal001origin00depth_r
genzonebrickp000h_modelp1adddep_r100p2add0width_m0p3add00h_add&
size414rat111
genzonebrickp0dep_r10h_modelp1addwid_add00p2add0width_m0p3add00h_add&
size514rat1.311
;assignnamestogroupsofzones
grouprock1rangegrouptunnelnot
genzonebrickp000dep_r22p1adddep_r100p2add0width_m0p3add00dep_r2&
size413rat111
genzonebrickp0dep_r10dep_r22p1addwid_add00p2add0width_m0p3add00dep_r2&
size513rat1.311
grouprock2rangegrouprock1notgrouptunnelnot
genzonreflectnormal100origin000