flac3d常见问题总结.docx
- 文档编号:18394777
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:13
- 大小:23.17KB
flac3d常见问题总结.docx
《flac3d常见问题总结.docx》由会员分享,可在线阅读,更多相关《flac3d常见问题总结.docx(13页珍藏版)》请在冰点文库上搜索。
flac3d常见问题总结
flac3d学习有一段时间,过一段时间没学究忘了很多,所以学习最好不要放下来。
对自己总结,也是学习的一种。
flac3d命令很多,用到的不多,就那么几个,
基础的就不多说了进入正题:
个人认为如果学习flac3d最好把flac的命令进行总结一下。
做模型就好比拼盘:
要地应力,就把地应力的那段命令摘入,要出图,加入plot的相关命令,要出动画,加个动画命令,所以总结好命令后,以后做模型,只要把命令组一条条的对应放入,一个程序就出来了,后期调试一下,改相关参数就可以了。
接下来,我把自己弄好的整理一下,按照我上面的思路进行建模
什么人建模都会有自己的喜好,下面说一下我自己
建模第一步就是建立一个全新的txt文件(不论命令大小都是如此),这样的好处是,模型可以修改
方便快捷。
而且还可以自我查错
建立新的txt后,第一行命令就是new,加new的目的是为了防止其他命令的影响(相当于刷新)再执行其他命令前刷新一下。
不用想,接下来就是建模了,建立模型,不同人有不同的方法,有的人喜欢建完后在对模型开挖最终得到自己想要的模型。
modelnull等;有的人喜欢用各种带缺角的组合成最终的模型。
具体建模看各自的喜好,我觉得,不同点是建模的网格划分有区别,用带缺角的组合模型网格划分更好
最好把常用的集中模型记下来组成各种句子,以后用的时候直接插入
例如:
genzonebrick/radbricksize*,*,*,*ratio*,*,*,*
建模的过程中,或同一个文件中有重复应用的命令,就可以用宏命令了,
宏命令
macro名称‘命令的内容’
例:
macroshiping’plotconzdipoutlineon’
用shiping代替后面的引号里的东西。
在建模中只要有相同的都可以用shiping代替,缩减了书写命令的时间,整体上也能让人看的更明白
注意点是,你命名的符号最好跟falc自带的命令不要重复,我的处理方法是,名称后带数字
如shiping1
如果你想修改宏对象,改变命令的内容,
在名称上加单引号就是替换的意思
例
macro’shiping1‘‘新的命令’
这些很多课本里都有讲,不在叙述
很多时候我们要对单一的对象进行操作,例如进行模拟运算后,只想单独的显示一部分的内容,单一的土层,锚杆,等就要用到group
group给对象命名,
例:
在genzonebrick------size----groupname(name随便取,不要跟flac的已有的命令重合就行)这里的意思就是对这个体进行了命名
接下来想把这一块模型挖掉加
modelnullrangegroupname
group的用法:
1。
group直接加到模型的后面相当于给整个模型命名
namerangexxyyzz给一个范围的体命名
继续学习,昨天说到了建模,我是搞巷道的,重点讲巷道。
巷道建模,用到brick,radbrick,
radtunnel,radcylinder这4个模型比较多,一般模型都是建一半,让后用镜像命令复制另一半,
建模也是大家有各自不同的习惯,总的有两种,一种用点法,就是吧模型的所有关键点都输入进去,这种方法可以用来建立不规则的模型,弊端就是工作量大,不当在设点的时候考虑多,输入的时候也很麻烦。
第二种。
按照模型只要取三个点确定xyz三周的方法,有点输入简单,弊端,只能建立规则的模型,像要建立,路堤模型,边坡模型,就只能是按照数点的方法建模
range的命令:
书上有,但是我用自己的话说一下他的用途
1:
取圆球面的范围,就是同一个中心,不同半径之间夹的那一部分,用在给球面施加力,约束时用该命令,命令:
rangeannuluscenterxyz(中心坐标)radiusr1r2(两半径)
想要表达的是球面时,r1r2取值相差小点即可,如radius这时范围就是半径为3的面。
2。
圆柱的环面施加力或约束时也用到该命令。
命令
rangecylinderend1xyzend2xyzradiusr(end是表示柱体断面的中心点坐标)
rangeplaneabove表示的是z大于0的上部结构
rangeplaneblow表示的是z小于0的下部结构
rangeddadipboriginxyz表示的是走向角度a,倾向角度b的面
dd表示,当面与xoy面相交时的线的垂线与y轴正向的夹角,顺为正,说白话,就是面的指向方向
面是朝那个方向的意思。
dip面与xoy面的夹角,与z轴负向为正,
origin表示面经过xyz点
rangenormalxyz法线方向为xyz的面
rangenot没试用过(范围外的东西,想想用到圆上取范围非常好)
现在回到建模
上面说过建模一般只建一半然后用reflect命令(镜像)
镜像首先得有个面吧,就目前我用的面都是xoy面yoz面。
估计大家也很少用到斜面镜像吧
面的命令上面range里说过了
这里就不讲了
命令:
reflectnormalxyzoriginxyz(根据法线和过一点建的面)最常用至于
实际使用过程中有人问道:
normal-100与normal100的区别,我试过两者的效果是一样的,没区别,虽然方向不同,但表达的是同一个面
reflectddadipboriginxyz这个就是用里建立斜面镜像的,各个符号的意思上面讲过,不重复了
有一点注意了,镜像的时候如果是模型镜像的话,相当于在建立一个模型,故,在reflect的前面要加
建模的关键字,genzonereflect。
。
。
。
。
。
先讲点后期出图的,然后总结一下
(plotsetrotation20030设置观测角度的
plotsetcenterauto设置观测中心点
plotsetmagnification设置放大倍数的
plotshow)显示
这一整部分就是我开头说的要自己整理出来的句段了,等以后用到的时候直接插入,作用就是显示模型的。
任何模型的显示都可以用他来表示。
很好很强大。
如果还要显示其他功能就把相应的命令在插入上面那部分就行了
plotsetrotation20030
plotsetcenterauto
plotsetmagnification
plotaddsurfaceyellow
plotaddaxes
plotshow
这个就是我常用来查看模型的命令,大家也可以自己整理一分,
总结,做个实例,给大家看看
隧道,半圆直墙隧道
分两步
一,建模,
二,显示
建模建一半然后镜像对吧
尺寸,自己在草纸上画好,点坐标都弄清楚了
把以前的句子直接套下来
genzoneradcylindersize425614(网格数量,自己看着办)ratio111&
p0000p15000p201000p30050dimension222
这是建上半部分
genzoneradtunnelsize425614ratio111&
p0000p100-50p201000p35000dimension22
建立下半部部分
建一半后,用镜像
命令也讲过了直接插入,
genzonereflectnormal-100origin000
最后一步就是显示给大家看
那一打包显示直接插入
plotsetrotation20030
plotsetcenterauto
plotsetmagnification
plotaddsurfaceyellow
plotaddaxes
plotshow
。
整体的建模加显示,的命令就完了
合一块建立一个新的txt开头加一个new
new
genzoneradcylindersize425614ratio111&
p0000p15000p201000p30050dimension222
genzoneradtunnelsize425614ratio111&
p0000p100-50p201000p35000dimension22
genzonereflectnormal-100origin000
plotsetrotation20030
plotsetcenterauto
plotsetmagnification
plotaddsurfaceyellow
plotaddaxes
plotshow
整体就这样了,大家可以粘贴一下看看。
plot命令大集合:
显示切片的命令
plotsetplaneori000norm010
plotconzdplane
这两行命令,用来显示指定面上的位移变化云图。
(吧第二行改改,还可以显示应力云图,等其他)
plotconsyyy向应力云图
plotconszzoutlineonz向应力云图加显示网格
plotconszzeffectiveonz向有效应力
plotconszzinter1e4云图显示增量(后面的值越小,图上颜色条带就越细,)
plotconszzmin-10e4显示最小值,图上小于这个数的值都用同一色表示
plotconszzmax10e4显示最大值,图上大于这个数的值都用同一色表示
plotfipoutsideon显示力的箭头
建模完事后就要给模型赋值,赋参数了,关键词,model
modelmor(赋摩尔库伦模型,想要什么模型改相应的词)
proden2500(密度)bulk2e8体积模量,shear2e8(剪切模量)co2e6(内聚力)fric45(摩擦角)ten1e6抗拉强度。
range...........(我们要赋值的范围)
给模型赋值就是hi这么简单,难在参数的选取。
现在看边界,如果是不动面,用fixxrange。
。
。
。
。
如果边界带速率,或位移用ini。
。
。
setgrav00,
inidens1000
设置重力就一定要设置密度
不考虑重力就不要设计密度。
两者共存的,设计程序的时候一定要记的
setmechforce50
solve
用SET命令设定了最大不平衡力的上限值为50N,即:
计算的最大不平衡力一旦小于此值,我们便人为模型达到了平衡状态。
求解过程终止。
设置这个目的是在一定精度要求下,加快计算(值越大,算的量越少,花的时间也越少)
说到这里,add与set的区别
add原来有的加新的用add
set原来没有的,设置用set
plotcreateGravV
plotsetplanedip=90dd=0origin=3,4,0
plotsetrot15020
plotsetcenter
plotaddboundbehind
plotaddbcontszzplane
plotaddaxes
plotshow。
如这个命令,显示图像的时候命令有很多,
那么我们想显示别的图像,又不想吧这个弄好的图像丢掉
则用plotcreatename建立一个图像,在建立新的图像时
plotcreatename1(新的名)
显示以前的图像
那么输入如下命令:
plotcurrentname。
另一种方法,输入:
plotshowname
这里有一点最好开始的时候将网格剖分的相对稀疏一些(1000~1500个单元
左右),先求解一下,看看结果,然后再根据大致的结果有针对性的增加模型的
网格数,以得到更精确的解答。
更快的检验一下自己的模型是否建错了
不同的区域定义不同的本构模型
modelmohrrangez=0,5
propClayeyGravelrangez=0,5
在定义参数后面加个range范围
为了避免在输入命令时总要通过range+全局坐标域的方法来限定该命令执
行的区域,我们可以先通过range命令来给不同的区域命名,然后就可以用range
+区域名的方法来限定范围了。
这样就避免了每次输入命令要限定在该区域执行
时,都要输入一遍坐标范围的麻烦。
具体如何给区域命名,以及日后如何用区域
名来限定该区域,可以看下面这个例子:
rangenametrenchx=-1,1y=0,4z=-2,2
modelnullrangetrench
今天做方案,没时间,就讲几点得了,1:
右手法则,建立模型时,的点的排放时有规律的,
方法如下,拿出右手
伸直了
4指合并指向就是p0到p1的方向
掌心指向就是p0到p2的方向
拇指与4指垂直的方向就是p0到p3的方向
很多人说网格后的云图有带齿什么的,改进的方法就是重复用下面的命令
GenADJust
用此命令来微调网格,使之离散平滑。
该命令可以连续使用以增进平滑效果的。
ploblogro可以看到不同的group的颜色分布(例不同的土层定义组后,就可以用此命令显示不同的色了)
如何查看剖面上任一点的位移值
printgpdisprangex()y()z()或
printgpdisprangeid
plotgpdisprangex()y()z()或
plotgpdisprangeid
很多人都是这么做的,我也是学习,
initial与apply有何区别
initial初始化命令,如初始化计算体的应力状态等;
apply边界条件限制命令,如施加边界的力、位移等约束等。
initial的应力状态会随计算过程的发生而发生改变,一般体力需要初始化,而apply施加的边界条件不会发生变化
如果想看模型在计算过程中的变化情况
Setmovieavistep1file;定义动画,动画记录的频率为1时步一频率(计算量大的时候就没必要1时步的记录,可以10,100时步的记录,减少电脑的使用)
Moviestart;动画开始
histn=5:
N(Nstep)=5指定了每迭代计算5次
记录一次相关的值(如果不指定,则系统默认值为10)
histunbal命令的第二行指定记录
最大不平衡力(themaximumunbalancedforce)
histgpzdisp4,4,8记录坐标值为
(4,4,8)的节点Z方向的位移(这个用的多,查看收敛量时就是这个命令,上面两个个人人认为用处不大,也很少用过)
如何在程序中进行暂停,并可恢复计算
答:
在命令中加入pause命令,用continue进行继续
个人认为这个命令非常好
用在我们分步求解中想得到某一个过程中的结果,不用等到全求完,还可以在分布求解错误的时候就进行改正。
而不是等到结果出来
关于dd、dip的理解:
不同人有不同的理解,我的理解就是dip面与水平面的夹角
dd是面与水平面的交线的垂线与y轴的夹角
1)在plothistmvsn的形式里,m代表y轴,n代表x轴(不管m,n的正负);5L0D#_1~1C-L
2)"-"表示对其值作"mirror",如果大家使用AUTOCAD的话就明白"mirror"的含义了,比如上面的hist1gpydisp的值是0~100,那么vs-1就变成-100~0.以此类推.
3)为什么要这么做呢主要是为了符合岩土工程的习惯需要,例如桩载荷试验曲线,沉降曲线等都不是画在第一象限内.
最近看有很多对后处理中的收敛有很多不同的想法,
自己也总结一下
plotskdisscale显示位移矢量箭头的后面的scale默认的是
3越大箭头越大
magf也是放大变形的意思,但是不能放在skdis的后面,计算机会出错
回到主题,收敛数据,我们想得到一条收敛量随时间变化,或者不同应力直间关系的图线
方法
1用setlogon然后把数据导入excel或者其他的处理软件进行处理
2.用histid=1(不写id的话,电脑会自己按123456的顺序进行排序)gp(点,如果是体的话
用zone)zdisxyz(xyz点处z向位移)
这里应力应变之类的都是用zone,位移之类的都是用gp
最后相要出相应的结果用命令
plothist1;
如果相要的不同的id之间的关系(比如说竖向应力szz与剪应力sxz的关系)命令
plothist2v3(2,3是对应应力开始设的id号)
flac3d程序里面自动设置的步长是10,也就是说每隔10步记录一次,这样如果模型小得出的结果就数据少图线不光滑,如果模型大,得到的数据多计算文件又太大,浪费空间。
设置步长的命令
sethist_repn(n就是步长)
上面说的plot多是flac里显示的
如果想把结果存到别处去
用命令
histwrite2v3file(其实2相当于x轴,3相当于y轴)
设置影片格式上面见过,温故而知新
setmovieavistep1(存储步长,可以任意设,就是每隔几步存储的意思)file
moviestart
分步开挖就是分布计算
每多一步(多添一块土,或多开挖,多掘进等)就计算一下,加一个solve即可
如果想保存每一步的结果和图,那就在每一步的solve后面添加保存命令设立相应的文件,以后调用即可
1.设定初始地应力场是十分必要的没有地应力场进行计算会使模型在重力作用下发生过大的变形从而不能与实际情况相符
2。
apply是施加的外力ini是初始的内力。
3.有人问如果改参数这样做的话地应力不是被人为改变了吗为什么要人为加大它的参数呢,很不合理
回答:
不能改变bulk和shear模量,因为这两个参数是用来计算应力的。
而con和fric是用来判断破坏状态的。
如果将bulk和shear模量改变了,那你在重力条件下计算的应力就不真实了。
咱们改大参数的目的是让模型在不破坏的条件下得到正确的应力,所以只有将con和fric变大才能达到目的。
当然如果在弹性模型下计算初始应力就没有这种问题了。
因为弹性模型是没有破坏准侧的当然也没有描述达到破坏状态的参数了。
4.大家正好讨论地应力的问题,我也有个疑问,平衡地应力后,水平方向的地应力如何确定的是由本构模型来确定的吗
这个问题现在我也没答案也是我的问题
5.genzonebricksize10,10,10p120,0,0p20,20,0p30,0,20
modelmohr
propbulk5e9shear3e9fric35
inidensity2500
setgravity0,0,-10
fixxyzrangez
iniszz=grad0,0,
inisxx=grad0,0,
inisyy=grad0,0,
applyszz=rangez
applyszz=rangez
applysxx=grad0,0,rangex
applysxx=grad0,0,rangex
applysyy=grad0,0,rangey
applysyy=grad0,0,rangey
U#P!
y-P$_+D
它的意思是通过iniszz来赋予初始地应力,但是为何又有setgravity0,0,-10
这样不是重复了吗ini是的确是模型的内力,这个内力通过setgrav,然后就像一些帖子上介绍的那样,让程序计算不就行了吗干嘛还有手动在设定一次呢
我感觉它这样的做法有点重复了.
回答:
(1)它这样做其实只是减少程序的计算步骤.5_这样设置以后整个模型就已经是平衡了
(2)设置重力的原因不是为了平衡减少程序计算步骤,而是因为如果未初始化应力的话,在setgrav的时候,模型会在自重应力下发生应力变形。
所以,初始化应力的原因是防止模型在自重应力下发生变形(我们认为地层自重变形已经发生,当然欠固结等现象是另外一回事)。
3)其实就让模型发生变形,然后把位移清零也可以的
6。
ini命令来对地层进行初始应力的施加,而APPLY是~7u(施加应力边界条件
7.用到ini初始平衡的时候要和重力计算的相同才有用
8。
genzonebricksize101010&
p00,-25,0p120,-25,0p20,0,0p30,-25,20
modelelas
propbulk5e9shear3e9
inidensity1600rangey-10,0
inidensity2000rangey-15,-10
inidensity2200rangey-25,-15
setgravity0,-10
fixxrangex.1
fixxrangex
fixzrangez.1
fixzrangez
fixyrangey
solve
如果这样是不是就完成了初应力的计算了
当然在这个基础上进一步计算需初始位移为0:
如果加入下一段代码来计算初应力:
inisyygrad0,,0rangey-10,0
inisyy4e4grad0,,0rangey-15,-10
inisyy7e4grad0,,0rangey-15,-25
以上添加了力边界,在这种情况下,得到的初应力是不是和前一个方法得到的相同呢
另外,这样做是不是就可以不初始(置零)位移呢
我总感觉这个initial命令象流体软件fluent里面求解前设置初始条件,它的最重要的作用是帮助解收敛的快一些,
a)不知道我的理解对不对,斑竹及各位大哥帮帮忙吧,我这个可怜的新手,谢谢!
回答:
(1)我试着计算了这两种情况,对于ini应力的作用,我得出以下结论:
A.对于差分法,为了加快收敛速度,在开始求解之前,最好能设置初始条件(如fluent),即在单元中心initial应力,那么在迭代中的单元应力以这个初始化的力开始计算,因为这个力与重力产生的应力差别不大,故而能很快收敛。
B.intial应力得到的位移解相比较于无intial应力的位移解更符合实际地层条件(即认为是0),对于这个我是根据解得到的猜测,也不能说明原因。
*
(2)是一致的,但是第一种通过施加力的方法,会产生初始位移,而且无法控制侧向初始应力,第二种方法是标准方法。
标准方法的意思是说,大家普遍都是这么干的,
9.每填一层,就应该用一个ini命令,这样才能够有好的结果!
(有人问填土是不是每填一次就要做一次初始应力归零
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- flac3d 常见问题 总结