关键词不能为空

当前您在: 主页 > 英语 >

FLAC3D命令流(挺实用)

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-08 07:54
tags:

-

2021年2月8日发(作者:afterwards)


1


、怎样查看模型?




答:


plot grid


可以查看网格,


plot grid num


可以查看节点号。





2


、请问在圆柱体四周如何施加约束 条件?




答:可以用


fix ... ran cylinder end1 end2 radius r1 cylinder end1 end2


radius


r2


not


,其中


r2


,其实就是选择


range


的时候选两个圆柱的


差,即得到边界。命 令流如下:



fix x range end1 1 0 0 end2 1 4 0 rad 1 end1 1 0 0 end2 1 4 0 rad 1



3


、怎么能把一个

< br>PLOT


的图像数据导出来以便用其他软件绘图?




答:用


set


log


on


命令,把数据导出来, 转到


excel


里处理一下,然


后用< /p>


surfer


或者什么作图软件绘制就行了。



4


、用命令建立模型后,如何 显示点的坐标?




答:使用


plo blo gro gpnum on


命令





5


、关于


gauss_dev


对性质进行高斯正态分布的问题?





答:根据手册上的说明:下面的命令设定一个平均摩擦角为< /p>


40


度,


标准方差是±

< br>5


%。则命令如下:


prop friction 40 gauss_dev 2



问题:请问


gauss_dev


2< /p>


中的


2


是如何计算的?如果把±


5


%改为±


10


%,则 命令应如何写?


40


×


5


%=


2



6




reflect


问题




问:


gen


zone


radbrick


&p0


(0,0,0)


p1


(10,0,0)


p2


(0,10,0)


p3


(0,0,10)


&size 3,5,5,7 &ratio 1,1,1,1.5 &dim 1 4 2 fill



plot surf



gen zone reflect dip 0 dd 90


(对


x y


面做镜像)



gen zone reflect dip 90 dd 90


(对


yz


面做镜像)




1< /p>



dd


表示


y< /p>


轴正向顺时针到那条射线的夹角,


dip


表示对称参照


面与


xy


平面的夹角,对 称参照面与


xy


平面的夹角在


xy


平面的投影


是一条射线。


首先应该按照


dd


的方向大体确定这个面的朝向,


dd



的是从


y


轴 正方向按顺时针



clockwise



方向转向所要确定面的法线


方向


< /p>



xy


平面上的投影的夹角,

< p>
然后再确定


dip



di p


指的是从


xy


平面转


向所要确定的平面的角.


(及


z


轴负方向转过角度)




2



命令:


reflect normal xyz origin xyz


(根据法线和过一点建的面)


最常用,


至于实际使用过程中有人问道:


normal -1 0 0



normal 1 0 0


的区别,我试过两者的效果是一样的,没区别,虽然方向不同,但表


达的是同一个面。< /p>



reflect



dd a dip b origin xyz



这个就是用里建立斜面镜像的。



有一 点注意了,


镜像的时候如果是模型镜像的话,


相当于在建立一个


模型,


故,



reflect


的前面要加建模的关键字,


gen zone



reflect


??





7


、关于 两种


fix


是否有区别?



fix z range z -0.1 0.1




fix x range x -0.1 0.1 any x 1.9 2.1 any



fix y range y -0.1 0.1 any y 1.9 2.1 any






fix z range z -0.1 0.1




fix x range x -0.1 0.1




fix x range 1.9 2.1





fix y range y -0.1 0.1




fix y range y 1.9 2.1






答:是 一样的,


any


表示并列连接关系,及


and


的意思。




8



initial



apply



set


的区别



答:


initial


初始化命令,初 始化计算应力状态,定义材料参数、重力


等;


apply


边界条件限制命令,


如施加边界的力、


位移等 约束等;


set



于设置计算的模式,控制计算过程。



Ini


施加的初始力在计算过程中是会变的,一般体力需要初 始化,而


apply


施加的力、边界条件不会随着计算变化。< /p>


set


命令作用于整个网



(


赋值全局变量


),ini


则初始化指定范围内网格点、域的偏移量。初


始应力不仅仅是重力引起的。




9



Tension-p shear-p tension-n shear-n


表示的含义




答:在计算的循环里面


,


每个循环中


,


每个


zone


都依据


failure criterion


处于不同的状态


,shear



tension


分别表示因受剪和受拉而处于塑性


状态


.n


表示


now,p

表示


previous,


即分别表示在现在和以前的循环当


中处于塑性状态。




10



history


保存数 据,


print


显示



在错误的命令流中“原点位移


.dat


”文件中只有:



Step 1 Y-Displace







而没有保存下数值,怎么回事?我 怎么才能获得


table


中的数据?




输入


'print tabel n '


能得到


table


中的数据



(正确)



hist gp ydisp 0,0,0

































hist zone syy 0,1,0



hist zone syy 1,1,0



step 3000



hist write 1 file


原点位移


.dat



hist write 2 file


中部单元应力


.dat



hist write 3 file


边缘单元应力


.dat



hist write 1 table 1




hist write 2 table 2



hist write 3 table 3


hist write 2 3 vs 1 file


单压


.dat



(错误)



hist gp ydisp 0,0,0



hist zone syy 0,1,0



hist zone syy 1,1,0



hist write 1 file



原点位移


.dat



hist write 2 file


中部单元应力


.dat



hist write 3 file


边缘单元应力


.dat



hist write 1 table 1




hist write 2 table 2



hist write 3 table 3



hist write 2 3 vs 1 file


单压


.dat



step 3000



11



plot


显示


x



y


坐标图



hist n 1



hist gp ydisp 0,0,0



hist ax_str



hist gp xdisp 1,1,0



step 1500



plot hist 2 vs -1 axial stress vs axial disp.



plot hist 3 vs -1 circumferential disp. vs axial disp

答:



2


是不是代表


hist gp ydisp 0,0,0




-1


指得是


hist gp ydisp 0,0,0


为什么不是


1


而是负值?



1)



plot hist m vs n


的形式里


,m


代表

< p>
y



,n


代表

< p>
x



(


不管


m,n


的正



);



2)



表示 对其值作



如果大家使用


AUTOCAD


的话就明白



的含义了

< br>,


比如上面的




hist 1 gp ydisp


的值是


0~100,


那么


vs -1


就变成


-100~0.


以此类推


.



3)


要这么做主要是为了符合岩土 工程的习惯需要


,


例如桩载荷试验曲


线


,


沉降曲线等都不是画在第一象限内。




12


、关于



的命令注释(设置地下水位)



答:< /p>



1




的功能是设置地下水位面,


在二维计算中,


通过


water


table


命令即可设置 水位线,在三维计算中由于地下水位是面,因此


需要作一些插值运算,以便形成水位面。 这个


FISH


程序包含三个函



parm,aux1



aux2



parm


用来设定水位的边值,即设置水位的区< /p>


域,


aux1


插值计算等值线的点,


aux2


调用


aux1

的计算结果,使用


FLAC3D


命令形成水位面。




2


)首先设置参数 值,然后定义一个


table.



def parm



nptab1=7



nprof=10




end



parm





table 1 (12 0) (18.25 12.5) (25 17) (35 21) (50 24) (75 25) (150 25)


产生


table1


,包含


7


组数据点。




3)


在解释的两个


FISH


函数之前,



table,xtable,ytable


作一些总的说


明。



程序反复使用了这 三个变量,


理解了这三个变量的含义,



这段程序就解决了大半问题了。




Itasca


的所有软件都使用了相同的数据结构储存数据,


称之为链表结


构,


类似于关系型数据库 中的数据链接方法。


如果有数据结构的知识,


或掌握关系型数据 库的


SQL


语言,


这三个变量的含义 就不难理解了,


只不过这个操作与真正的数据库操作相比,只有两个数据变量

< p>
x,y



我用数据库的术语作解释:


table


就是产生一个“表”



xtable,ytable











表< /p>


(Create)



< br>对











(Select)


、插入

< p>
(Insert)


、替换


(Update)


操作


.





4



FIS H


函数


aux1


的作用是在

< p>
table 1


的基础上产生出另外个


table



table



ID



11


17


,每个


table



10


个数据集。


alfa


的计算方法


是为适合


(fit)


曲面 而采用的坐标点算法。






def aux1



loop n(1,nptab1)





rr=xtable(1,n)





zz=ytable(1,n)







loop k(1,nprof)









case_of k











alfa=0.5*(pi+.1)*float(k-2)/float(nprof-2 )











xtable(n+10,k)=rr*cos(alfa)











ytable(n+10,k)=rr*sin(alfa)











case 1











xtable(n+10,k)=rr











ytable(n+10,k)=-40.0











case 2











xtable(n+10,k)=rr











ytable(n+10,k)=0.0









end_case








end_loop



end_loop



end



aux1



当执行这个


FISH


函数后,


生成


(nptab1+10,nprof)< /p>


组数据,


这些数据为


Aux2

< p>
调用。注意:本段程序产生的数据是为那个特定的曲面边坡制


作的,不是一 个


general purpose



LIB



5



FISH


函数


aux2


的作用是使用


W

< br>ATER TABLE face


命令产生水



面,



table 1



ytable


值作为


z


坐标,


aux1


产生的数据作为

< p>
x,y


坐标。





def aux2



command





set grav 0 0 -10





water dens 1000



end_command



loop n(1,nptab1-1)





loop k (1,nprof-1)








xx1=xtable(n+10,k)








yy1=ytable(n+10,k)








zz1=ytable(1,n)








xx2=xtable(n+10,k+1)








yy2=ytable(n+10,k+1)








zz2=zz1








xx3=xtable(n+11,k+1)








yy3=ytable(n+11,k+1)








zz3=ytable(1,n+1)








xx4=xtable(n+11,k)








yy4=ytable(n+11,k)








zz4=zz3








command











WATER TABLE face xx1,yy1,zz1 xx2,yy2,zz2 xx3,yy3,zz3











WATER TABLE face xx1,yy1,zz1 xx3,yy3,zz3 xx4,yy4,zz4









end_command






end_loop



end_loop



end



aux2



13




FLAC


结果数据的导出




pl set back white ;


设置背景




set plot bitmap size (800,510) ;


设置图片大小




plot set caption size 37


设置图例数字大小




(default=35



范围


10-50)



mainwin size 1 1 position 0 0.8 command window



plot set window size 0.8 0.8 position 0.1 0.0 graphics window



plot set center 100 0 40




根据情况更改



14


、一段


fish


命令的解释< /p>




def aux1


定义函数




loop n(1,nptab1)



开始一个循环,从


1


循环到变量


np tab1



rr=xtable(1,n)



table 1




x


列中读第


n


个数付给变量


rr



zz=ytable(1,n)



table 1




y


列中读第


n


个数付给变量


zz



loop k(1,nprof)



开始第二个循环,从


1


循环到变量


np rof



case_of k


下面 是一个选择结构,利用变量


k


判断




alfa=0.5*(pi+.1)*float(k-2) /float(nprof-2)



xtable(n+10,k)=rr*cos(alfa)



ytable(n+10,k)=rr*sin(alfa)



case 1



k

< br>=


1


的时候执行下面语句




xtable(n+10,k)=rr table n+1 0



x


列第


k


个值等于变量


rr



ytable(n+10,k)=-40.0 table n+10

< br>的


y


列第


k

个值等于变量


-40



case 2



k



2


的时候执行下面语句




xtable(n+10,k)=rr table n+10



x


列第


k


个 值等于变量


rr



ytable(n+10,k)=0.0 table n+10



y


列第


k


个值等于变量


0



end_case


结束选择结构




end_loop




结束第二个循环




end_loop


结束第一个循环




end


函数定义结束




aux1


执行什么定义的函数





15


、有关命令的解释





1



apply nvel 0.1 plane dip 60 dd 270 range left_boun




apply


施加边界条件,


plane


法向速度为


0.1



plane


面的位置:倾角


60


(在


xo y


平面从


-Z


轴方向逆时针旋转)



dd


走向


27 0


度,从


+y



向绕


z


轴顺时针旋转;





2




ini szz -5e4 grad 0 0 -1e4



ini



初始边界条件,

< p>
szz=-5e4+x*0+y*0+-z*-1e4,


注:


-5e4



range


范< /p>


围起点坐标的


SZZ


值,


x,y,z


所施加应力网格点的坐标。





16


、渗流示例




;-------------------------- ----


参数部分




bulk modulus, K 390 MPa


体积模量(土质比较硬)




shear modulus, G 280 MPa


剪切模量




soil dry density,


ρ


d 1200 kg/m3


土的密度




water density,


ρ


w 1000 kg/m3


水的密度




wall density,


ρ


wal 1500 kg/m3


档土墙的密度




permeability, k 10


?


12 m2/Pa-s


渗透系数




porosity, n 0.3


孔隙率




fluid bulk modulus, Kf 2.0 GPa



流体的体积模量




;-----------------------


以下是命令流




; -------------------------------------------------- ----



; Excavation in a saturated soil



;----------- -------------------------------------------



config fluid ;


设置流体算法




; --- geometrical model ---



建立模型




gen zone brick p1 12 0 0 p2 0 12 0 p3 0 0 12 size 12 12 12 rat 1 1 1



group soil


设置土组




group excavate range x 0 4 y 0 4 z 0 5


设置开挖范围组




group wal1 range x 4 5 y 0 5 z 0 7


设置档土墙




1





group wal2 range x 0 4 y 4 5 z 0 7 ;


设置档土墙




2





group wall range group wal1 any group wal2 any


档土墙


1



2


合并为


一个档土墙组




; --- fluid flow model ---



流体模型




model fl_iso ;


各项同性流体




prop perm 1e-12 poro 0.3 ;


设置渗透系数和??比




or


??率




ini fdensity 1e3



初始化水密度




ini fmod 2.0e9 ftens -1e-3 ;


初始化水的体积模量







??




model fl_null range group excavate


开挖部分没有水流




model fl_null range group wall ;


档土墙




不渗水




ini pp 0 grad 0 0 1e4 ;


初始化孔隙水压力




fix pp range z -0.1 0.1 ;


约束




应该是整个模型的底部吧?




fix pp range x -0.1 4.1 y -0.1 4.1 z 4.9 5.1


开挖部分也给约束住了,而


其他的地方不管




; --- mechanical model ---



力学模型




model elas


弹塑性




prop bul 3.9e6 shea 2.8e6 ;


设置体积模量和




剪切模量,这两个必须,


有一次我只设置了体积模量,就错的一塌糊涂




model null range group excavate


力学模型的开挖




ini density 1.2e3 ;


初始化密度




,应该是土的密度




ini density 1.5e3 range group wall ;


初始化墙(档土墙)的密度,




fix x range x -.1 .1 ;


施加约束,据说差分法约束


0


的时 候,必须取一



-0.1<0<0.1,


范围




fix x range x 11.9 12.1


施加约束,或者叫做边界条件




fix y range y -.1 .1 ;


施加约束




fix y range y 11.9 12.1



fix z range z 11.9 12.1



; initial total stresses



出世总应力




ini szz 0 grad 0 0 -1.5e4 ;z


方向的应力大一些




ini sxx 0 grad 0 0 -1.2e4 ;


水平方向的,小一些




ini syy 0 grad 0 0 -1.2e4



apply nstress 0 grad 0 0 -1.2e4 range x 0.0 4.0 y 3.9 4.1 z 0.0 5.0




apply nstress 0 grad 0 0 -1.2e4 range x 3.9 4.1 y 0.0 4.0 z 0.0 5.0



apply nstress -7.5e4 range x 0.0 4.0 y 0.0 4.0 z 4.9 5.1



; --- setting ---



设置




set gravity 0 0 10 ;


设置重力加速度




; --- initial state --- ;


初始化状态




solve force 1 check initial equilibrium



求解平衡




; --- histories ---



记录




set hist_rep 40 ;


记录步为


40



hist fltime


记录时间




hist gp pp 0 0 6 ;


记录某点的孔隙水压力




hist gp xdis 4 0 0 ;


水平位移




hist gp xdis 4 0 2 ;


记录水平位移




hist gp xdis 4 2 0



hist gp zdis 0 0 5 ;


记录竖向位移




hist gp zdis 2 0 5



hist gp zdis 4 0 5



hist gp zdis 2 2 5



hist gp zdis 4 2 5



hist gp zdis 4 4 5



hist gp zdis 10 0 1



hist gp zdis 10 0 2



;


; --- excavation ---



开挖




set fluid off ;


关闭水




; apply pore pressure at walls



在墙上施加孔隙水压力




apply nstress 0 grad 0 0 -1.e4 range x 0.0 4.0 y 3.9 4.1 z 0.0 5.0



apply nstress 0 grad 0 0 -1.e4 range x 3.9 4.1 y 0.0 4.0 z 0.0 5.0



apply nstress -5.e4 range x 0.0 4.0 y 0.0 4.0 z 4.9 5.1



solve force 1 ;


求解




save


保存




;



; --- drainage ---



排水




apply remove nstress ;


撤掉刚才的压力




def relaxsetup ;


定义一个释放




函数的参数




step0 = step



end



relaxsetup ;


调用




def relax ;


定义一个释放函数




rstep = step - step0




if rstep < ncyc then



relax=1.0-(float(rstep)/float(ncyc))



else



relax = 0.0



endif



end ;


结束




set ncyc = 1000 ;


先赋值,随后调用




apply nstress 0 grad 0 0 -1.e4 hist relax &



range x 0.0 4.0 y 3.9 4.1 z 0.0 5.0



apply nstress 0 grad 0 0 -1.e4 hist relax &



range x 3.9 4.1 y 0.0 4.0 z 0.0 5.0




apply nstress -5.e4 hist relax &



range x 0.0 4.0 y 0.0 4.0 z 4.9 5.1



cyc ncyc



solve ;


求解




save


保存






; --- percolation ---



渗透




set fluid on ;


设置水算法




fix pp 0 range x -0.1 4.1 y -0.1 4.1 z 4.9 5.1


施加孔隙水压力




cyc 9000


循环




save ;


保存




plot create excav ;


建立一个显示的视图




一下内容都是显示内容




plot set rot 200 0 195



plot set cent 6 6 6



plot set dist 39.18



plot set magn 0.8



plot set plane ori 0 0 0 normal 0 -1 0



plot add cont pp out on



plot add block group lgra range group wall



plot add cont pp int 10000 max 110000 range x 0 4 y 0 4 z 5 7



plot add flow plane



plot show



Ret



17


、用什么命令可以位移图中显示最大位移点的坐标?



答:用


fish


编了一个,算法好像有点烦,不过目的可以实现




你可以参考一下。





def get_gp_maxdisp



gp0_disp = gp_xdisp(gp_head)*gp_xdisp(gp_head)



gp0_disp = gp0_disp + gp_ydisp(gp_head)*gp_ydisp(gp_head)



gp0_disp = gp0_disp + gp_zdisp(gp_head)*gp_zdisp(gp_head)



gp0_disp = sqrt(gp0_disp)




p_gp=gp_head



;


找最大值




loop while p_gp # null



gp_disp = gp_xdisp(p_gp)*gp_xdisp(p_gp)



gp_disp = gp_disp + gp_ydisp(p_gp)*gp_ydisp(p_gp)



gp_disp = gp_disp + gp_zdisp(p_gp)*gp_zdisp(p_gp)



gp_disp = sqrt(gp_disp)




if gp_disp>gp0_disp



gp0_disp=gp_disp



endif




p_gp = gp_next(p_gp)



endloop



;


找最大值的坐标




p_gp=gp_head



ss=0



loop while p_gp # null



gp_disp = gp_xdisp(p_gp)*gp_xdisp(p_gp)



gp_disp = gp_disp + gp_ydisp(p_gp)*gp_ydisp(p_gp)



gp_disp = gp_disp + gp_zdisp(p_gp)*gp_zdisp(p_gp)



gp_disp = sqrt(gp_disp)




if gp_disp=gp0_disp



ss=ss+1



xtable(1,ss)=gp_xpos(p_gp)



ytable(1,ss)=gp_ypos(p_gp)



endif




p_gp = gp_next(p_gp)



endloop


-


-


-


-


-


-


-


-



本文更新与2021-02-08 07:54,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/613136.html

FLAC3D命令流(挺实用)的相关文章