您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > FLAC3D学习笔记(自己总结版)
一、建立模型笔记1键盘上的键的功能:X,Y,Z分别控制所建立的模型围绕X,Y,Z三个轴做逆时针旋转.如果打开大小写锁定键,分边按XYZ时建立的模型会做顺时针旋转.+号的功能是加大模型旋转的角度,-号的功能是减小模型旋转的角度。2键盘上的上下左右四个键可以实现图形的向上向下,向左和向右的移动.3当在一个区域建立多个模型的时候,有时候为了镜像单个模块儿,需要预先编组,编组的方法如下:genzontunintp0000p10100p2550p300-5p45100&p555-5p6010-5p7510-5dimsq2sq21sq2111group(编组)z1(组名为:z1)&fillgrouptunnel4镜像整个模型的方法:首先判断即将镜像的模型在原模型的哪个方向(即三个轴的方向),然后在轴所在的方向上去两个点.其中一个是原点(origin(xyz)).5镜像部分模型的方法:genzonereflectnormal(x,y,z)origin(x,y,z)rangegroupz1就可以了.6特别要注意的一点:交叉巷道的巷道充填和巷道的网格是两个组,所以在镜像的时候不要忘了给充填部分镜像.7groupradcylrangegroupcylintnot(编组的时候不包括cylint)7快捷键总结Ctrl+Z局部缩放的功能。Ctrl+R的功能是恢复到初始状态。8模型建立的方法:方法1:利用默认值生成网格,各个默认值:(1)p0的默认值是(0,0,0),网格的每边的单元格数size默认值是10,网格每边的长度默认值为size的值.方法2:利用4个点的坐标来生成矩形网格.p0~p3size方法3:利用edge来确定边长生成矩形网格.方法4:利用参数ratio来确定单元体几何边画边生成矩形网格.方法5:利用参数add(相对坐标)来生成矩形网格.方法6:利用八个点的左边来生成矩形网格.9、用户自定义模型的方法我来贡献一点自己的成果:FLAC3D的二次开发环境提供了开放的用户接口,在软件安装文件中包含了软件自带所有本构模型的源代码,且给出了Mohr-Coulomb模型和应变软化模型的编译示例,因此可以方便地进行本构模型的修改与开发。为了方便起见,下面的说明以建立UserModel模型为例。(1)在模型头文件(usermodel.h)中进行新的本构模型派生类的声明,修改模型的ID(为避免与已有模型冲突,一般要求大于100)、名称和版本,修改派生类的私有成员,主要包括模型的基本参数及程序执行过程中主要的中间变量。(?p6u'J5Q3y(a(2)在程序C++文件(usermodel.cpp)中修改模型结构(UserModel::UserModel(boolbRegister):Constit-utiveModel)的定义,这是一个空函数,主要功能是给(1)中定义的所有私有成员赋初值,一般均赋值为0.0。(3)修改constchar**UserModel:roperties()函数,该函数包含了给定模型的参数名称字符串,在FLAC3D的计算命令中需要用到这些字符串进行模型参数赋值。(4)constchar**UserModel::States()函数是单元在计算过程中的状态指示器,可以按照需要进行修改指示器的内容。(5)按照派生类中定义的模型参数变量修改doubleUserModel::GetProperty()和voidUserModel::SetProperty()函数,这两个函数共同完成模型参数的赋值功能。'U;eG'WQ#R4q/@9Gh(6)constchar*UserModel::Initialize()函数在执行CYCLE命令或大应变模式下对于每个模型单元(zone)调用一次,主要执行参数和状态指示器的初始化,并对派生类声明中定义的私有变量进行赋值。值得注意的是,Initialize()函数调用时没有定义应变分量,但可以调用应力分量,但不能对应力进行修改。9n#e8|'c-B/q,BB5m(7)constchar*UserModel::Run()是整个模型编制过程中最主要的函数,它对每一个字单元(sub-zone)在每次循环时均进行调用,由应变增量计算得到应力增量,从而获得新的应力。在计算过程中,要根据单元应力情况对单元状态指示器进行赋值。当进行塑性模型编制时,需对达到塑性的应力状态进行修正。2[/~.U(AG.b3@6].`(8)修改constchar*UserModel::SaveRestore()中的变量,修改方法同(2)和(5),该函数的主要功能是对计算结果进行保存。(9)程序的调试有两种方法。①在VC++的工程设置中将FLAC3D软件中的EXE文件路径加入到程序的调试范围中,并将FLAC3D自带的DLL文件加入到附加动态链接库(AdditionalDLLs)中,然后在Initialize()或Run()函数中设置断点,进行调试;②在程序文件中加入return()语句,这样可以将希望得到的变量值以错误提示的形式在FLAC3D窗口中得到。10、网格剖面的画法方法:首先在命令行里输入edit11、想知道有多少单元体和节点?方法:用命令printinfo12、绘制塑形区域命令是什么?方法:Plotblockstateshear;获得剪切屈服的单元,包括shear-n和shear-pPlotblockstatetension-p;获得过去拉伸屈服的单元Plotblockstatenow;获得当前处于塑性状态的单元,包括shear-n和tension-nPlotblockstatepast;获得过去处于塑性状态的单元,包括shear-p和tension-p13、step后面的数字是怎么确定的?答:14、开挖模型的命令Modelnullrangegroup组名Modelnullrangegroupxx1,x2画圈的正负号是啥意思?答:正号表示10的正的几次方.而负号表示负的几次方.11、关于ratioratio代表单元体尺寸变化率,关于只需要记住一点:不同模型的两个尺寸相等的面,采用相同的集合变化率,网格才会重合,ratio对于减少单元的数目有很好的效果。12、地震波的模拟命令流setdynonsetdynmultionsetlargefreexyzrangez-35.1-34.9;去掉模型底部原有的静力条件applynquietsquietdquietranz-35.1-34.9;静态边界条件table1readcrvel20.txtapplyszz-1.524293e7histtable1ranz-35.1-34.9;加动力载荷applysyz-1.26984e7histtable1ranz-35.1-34.9applyff;设置阻尼setdyndamprayleigh0.057.14setdyntime=0://参考资料二、材料参数、边界条件,初始条件1要特别注意fixxyzrangez范围与fixzrangez范围之间的差别,前者是x、y、z三方向的位移全被限制,后者只限制了z方向的位移。[fixxrange(范围)命令的功能是保持网格节点在x轴方向制定的参数(速度、压力和温度)不变,range为指定的范围]Fixxyzrangex-0.10.1表示x=0是一个平面,且是固定的Fixxrangex-0.10.1表示x=0是一个平面,只是x的方向不能发生运动。2、plothistmvsn其中m代表y轴,n代表x轴。3、sxxsxysyy这都是指那个方向:SXX是x方向的正应力,SYY是y方向的正应力,SXY是指法向指向x轴方向平面(也就是yz面)上的y方向剪应力。4、history命令Histunbal监测不平衡力,并保留记录Histgpzdisp4,4,8监测网格坐标点(4,4,8)在z轴方向的记录,并保留记录.Plothis-2-3vs1其中的符号表示图形的方向及位置的不同,1代表hist代码中的第一条记录,2代表hist代码中的第二条记录,3代表hist代码中的第三条记录.一次类推.补充:在记录历史记录的时候可以自己定义记录的编号:如hisid12gpzdisp4,4,4绘制图形:如plothis125、在fish函数中如:(1)p_gp=gp_head(意思是指向节点表)那么后面肯定有一个:p_gp=gp_next(p_gp)(意思是查找下一个节点的ID号)(2)pnt=zone_head;zone_head指向单元体表pnt=z_next(pnt);查找下一个单元体表6、seldellinkrangeid23sellinkid=2323targetnodetgt_num(代表目标节点的ID号)1,7、想知道一个节点的xyz三个分量则用它:;已知IDdefgetgpxyzgp1=find_gp(1)gp1x=gp_xpos(gp1)gp1y=gp_ypos(gp1)gp1z=gp_zpos(gp1)endgetgpxyzprintgp1xgp1ygp1z8、交集就是rangegroupagroupb指的是a和b的公共部分;并集就是rangegroupaanygroupbany指的是a和b两个部分;Not指的是出了什么什么之外。三、求解1、FLAC计算的过程中想终止pause,想要继续,continue2、收敛的准则:第一:相对收敛准则:一般而言,大多数问题可以采用FLAC3D默认的收敛标准(或称相对收敛标准),即当体系最大不平衡力与典型内力的比率R小于定值10-5(也可由用户自定义该值,命令:SETmechratiovalue)时,计算即行终止。这里,阐述两个名词的定义。所谓体系最大不平衡力,是指每一个计算循环(或称计算时步)中,外力通过网格节点传递分配到体系各节点时,所有节点的外力与内力之差中的最大值;所谓典型内力,则是指计算模型所有网格点力的平均值。图2-9为简单示例中R默认为10-5时,计算终止时所花费的时步以及R值。由于R为无量纲的,所以它适用于不同的单位系统。有时,也可采用体系最大不平衡力小于某一临界值(命令:SETmechforcevalue)作为一个收敛标准,也称绝对收敛标准。由于这一临界值需用户自行定义,并且没有比较统一的取值范围,若取较小值,对单元数众多的复杂模型而言无疑是十分苛刻的,因而有较大的局限性。第二:用户自定义准则:FLAC3D还允许用户根据实际分析的需要,自定义收敛标准,比如以某关键点的位移或速度达到某一临界值作为收敛标准等等。3、记录最大不平衡力:hisunbal记录最大不平衡力(命令流位置),plothis1绘制最大不平衡力曲线图。注意:体系最大不平衡力随着计算的进行,逐渐趋近于0,表明体系最终达到了力平衡状态。不过,力平衡状态仅表示所有网格节点的合力为0,并非表明体系处于真实的物理平衡状态,因为在力平衡状态下,体系也有可能正在发生稳定的塑性流动。这时,就需要借助其它方式如观察网格节点速度、塑性区标识等来进一步评估模型所处的状态。(平衡状态就是说静止状态和匀速直线运动状态。)4、观察网格节点速度的方法:(1)跟踪记录网格中一些关键点的速度(命令:HISTgpvelxyz)并绘制其历时曲线。注意:如果速度历时曲线在最后阶段显示为水平线,表明体系达到了稳定状态。如果速度历时曲线最终收敛并趋近于零,如果速度历时曲线最终收敛并趋近于零。如果速度历时曲线最终收敛并趋近于零,表明与记录相应的网格点进入塑性流动状态;如果一个或多个点的速度的历时曲线都出现明显的上下波动,表明系统此时可能处于瞬时调整状态。(2)采用PLOTvel命令绘制完整的速度矢量场图。注意:通常,体系在达到真实平衡状态时,因网格节点力的变化已低于计算机的精度(约小数点后六位),速度场表现为大小和方向不确定的低振幅随机场。如果速度场矢量是
本文标题:FLAC3D学习笔记(自己总结版)
链接地址:https://www.777doc.com/doc-4491252 .html