建议:初学者将FLAC/FLAC3D版所有帖子都浏览一遍;学有所得后,再浏览一遍,会发现又有新的收获。
第一部分(相关链接)
1. FLAC3D知识基本介绍SimWe
http://www.simwe.com/forum/viewthread.php?tid=209662
http://www.simwe.com/forum/viewthread.php?tid=573644
http://www.simwe.com/forum/viewthread.php?tid=295354&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=164959&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=366726&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=164959&extra=page%3D6%26filter%3Dtype%26typeid%3D38
2.FLAC使用FAQ
http://www.simwe.com/forum/thread-738220-1-1.html
http://www.simwe.com/forum/thread-738329-1-17.html
3.复杂模型建立的前处理(这么多款,总有一款适合你吧,可以说导入问题已经解决,看到此资料者,以后不要再发求接口程序帖)真
推荐采用有限元软件进行复杂模型建模,网格划分,保存几何信息,导入FLAC3D。有限元软件建模可以到论坛相应版块学习。以下是有限元软件与FLAC3D的接口程序下载地址:
http://www.simwe.com/forum/viewthread.php?tid=724033&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=344586&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=310922&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=725347&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=629472&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=657503&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=220759&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=565490&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=548252&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=337989&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=363422&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=529506&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=491786&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=487727&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=295058&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=491786&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=355036&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=342959&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=308078&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=308038&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=302176&highlight=gocad%2Bflac
4.FLAC3D后处理
个人以为用tecplot进行FLAC3D结果的后处理,看下面两个帖子就可以速成了。
http://www.simwe.com/forum/viewthread.php?tid=283356&extra=page%3D1%26filter%3Dtype%26typeid%3D37
http://www.simwe.com/forum/thread-722750-1-1.html
5. flac3d 命令流语法着色(值得一试)
http://www.simwe.com/forum/viewthread.php?tid=624862&highlight=ansys%2B%2Bflac
6.初始地应力场问题(能对初始应力场问题有个初步了解)
http://www.simwe.com/forum/ viewthread.php?tid=208343&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=482753&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=750832&highlight=%B3%F5%CA%BC%D3%A6%C1%A6
http://www.simwe.com/forum/viewthread.php?tid=732925&highlight=%B3%F5%CA%BC%D3%A6%C1%A6
http://www.simwe.com/forum/viewthread.php?tid=356334&highlight=%B3%F5%CA%BC%D3%A6%C1%A6
http://www.simwe.com/forum/viewthread.php?tid=388309&highlight=%B3%F5%CA%BC%D3%A6%C1%A6
http://www.simwe.com/forum/viewthread.php?tid=316397&highlight=%B3%F5%CA%BC%D3%A6%C1%A6
http://www.simwe.com/forum/viewthread.php?tid=316397&highlight=apply%2Bini
7.VB调用FLAC3D(FLAC与高级语言间的相互调用,值得参考)
http://www.simwe.com/forum/viewthread.php?tid=407677&highlight=ansys%2B%2Bflac
http://www.simwe.com/forum/viewthread.php?tid=509327&highlight=ansys%2B%2Bflac
8.最大主应力和最小主应力分布问题的工程实际意义
http://www.simwe.com/forum/viewthread.php?tid=352306&highlight=%D7%EE%B4%F3%D6%F7%D3%A6%C1%A6
9. 关于dd、dip及origin的问题(仔细看,琢磨琢磨,是很搞人,推荐用ori( ) nor( )的方式确定一个面,即高数书中点法式确立面的方法)
http://www.simwe.com/forum/viewthread.php?tid=735924&highlight=dip
http://www.simwe.com/forum/viewthread.php?tid=736917&highlight=dip
http://www.simwe.com/forum/viewthread.php?tid=728832&highlight=dip
http://www.simwe.com/forum/viewthread.php?tid=714259&highlight=dip
http://www.simwe.com/forum/viewthread.php?tid=283404&highlight=dip
http://www.simwe.com/forum/viewthread.php?tid=217911&highlight=dip
10.自定义本构模型的开发
http://www.simwe.com/forum/viewthread.php?tid=630517&extra=page%3D11%26filter%3Dtype%26typeid%3D38
11. 空间任意平面上固定约束的施加
http://www.simwe.com/forum/viewthread.php?tid=375156&highlight=dip
12. 如何显示最大位移点的坐标?
http://www.simwe.com/forum/viewthread.php?tid=691171&page=1#pid691339
13.几个快捷键命令
http://www.simwe.com/forum/viewthread.php?tid=564394&extra=page%3D7%26filter%3Dtype%26typeid%3D38
14. 查看各个时段不平衡力的具体数值
http://www.simwe.com/forum/viewthread.php?tid=640573&extra=page%3D11%26filter%3Dtype%26typeid%3D38
15. 在flac3D中gp_head,gp_next,zone_head 等类似的变量是怎么定义的
http://www.simwe.com/forum/viewthread.php?tid=543523&extra=page%3D13%26filter%3Dtype%26typeid%3D38
16. 如何在剖面上显示各种应力和位移
http://www.simwe.com/forum/viewthread.php?tid=754532&extra=page%3D1%26filter%3Dtype%26typeid%3D37
17.手册中渗流的例子(cjiao2000版主有详细说明)
http://www.simwe.com/forum/viewthread.php?tid=520548&highlight=apply%2Bini
18. 塑性铰的问题与讨论
http://www.simwe.com/forum/viewthread.php?tid=727531&highlight=apply%2Bini
19. 将多条曲线画在同一坐标系的方式
http://www.simwe.com/forum/viewthread.php?tid=410552&highlight=apply%2Bini
20. 桩的参数指定问题
http://www.simwe.com/forum/viewthread.php?tid=406335&extra=page%3D1%26filter%3Dtype%26typeid%3D1
21. 手册中的PILE单元的中文翻译
http://www.simwe.com/forum/viewthread.php?tid=485105&extra=page%3D2%26filter%3Dtype%26typeid%3D1
22. geogrid单元的部分中文翻译
http://www.simwe.com/forum/viewthread.php?tid=488756&extra=page%3D2%26filter%3Dtype%26typeid%3D1
23. 结构单元中SLIDE的作用和计算方法详述
http://www.simwe.com/forum/viewthread.php?tid=730846&extra=page%3D3%26filter%3Dtype%26typeid%3D1
24. 隧道初期支护中的“钢拱架”应该如何建立
http://www.simwe.com/forum/viewthread.php?tid=726231&extra=page%3D3%26filter%3Dtype%26typeid%3D1
25. 流固耦合手册现场翻译直播
http://www.simwe.com/forum/viewthread.php?tid=538175&extra=page%3D3%26filter%3Dtype%26typeid%3D94&page=1
26.如何输出某一节点随时间的孔压变化
http://www.simwe.com/forum/viewthread.php?tid=460705&extra=page%3D6%26filter%3Dtype%26typeid%3D94
|
27. 中文流固耦合资料
http://www.simwe.com/forum/viewthread.php?tid=483140&extra=page%3D6%26filter%3Dtype%26typeid%3D94
28. 动力分析入门:一个简单的动力分析模型
http://www.simwe.com/forum/viewthread.php?tid=626856&extra=page%3D2%26filter%3Dtype%26typeid%3D222
29. 结构单元的动力响应分析
http://www.simwe.com/forum/viewthread.php?tid=606447&extra=page%3D3%26filter%3Dtype%26typeid%3D222
30. 动力时间步究竟如何计算?
http://www.simwe.com/forum/viewthread.php?tid=612563&extra=page%3D3%26filter%3Dtype%26typeid%3D222
31. 共享一个隧道计算的例子
http://www.simwe.com/forum/viewthread.php?tid=742021&extra=page%3D2%26filter%3Dtype%26typeid%3D123
第二部分(tg0215提供)
FLAC2d命令的FAQ:
1、怎样开始入门?
答:初步学习首先看说明书 User's gurid的Section2 Getting started和Section 3 Problem sloving with FLAC
2、哪些命令需要掌握?
答:grid gen prop interface ini fix set hist step solve pause cont sav 等,在学习的过程中遇到这些命令和不会的命令应该查看说明书的Command Reference,里面讲的很清楚,特别需要注意的是一定要仔细看一下Command Reference开头的Optional Range Phrases,这是讲范围的,因为很多命令的施加都需要加到模型的一部分,这里就告诉你怎样来表示这一部分。这一原则同样适合与其他5个ITASCA软 件。还有一点就是六个软件(FLAC FALC3D UDEC 3DEC PFC PFC3D)的range大不相同 ,要注意区分。
3、FLAC和FLAC3D建模有什么区别?
答:FLAC和FLAC3D基本的建模思想大致是一样的,不同的是FLAC是首先用GRID命令把整体的网格画出来,然后用MODELL NULL命令把网格分成许多部分,再用GEN命令把这些部分一块一块搭接起来。然后再用GEN LINE,GEN ARC等命令画出要开挖的边界,在FLAC中产生网格的命令只有一个GRID,而且只能用一次。而FLAC3D是直接用GEN 命令一块一块搭接,GEN可以用很多次。
4、怎样查看模型?
答:plot grid 可以查看网格,plot grid num 可以查看节点号。
5、怎样查看边界条件?
答:plot fix
6、怎样查看预先留设的开挖边界?
答:plot grid mark。
7、怎么查看模型的云图?
答:pl syy (sxx xdis ydis sig1..) fill ,注意,带fill关键字就是查看云图,不带fill 关键字就是查看等直线图。
8、怎样查看模型的矢量图?
答:pl grid vel (disp) red
9、怎样查看INTERFACE?
答:pl grid iface id red
print iface id ; id 是interface的编号
10、FLAC怎么调整视图?
答:ctrl+z 或shift+z ,然后点击要放大部位的左上角和右下角就可以放大某个部位,如果要缩小,双击屏幕。
第三部分(原网上学习笔记部分)
1.请问在圆柱体四周如何施加约束条件?
可以用fix ... ran cylinder end1 end2 radius r1 cylinder end1 end2 radius r2 not,其中r2
new
gen zone cyl p1 1 0 0 p2 0 4 0 p3 0 0 1 size 12 30 12
gen zone refle norm 1 0 0
gen zone refle norm 0 0 1
mo ss
prop den 2500 bulk 2e8 she 1e8 co 2e6 fric 45 ten 1e6 dil 10
prop ftab 1 ctab 2 dtab 3
table 1 0 45 0.05 42 0.1 40 1 40
table 2 0 2e6 0.05 1e6 0.1 5e5 1 5e5
table 3 0 10 0.05 3 0.1 0
fix x range end1 1 0 0 end2 1 4 0 rad 1 end1 0.5 0 0 end2 0.5 4 0 rad 0.5
回答:加上的约束不对!
fix x range end1 1 0 0 end2 1 4 0 rad 1 end1 0.5 0 0 end2 0.5 4 0 rad 0.5
回答:上面的rad 是不是相差太大了?是不是在1左右来限制了
2.关于计算不收敛问题
;初始网格
gen zone radcyl p0 15 0 -15.75 p1 add 15 0 0 p2 add 0 6 0 p3 add 0 0 15.75 &size 3 4 8 5 dim 2.25 2.25 2.25 2.25 rat 1 1 1 1.1 fill
gen zone radtun size 3 4 3 5 dim 0.75 2.25 0.75 2.25 rat 1 1 1 1.1 & p0 15 0 -15.75 p1 add 0 0 -14.25 p2 add 0 6 0 p3 add 15 0 0 fill
gen zone reflect dip 90 dd 270 ori 15 0 -15.75
; 摩尔库仑模型
model mohr
macro niyan 'bulk 3.2825e3 shear 1.5150e3 fric 20 coh 0.07'
macro meiceng 'bulk 2.1735e3 shear 8.8917e2 fric 19 coh 0.05'
prop niyan range z =-13.5 0
prop meiceng range z =-15.5 -13.5
prop niyan range z = -30 -15.5
;为开挖定义整体部分
range name in z -15.75 0 cyl end1 15 0 -15.75 end2 15 6 -15.75 rad 2.25
range name hangdao x 12.75 17.25 y 0 6 z -16.50 -15.75
;进行加载
fix x y z range z -30.001 -29.999
app sxx=-20 range x -0.001 0.001
app sxx=-20 range x 29.999 30.001
app syy=-20 range y -0.001 0.001
app syy=-20 range y 5.999 6.001
app szz=-20 range z -0.001 0.001
solve (1)
model null range in
model null range hangdao
range name in z -15.75 0 cyl end1 15 0 -15.75 end2 15 6 -15.75 rad 2.25
range name hangdaoliangce1 x 12.749 12.751 y 0 6 z -16.50 -15.75
range name hangdaoliangce2 x 17.249 17.251 y 0 6 z -16.50 -15.75
range name hangdao x 12.75 17.25 y 0 6 z -16.501 -16.499
apply nstress -0.05 plane dip 90 dd 0 range in
; 给巷道底部加压力
app nstress -0.05 plane dip 90 dd 0 range hangdao
; 给巷道直墙部分(左侧)加压力
apply nstress -0.05 plane dip 90 dd 0 range hangdaoliangce2
; 给巷道直墙部分(右侧)加压力
apply nstress -0.05 plane dip 90 dd 0 range hangdaoliangce1;对点进行监测
hist unbal
hist gp xdisp 12.75 0 -15.75 :监测左帮
hist gp zdisp 15 0 -13.5 ;监测顶板
hist gp zdisp 15 0 -16.5 ;监测底板
solve
问:第一个solve平衡了,是第二个solve不能平衡,这是为什么?如果我把支护力加大,也不能平衡?
回答:我遇到的不收敛的原因,有两个:
1)检查你的模型是不是没有建好,相互之间是不是没有连接好;
2)仔细检查你的参数,是不是已经发生了破坏。
回答:力施加有问题,隧道底部隆起破坏,所以无法计算
问:我这个模型就是该模型就是要出现巷道底臌现象,如果按照你的意思,力应该怎样施加才对?
回答:如果无法收敛,应该用step命令,关键问题是要运行多少步。
3.问:
命令流如下:
g 10 10
m e
def distort
loop i (2,jzones)
loop j (2,jzones)
x(i,j) =x(i,j)+mag*(urand-0.5)
y(i,j)=y(i,j)+mag*(urand-0.5)
end_loop
end_loop
end
prop d 1000 sh 1e8 bu 2e8
其中:
x(i,j) =x(i,j)+mag*(urand-0.5)中的urand是否是随机生成数的命令?
回答:
urand :random number drawn from uniform distribution between 0.0 and 1.0;
grand :random number drawn from normal distribution: mean = 0.0; standard deviation = 1.0
4. 问:怎么能把一个PLOT的图像数据导出来以便用其他软件绘图?
回答:用set log on 命令,把数据导出来,转到excel里处理一下,然后用surfer或者什么作图软件绘制就行了。
5. 问:用命令建立模型后,如何显示点的坐标?
回答:使用plo blo gro gpnum on命令
6.interface问题
问:我加了一个层面,初始平衡就出现了这么大的位移?是怎么原因?
;No1
gen zone brick p0 0 0 0 p1 10 0 0 p2 0 10 0 p3 0 0 8 &
size 8 8 6 rat 1.02 1.02 1.02
gen zone brick p0 0 0 9 p1 10 0 9 p2 0 10 9 p3 0 0 11 &
size 8 8 2 rat 1.02 1.02 1.02
gen zone reflect dip 90 dd 90 origin(0,0,6) range z 0 11
group layer1 range z 9 11
;interface 1 face range plane norm (0,0,1) origin (0,0,8) dist 0.01
ini z add -1.0 range group layer1
;No2
gen zone brick p0 0 0 11 p1 10 0 11 p2 0 10 11 p3 0 0 13 &
size 8 8 2 rat 1.02 1.02 1.02
gen zone reflect dip 90 dd 90 origin(0,0,1) range z 11 13
group layer2 range z 11 13
;interface 2 face range plane norm (0,0,1) origin (0,0,10) dist 0.01
ini z add -1.0 range group layer2
;No3
gen zone brick p0 0 0 13 p1 10 0 13 p2 0 10 13 p3 0 0 14 &
size 8 8 1 rat 1.02 1.02 1.02
gen zone reflect dip 90 dd 90 origin(0,0,1) range z 13 14
group layer3 range z 13 14
;interface 3 face range plane norm (0,0,1) origin (0,0,12) dist 0.01
ini z add -1.0 range group layer3
;No4
gen zone brick p0 0 0 14 p1 10 0 14 p2 0 10 14 p3 0 0 15 &
size 8 8 1 rat 1.02 1.02 1.02
gen zone reflect dip 90 dd 90 origin(0,0,1) range z 14 15
group layer4 range z 14 15
interface 4 face range plane norm (0,0,1) origin (0,0,13) dist 0.01
ini z add -1.0 range group layer4
;No5
gen zone brick p0 0 0 15 p1 10 0 15 p2 0 10 15 p3 0 0 17 &
size 8 8 2 rat 1.02 1.02 1.02
gen zone reflect dip 90 dd 90 origin(0,0,15) range z 15 17
group layer5 range z 15 17
interface 5 face range plane norm (0,0,1) origin (0,0,14) dist 0.01
ini z add -1.0 range group layer5
;No6
gen zone brick p0 0 0 17 p1 10 0 17 p2 0 10 17 p3 0 0 18 &
size 8 8 1 rat 1.02 1.02 1.02
gen zone reflect dip 90 dd 90 origin(0,0,1) range z 17 18
group layer6 range z 17 18
interface 6 face range plane norm (0,0,1) origin (0,0,16) dist 0.01
ini z add -1.0 range group layer6
;No7
gen zone brick p0 0 0 18 p1 10 0 18 p2 0 10 18 p3 0 0 20 &
size 8 8 2 rat 1.02 1.02 1.02
gen zone reflect dip 90 dd 90 origin(0,0,1) range z 18 20
group layer7 range z 18 20
;interface 7 face range plane norm (0,0,1) origin (0,0,17) dist 0.01
ini z add -1.0 range group layer7
;No8
gen zone brick p0 0 0 20 p1 10 0 20 p2 0 10 20 p3 0 0 24 &
size 8 8 3 rat 1.02 1.02 1.02
gen zone reflect dip 90 dd 90 origin(0,0,17) range z 20 24
group layer8 range z 20 24
;interface 8 face range plane norm (0,0,1) origin (0,0,19) dist 0.01
ini z add -1.0 range group layer8
;No9
gen zone brick p0 0 0 24 p1 10 0 24 p2 0 10 24 p3 0 0 29 &
size 8 8 4 rat 1.02 1.02 1.02
gen zone reflect dip 90 dd 90 origin(0,0,0) range z 24 29
group layer9 range z 24 29
;interface 9 face range plane norm (0,0,1) origin (0,0,23) dist 0.01
ini z add -1.0 range group layer9
;----------边界条件------------------------
fix x range x -20.1 -19.9
fix x range x 19.9 20.1
fix y range y -0.1 0.1
fix y range y 9.9 10.1
fix z range z -0.1 0.1
;-----------初始条件-------------------------
apply szz -26e6 range z 27.9 28.1
initial szz -1.08e6 grad 0 0 2.6e4 range z 0 28
set gravity 0 0 -10
initial density 2.6e3
initial sxx -45.8e6 grad 0 0 2.6e4 range z 0 28
initial syy -45.8e6 grad 0 0 2.6e4 range z 0 28
;---------------------------------------------
model mohr
;-----------材料属性--------------------------
;-----------No1-----------------------
pro bulk 8e9 shear 7e9 fric 25 coh 7.5e6 ten 2.6e6 range z 0 8
;-----------No2-------------------------
pro bulk 7.8e9 shear 3.5e9 fric 30 coh 6.5e6 ten 2.4e6 range z 8 10
;------------No3---------------------
pro bulk 7e9 shear 3.0e9 fric 22 coh 5.5e6 ten 2.2e6 range z 10 12
;------------No4-----------------------------
pro bulk 6e9 shear 2.3e9 fric 26 coh 5.5e6 ten 2.0e6 range z 12 13
;-----------No5-----------------------------------
pro bulk 6.2e9 shear 2.0e9 fric 28 coh 5.2e6 ten 1.2e6 range z 13 14
;-------------------No6------------------------
pro bulk 5.8e9 shear 2.5e9 fric 35 coh 6.0e6 ten 1.3e6 range z 14 16
;-------------------No7------------------------
pro bulk 9e9 shear 3.2e9 fric 30 coh 10.3e6 ten 1.2e6 range z 16 17
;-------------------No8------------------------
pro bulk 8.1e9 shear 3.1e9 fric 26 coh 8.0e6 ten 1.5e6 range z 17 19
;-------------------No9------------------------
pro bulk 7.6e9 shear 2.6e9 fric 23 coh 8.5e6 ten 1.8e6 range z 19 23
;-------------------No10------------------------
pro bulk 7.5e9 shear 2.1e9 fric 26 coh 8.0e6 ten 1.9e6 range z 23 28
;int 1 prop ks 8e10 kn 8e10 fric 30 dil 6 tension 2e7 bslip=on
;int 2 prop ks 8e10 kn 8e10 fric 30 dil 6 tension 2e7 bslip=on
;int 3 prop ks 8e10 kn 8e10 fric 35 dil 8 tension 2e7 bslip=on
int 4 prop ks 9e11 kn 9e11 fric 32 dil 5 tension 2e7 bslip=on
int 5 prop ks 9e11 kn 9e11 fric 32 dil 5 tension 2e7 bslip=on
int 6 prop ks 8e11 kn 8e11 fric 33 dil 5 tension 2e7 bslip=on
;int 7 prop ks 8e10 kn 8e10 fric 33 dil 5 tension 2e7 bslip=on
;int 8 prop ks 8e10 kn 8e10 fric 33 dil 5 tension 2e7 bslip=on
;int 9 prop ks 8e10 kn 8e10 fric 33 dil 5 tension 2e7 bslip=on
hist unbal
step 5000
apply szz -26e6 range z 27.9 28.1
initial szz -1.08e6 grad 0 0 2.6e4 range z 0 28
set gravity 0 0 -10
initial density 2.6e3
initial sxx -45.8e6 grad 0 0 2.6e4 range z 0 28
initial syy -45.8e6 grad 0 0 2.6e4 range z 0 28
initial szz -1.08e6 grad 0 0 2.6e4 range z 0 28
initial density 2.6e3
initial sxx -45.8e6 grad 0 0 2.6e4 range z 0 28
initial syy -45.8e6 grad 0 0 2.6e4 range z 0 28
这是给的模型加的初始地应力,难道这样加地应力,模型就自动平衡了吗?
回答:你用ini平衡,为什么还要计算5000步?
问:我的INI是用来施加初始地应力的,难道用INI那样加应力边界条件就不用step 或solve算平衡了吗? 模型就能自动平衡吗?
;-----------初始条件-------------------------
apply szz -26e6 range z 27.9 28.1
initial szz -1.08e6 grad 0 0 2.6e4 range z 0 28
set gravity 0 0 -10
initial density 2.6e3
initial sxx -45.8e6 grad 0 0 2.6e4 range z 0 28
initial syy -45.8e6 grad 0 0 2.6e4 range z 0 28
回答:把上面的sxx和syy的剃度2.6e4改为9e3试一下,xx和yy方向的梯度不可能与zz方向的梯度一样的。
7.关于ff边界设置的问题
自由场地边界(FF边界)在动力分析中经常采用,它的原理是采用粘滞阻尼器来模拟静止边界,将自由场节点的不平衡力加到主体的网格边界上。注意:模型底部的动力边界条件应当在app ff之前,进行app ff以后底部的边界条件就自动转为自由场地边界。
现举出一简单例子,比如静力模型的尺寸为10*10*10,有以下几种边界施加方式
1)
free x y z rang z -.1 .1
apply squiet dquiet nquiet rang z -.1 .1
apply nstress value hist wave rang z -.1 .1
apply ff
2)
free x y z rang z -.1 .1
apply ff
apply squiet dquiet nquiet rang z -.1 .1
apply nstress value hist wave rang z -.1 .1
3)
free x y z rang z -.1 .1
apply squiet dquiet nquiet rang z -.1 .1
apply ff
apply nstress value hist wave rang z -.1 .1
可以验证,以上的施加方式得到的结果是完全一样的.所谓的自由场边界最重要的特征就是复制特征,现对以上各例子做简要分析.
1)第二三两句就是在10*10的底面范围内分别设置静止边界和动力条件,当加了ff后,ff的网格的条件即从临近的maingrid的zone进行复制.所以ff的底面的位移边界和动力和maingrid完全一样.
2)第二句直接加ff边界,注意这时ff底面是free的,而且动力为0,但是接下来的3.4两句仅仅给定的是z=-.1至.1的范围,导致ff的底面也包括在内了,所以作用方式和命令流1完全相同.
3)同2的分析,同样可以得到结论但是对于以上三个命令流中的两句
apply squiet dquiet nquiet rang z -.1 .1
apply nstress value hist wave rang z -.1 .1
如果在maingrid内也指定了范围的话,情形就不一样了,比如2命令流改为
apply squiet dquiet nquiet rang z -.1 .1 x 0 10 y 0 10
apply nstress value hist wave rang z -.1 .1 x 0 10 y 0 10
这样就相当于ff的底面为ff且动力为0,而maingrid的底面为quiet且动力为nstress=value*wave.
假如先重力平衡,分
1)fix z rang bottom情况
在加quiet边界和应力波边界的时候需要先free z rang bottom吗,手册上也有app dquiet squiet,后app nvel 0 rang bottom,如果app sxz his wave 是不是就不用free z了
2)fix x y z rang bottom情况
因为手册上有加quiet边界,反力就会自动加载在quiet边界上,所以是不是根本就不用free x y z呢?像free 与不free的地表响应加速度差别很大呢.
手册中有这个例子:
free x y z rang z -.1 .1
apply squiet dquiet nquiet rang z -.1 .1
apply nstress value hist wave rang z -.1 .1
apply ff
我的理解是:
第一句:释放底面约束,为下面的输入提供条件
第二句:在底面施加quiet边界条件
第三句:在底面输入外荷载
第四句:是在模型的四周施加自由场边界,底面是当然没有自由场边界的。手册讲ff时有个图形,很清楚的显示只在模型的四周和四个边角处有自由边界条件的。另外,很容易理解上面几种情况的计算结果是相同的。因为flac里一般是不讲先后顺序的,只要你在solve之前都设置好了就可以了。不过对于apply ff命令手册里好像提到了一个限制:(K17)The dynamic boundary conditions at the base of the model should be specified before applying the free-field. 即:在施加自由场边界之前应设置好模型底面的动力边界条件。
8.复杂模型内部接触面的建立方法
最近经常遇到一些朋友在工程项目当中遇到计算模型中接触面方面的问题,大多都很类似,主要是因为在前期计算当中忽略了可能存在的接触面影响,从而在建模中没有考虑到建立接触面。而由于FLAC3D的接触面的建立必须存在两个界面,因此通常的做法是在建模中首先建立两个分开的模型,然后再一个模型表面建立接触面,最后将另外一个模型“移动”过来。而这种方法在已完成的模型当中就不能凑效了,同时因为模型通常都较复杂,建模本身花费的精力就是巨大的,如果修改模型的话,那造成大量不必要的重复劳动。本文推荐一种更加实用的接触面建立方法,通过238版本后的impgrid、expgrid等命令进行模型导入导出,花费很少的时间就可以解决复杂模型的接触面建立问题。下面用一个实例来做一下说明。
工况:3*3*3的模型,两个group,模型正中间的一个单元为gropu 2,其他为group 1,如图所示。
现在要在14号单元(即group1)周围加上接触面,模拟实际工程中可能存在的内部结构的接触面问题。下面是工作步骤:
(1)将模型文件存为1.sav;
(2)将除了需要加接触面的单元以外的所有单元删除,仅保存group 2
命令为:del ran group 2 not;
(3)在group 2 周围建立接触面,命令为:
interface 1 face range x 1 y 1 2 z 1 2
interface 1 face range x 2 y 1 2 z 1 2
interface 1 face range x 1 2 y 1 z 1 2
interface 1 face range x 1 2 y 2 z 1 2
interface 1 face range x 1 2 y 1 2 z 1
interface 1 face range x 1 2 y 1 2 z 2
建成后可以看到接触面的效果:
plo inter yel ske
可以用interface 1 face命令来默认建立整个模型的外表面接触面,这个将更加方便实用。对于复杂模型,大家可以试一试。
(4)这时候需要将上面建好的group 2 和接触面进行保存save 2.sav
(5)重新restore先前的模型,并将需要建立接触面的实体删除,再将整个模型用expgrid命令进行导出:
rest 1.sav
del ran group 2
expgrid 1.fac3d
下面的工作是这样的:将已建好的group 2和接触面的文件rest,并把其他的模型用impgrid命令进行导入:
rest 2.sav
impgrid 1.flac3d
得到的就是已经建立好接触面的模型
下面进行简单的计算,以验证接触面是否工作。
model ela
prop bulk 20e8 shear 30e8
fix x y z ran z 0
ini den 2000
set gra 0 0 -10
interface 1 prop kn 20e6 ks 20e6 c 10e3 f 15
app nstr -200e3 ran x 0 1 y 1 2 z 3
solve
可以看到接触面的接应力分布结果:
10.关于gauss_dev对性质进行高斯正态分布的问题?
根据手册上的说明:下面的命令设定一个平均摩擦角为40度,标准方差是±5%。则命令如下:prop friction 40 gauss_dev 2
问题:请问gauss_dev 2中的2是如何计算的?如果把±5%改为±10%,则命令应如何写?
40×5%=2
11.子程序运行方式
问题如下:进行迭代时子程序是如何运行的?下面命令流运行后,红色子程序仅运行一次,而绿色部分则在每次迭带时均调用。能否请高手详细结实一下程序的运行规则?为什么绿色每次调用,而红色只调用一次?
new
title Direct shear test
set log on
set logfile fa3.4.log
gen zone brick size 12 1 10 p0 4 0 6 p1 16 0 6 p2 4 1 6 p3 4 0 11
gen zone brick size 20 1 10 p1 20 0 0 p2 0 1 0 p3 0 0 5
range name bot z 0 5
range name top z 6 11
interface 1 face range z 5
int 1 prop ks 4e4 kn 4e4 fric 30 dil 6 ;tension 1e10 bslip=on
ini z add -1.0 range top
;plo surf lorange interface white axes black
model e
prop bulk 45e3 sh 30e3
fix x y z range z 0
fix x range x 0
fix x range x 20
plot create view/_int
plot add surface
plot add interface red
plot show
;pause
apply nstress -10 range z 10
step 0
plot contour szz interface white axes black
;step 100
solve
;pause
save dsta.sav
ini xvel 5e-7 range top
fix xvel range top
def ini_jdisp
valnd = 0.0
count = 0.0
p_in=i_node_head(i_head)
loop while p_in # null
if in_ztarget(p_in) # null then
valnd = valnd + in_pen(p_in)
count = count + 1.0
end_if
p_in = in_next(p_in)
end_loop
njdisp0 = valnd/count
end
ini_jdisp
def sstav
valns = 0.0
valss = 0.0
valsd = 0.0
valnd = 0.0
count = 0.0
p_in=i_node_head(i_head)
loop while p_in # null
if in_ztarget(p_in) # null then
valns = valns + in_nstr(p_in)*in_area(p_in)
valss = valss + in_sstr(p_in,1)*in_area(p_in)
valsd = valsd + in_sdisp(p_in,1)
valnd = valnd + in_pen(p_in)
count = count + 1.0
end_if
p_in = in_next(p_in)
end_loop
sstav = valss/(12.0*1.0)
nstav = valns/(12.0*1.0)
sjdisp = valsd/count
njdisp = valnd/count - njdisp0
endsstav
hist ns 1
hist sstav nstav sjdisp njdisp
ini xdis 0 ydis 0 zdis 0
step 2500
save dst.sav
plot his -1 vs -3
;pause
plot his -4 vs -3
print nstav
;pause
ret
12. reflect问题
问:1)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
这个是以xy平面作为对称面来对称。那么下面这句话:
gen zone reflect dip 90 dd 90
按照上面的分析应该按照xz平面对称,可是manual是yz平面,按理说应该是yz面;
2)关于dd的理解:dip-direction angle, measured in the global xy-plane
clockwise from the positive y-axis 这个是从y轴到x顺时针方向所转过的角度;dip dip angle, measured in the negative z-direction from the global xy-plane 这个是xy平面与z轴负方向的夹角。
dip表示对称参照面与xy平面的夹角,对称参照面与xy平面的夹角在xy平面的投影是一条射线 ,dd表示y轴正向顺时针到那条射线的夹角。首先应该按照dd的方向大体确定这个面的朝向,dd 指的是从y轴正方向按顺时针(clockwise)方向转向所要确定面的法线方向在xy平面上的投影的夹角,然后再确定dip,dip指的是从xy平面转向所要确定的平面的角.
gen zone reflect dip 90 dd 90是以YZ面.
gen zone reflect dip 90 dd 0 才是以xz为对称面的.
dip-direction 这个是从y轴到x顺时针方向所转过的角度,如果dd=0,那不就是y轴了吗?所以gen zone reflect dip 90 dd 0 不应是xz面,应该是yz面啊?
回答:dip-direction 是倾向,也就是所求面的法向在XY面上的投影的,dd 0表示倾向是0度既是Y轴正方向,所以是XZ面,那dip=0时,即平面与xy的夹角为0,也就是平行于xy面,还要定义dd干吗?dd为任何值不都一样吗?
13.第二次国际会议上的一个示例模型
def tunnel_data
x0 = 0.0
y1 = 0.0
z0 = 0.0
rad = 1.0
base = 0.7
height = 0.5
dx = 2.0
dz = 2.0
y2 = 5.0
y3 = 15.0
xr = 4.0
zt = 4.0
nx = 4
nr = 3
nu = 4
nz1 = 4
nxr = 5
nzt=5
ny1 = 8
ny2=4
raty = 1.2
ratr = 1.5
;*** DERIVED PARAMETERS ***
nz2 = 2*nx ; upper-right and top zones
ratr2=1/ratr
;Compute x-coordinates
x1 = x0+rad
x2 = x0+dx
x3 = x0+base
; Compute arc center (x4,z0) to fit arc-points (x1,z0) and (x0+base,z0-height)
x4=x0+(rad*rad-base*base-height*height)/(2.0*(rad-base))
; Compute radius of lower arc
rad2=rad-(x4-x0)
x7=x0+sqrt(2.0)/2*rad
; compute inner points for radtunnel - adjust based on nx,nu zones
x5=(x0*nu+x7*nx)/(nx+nu)
x5c=(nu*x0+nx*x7)/(nx+nu)
x5b=(nu*x0+2*nx*x7)/(2*nx+nu)
x6=(x0*nu+x2*nx)/(nx+nu)
;Compute z coordinates
z1 = z0+rad
z2 = z0+dz
z4 = z0-dz
z5 = z0-height
z6 = (z0+z4)/2
z8=z0+sqrt(2.0)/2*rad
z7=(z0*nu+z8*nx)/(nx+nu)
z7c=(nu*z0+nx*z8)/(nx+nu)
z7b=(nu*z0+2*nx*z8)/(2*nx+nu)
;slope constant of lower arc
dxz=(x3-x1)/(z5-z0)
;slope constants of upper arc
dxz2=(z8-z0)/(x7-x1)
dxz3=(x7-x0)/(z8-z1)
end
def make1
if y1#y2 then
command
; top and upper-right outside
gen zone radcyl size nx ny1 nz2 nr ratio 1 1 1 ratr group 'g1' &
p0 x0 y1 z0 & p1 x2 y1 z0 & p2 x0 y2 z0 & p3 x0 y1 z2 & p4 x2 y2 z0 & p5 x0 y2 z2 & p6 x2 y1 z2 & p7 x2 y2 z2 & p8 x1 y1 z0 & p9 x0 y1 z1 & p10 x1 y2 z0 & p11 x0 y2 z1
end_command
end_if
if y2#y3 then
command
gen zone radcyl size nx ny2 nz2 nr ratio 1 raty 1 ratr group 'g1' &
p0 x0 y2 z0 & p1 x2 y2 z0 & p2 x0 y3 z0 & p3 x0 y2 z2 & p4 x2 y3 z0 & p5 x0 y3 z2 & p6 x2 y2 z2 & p7 x2 y3 z2 & p8 x1 y2 z0 & p9 x0 y2 z1 & p10 x1 y3 z0 & p11 x0 y3 z1 end_command
end_if
end
def make2
if y1#y2 then
command
; lower-right outside
gen zone radcyl size nx ny1 nz1 nr ratio 1 1 1 ratr group 'g2' &
p0 x4 y1 z0 & p1 x2 y1 z4 & p2 x4 y2 z0 & p3 x2 y1 z0 & p4 x2 y2 z4 & p5 x2 y2 z0 & p6 x2 y1 z6 & p7 x2 y2 z6 & p8 x3 y1 z5 & p9 x1 y1 z0& p10 x3 y2 z5 & p11 x1 y2 z0
end_command
end_if
if y2#y3 then
command
; lower-right outside
gen zone radcyl size nx ny2 nz1 nr ratio 1 raty 1 ratr group 'g2' &
p0 x4 y2 z0 & p1 x2 y2 z4 & p2 x4 y3 z0 & p3 x2 y2 z0 & p4 x2 y3 z4 & p5 x2 y3 z0 & p6 x2 y2 z6 & p7 x2 y3 z6 & p8 x3 y2 z5 & p9 x1 y2 z0 & p10 x3 y3 z5 & p11 x1 y3 z0
end_command
end_if
end
def make3
if y1#y2 then
command
; bottom outside
gen zone brick size nx ny1 nr ratio 1 1 ratr2 group 'g3' &
p0 x0 y1 z4 & p1 x6 y1 z4 & p2 x0 y2 z4 & p3 x0 y1 z5 & p4 x6 y2 z4 & p5 x0 y2 z5 & p6 x5 y1 z5 & p7 x5 y2 z5
end_command
end_if
if y2#y3 then
command
; bottom outside
gen zone brick size nx ny2 nr ratio 1 raty ratr2 group 'g3' &
p0 x0 y2 z4 & p1 x6 y2 z4 & p2 x0 y3 z4 & p3 x0 y2 z5 & p4 x6 y3 z4 &
p5 x0 y3 z5 & p6 x5 y2 z5 & p7 x5 y3 z5
end_command
end_if
end
def make4
if y1#y2 then
command
; bottom-right outside
gen zone brick size nu ny1 nr ratio 1 1 ratr2 group 'g4' &
p0 x6 y1 z4 & p1 x2 y1 z4 & p2 x6 y2 z4 & p3 x5 y1 z5 & p4 x2 y2 z4 & p5 x5 y2 z5 & p6 x3 y1 z5 & p7 x3 y2 z5
end_command
end_if
if y2#y3 then
command
; bottom-right outside
gen zone brick size nu ny2 nr ratio 1 raty ratr2 group 'g4' &
p0 x6 y2 z4 &p1 x2 y2 z4 &p2 x6 y3 z4 & p3 x5 y2 z5 & p4 x2 y3 z4 & p5 x5 y3 z5 & p6 x3 y2 z5 &p7 x3 y3 z5
end_command
end_if
end
def make5
if y1#y2 then
command
; top inside
gen zone radtunnel size nx ny1 nx nu group 'g5' &
p0 x0 y1 z0 &p1 x7 y1 z0 &p2 x0 y2 x0 &p3 x0 y1 z8 &p4 x7 y2 z0 &
p5 x0 y2 z8 &p6 x7 y1 z8 &p7 x7 y2 z8 &p8 x5c y1 z0 &p9 x0 y1 z7c &
p10 x5c y2 z0 &p11 x0 y2 z7c &p12 x5b y1 z7b &p13 x5b y2 z7b
gen zone brick size nx ny1 nx group 'g5' &
p0 x0 y1 z0 &p1 x5c y1 z0 &p2 x0 y2 z0 &p3 x0 y1 z7c &p4 x5c y2 z0 &
p5 x0 y2 z7c &p6 x5b y1 z7b &p7 x5b y2 z7b
end_command
end_if
if y2#y3 then
command
; top inside
gen zone radtunnel size nx ny2 nx nu ratio 1 raty 1 group 'g5' &
p0 x0 y2 z0 & p1 x7 y2 z0 & p2 x0 y3 x0 &p3 x0 y2 z8 &p4 x7 y3 z0 &p5 x0 y3 z8 &p6 x7 y2 z8 &p7 x7 y3 z8 &p8 x5c y2 z0 &p9 x0 y2 z7c &p10 x5c y3 z0 &p11 x0 y3 z7c &p12 x5b y2 z7b &p13 x5b y3 z7b
gen zone brick size nx ny2 nx ratio 1 raty 1 group 'g5' &
p0 x0 y2 z0 &p1 x5c y2 z0 &p2 x0 y3 z0 &p3 x0 y2 z7c &p4 x5c y3 z0 &
p5 x0 y3 z7c p6 x5b y2 z7b &p7 x5b y3 z7b
end_command
end_if
end
def make6
if y1#y2 then
command
; bottom inside
gen zone brick size nx ny1 nz1 group 'g6' &
p0 x0 y1 z5 &p1 x5 y1 z5 &p2 x0 y2 z5 &p3 x0 y1 z0 &p4 x5 y2 z5 &
p5 x0 y2 z0 &p6 x5c y1 z0 &p7 x5c y2 z0
; bottom-right inside
gen zone brick size nu ny1 nz1 ratio 1 1 1 group 'g6' &
p0 x5 y1 z5 &p1 x3 y1 z5 &p2 x5 y2 z5 &p3 x5c y1 z0 &p4 x3 y2 z5 &
p5 x5c y2 z0 &p6 x7 y1 z0 &p7 x7 y2 z0
end_command
end_if
if y2#y3 then
command
; bottom inside
gen zone brick size nx ny2 nz1 ratio 1 raty 1 group 'g6' &
p0 x0 y2 z5 &p1 x5 y2 z5 &p2 x0 y3 z5 &p3 x0 y2 z0 &p4 x5 y3 z5 &
p5 x0 y3 z0 &p6 x5c y2 z0 &p7 x5c y3 z0
; bottom-right inside
gen zone brick size nu ny2 nz1 ratio 1 raty 1 group 'g6' &
p0 x5 y2 z5 &p1 x3 y2 z5 &p2 x5 y3 z5 &p3 x5c y2 z0 &p4 x3 y3 z5 &
p5 x5c y3 z0 &p6 x7 y2 z0 &p7 x7 y3 z0
end_command
end_if
end
define make7
if nxr>0 then
command
; primitive right of inner primitive - near - lower
gen zone brick size nxr ny1 nz1 ratio 1.0 1.0 1.0 group 'g7' &
p0 x2 y1 z4 &p1 xr y1 z4 &p2 x2 y2 z4 &p3 x2 y1 z0
; primitive right of inner primitive - far - lower
gen zone brick size nxr ny2 nz1 ratio 1.0 raty 1.0 group 'g7' &
p0 x2 y2 z4 &p1 xr y2 z4 &p2 x2 y3 z4 &p3 x2 y2 z0
; primitive right of inner primitive - near - upper
gen zone brick size nxr ny1 nx ratio 1.0 1.0 1.0 group 'g7' &
p0 x2 y1 z0 &p1 xr y1 z0 &p2 x2 y2 z0 &p3 x2 y1 z2
; primitive right of inner primitive - far - upper
gen zone brick size nxr ny2 nx ratio 1.0 raty 1.0 group 'g7' &
p0 x2 y2 z0 &p1 xr y2 z0 &p2 x2 y3 z0 &p3 x2 y2 z2
end_command
end_if
if nzt>0 then
command
; primitive above inner primitive - near
gen zone brick size nx ny1 nzt p0 x0,y1,z2 p1 x2,y1,z2 p2 x0,y2,z2 p3 x0 y1 zt &ratio 1.0 1.0 1.0 group g7
; primitive above inner primitive - far
gen zone brick size nx ny2 nzt p0 x0,y2,z2 p1 x2,y2,z2 p2 x0,y3,z2 p3 x0 y2 zt &ratio 1.0 raty 1.0 group g7
; primitive above right lower primitive - near
end_command
if nxr>0 then
command
gen zone brick size nxr ny1 nzt p0 x2 y1 z2 p1 xr y1 z2 p2 x2 y2 z2 p3 x2 y1 zt &
ratio 1.0 1.0 1.0 group g7
; primitive above right lower primitive - far
gen zone brick size nxr ny2 nzt p0 x2 y2 z2 p1 xr y2 z2 p2 x2 y3 z2 p3 x2 y2 zt &
ratio 1.0 raty 1.0 group g7
end_command
end_if
end_if
end
def map1a ; below tunnel center (Correct need for initial points to match
kx=(x3-x0)/(x7-x0)
p_gp=gp_head
loop while p_gp#null
; if p_gp in group 'g6', apply delta-x transformation from line to circle
if gp_group(p_gp,1)='g6' then
xx=gp_xpos(p_gp)-x0
zz=z0-gp_zpos(p_gp)
mu=zz/height
x37=x3*mu+x7*(1-mu)
kk=x3/x37
gp_xpos(p_gp)=x0+xx*kk
end_if
p_gp=gp_next(p_gp)
end_loop
end
def map1 ; below tunnel center
tanmax=height/(base-(x4-x0))
maxang=atan(tanmax)
kk=maxang/tanmax
cosmaxang=cos(maxang)
p_gp=gp_head
loop while p_gp#null
; if p_gp in group 'g6', apply delta-r transformation from line to circle
if gp_group(p_gp,1)='g6' then
xx=gp_xpos(p_gp)-x4
if xx>0 then
zz=z0-gp_zpos(p_gp)
zx=zz/xx
if zx
ang2=kk*zx ; remap from uniform lengths to uniform angles
rr=xx/cosmaxang ; remap radius from square to sector
gp_xpos(p_gp)=x4+rr*cos(ang2)
gp_zpos(p_gp)=z0-rr*sin(ang2)
end_if
end_if
end_if
p_gp=gp_next(p_gp)
end_loop
end
def map2 ; above tunnel center
angmax=pi/4
sqrt2=sqrt(2)
cosangmax=cos(angmax)
p_gp=gp_head
loop while p_gp#null
; if p_gp in group 'g5', apply delta-r transformation from line to circle
if gp_group(p_gp,1)='g5' then
xx=gp_xpos(p_gp)-x0
zz=gp_zpos(p_gp)-z0
if xx>zz then
ang2=angmax*zz/xx ; remap direction from uniform lengths to uniform angles
rr=xx*sqrt2
gp_xpos(p_gp)=x0+rr*cos(ang2)
gp_zpos(p_gp)=z0+rr*sin(ang2)
else
if zz>xx then
ang2=angmax*xx/zz ; remap direction from uniform lengths to uniform angles
rr=zz*sqrt2
gp_xpos(p_gp)=x0+rr*sin(ang2)
gp_zpos(p_gp)=z0+rr*cos(ang2)
end_if
end_if
end_if
p_gp=gp_next(p_gp)
end_loop
end
def makeall
tunnel_data
make1 ; outside top
make2 ; outside lower-right
make3 ; outside bottom
make4 ; outside bottom-right
make5 ; inside bottom (call make5 before make6 so common points mapped with map2)
make6 ; inside top
make7 ; far top and right
; remap inner tunnel walls into outer arcs
map1a ; inside bottom (adjust right side to vertical)
map1 ; inside bottom (adjust right side to sector)
map2 ; inside top
end
makeall
gen merge 1e-4
; gen zone reflect orig x0 y1 z0 norm 1 0 0
plo crea qqq
plo add block group
plo sho
pause
group 'top heading' range group g5
group invert range group g6
group rock range group 'top heading' not group invert not
pause
14.我的例子,出了问题,但不知道原因
;梯形溶洞 y 方向 范围 2 10
;create gong ding
gen zone radcyl size 1 12 10 10 p0 0 0 0 p1 7 0 0 p2 0 12 0 p3 0 0 7&
p4 7 12 0 p5 0 12 7 p6 7 0 7 p7 7 12 7 p8 5 0 0 p9 0 0 5 &
p10 5 12 0 p11 0 12 5 fill
gen zone reflect norm 1 0 0 ori 0 0 0
gen zone reflect norm 0 0 1 ori 0 0 0
group 2 range cyl end1 0 0 0 end2 0 12 0 ra 5
group 1 range x -7 7 y 0 12 z -7 7 group 2 not
;create rongdong
gen zone brick size 13 12 10 p0 7 0 -7 p1 20 0 -7 p2 7 12 -7 p3 7 0 7 group 3
gen zone brick size 16 12 3 p0 -7 0 7 p1 9 0 7 p2 -7 12 7 p3 -7 0 10 &
p4 9 12 7 p5 -7 12 10 p6 12 0 10 p7 12 12 10 group 4
;rongdong position
gen zone brick size 10 2 3 p0 9 0 7 p1 19 0 7 p2 9 2 7 p3 12 0 10 &
p4 19 2 7 p5 12 2 10 p6 16 0 10 p7 16 2 10 group 7
gen zone brick size 10 10 3 p0 9 2 7 p1 19 2 7 p2 9 10 7 p3 12 2 10 &
p4 19 10 7 p5 12 10 10 p6 16 2 10 p7 16 10 10 group 8
gen zone brick size 10 2 3 p0 9 10 7 p1 19 10 7 p2 9 12 7 p3 12 10 10 &
p4 19 12 7 p5 12 12 10 p6 16 10 10 p7 16 12 10 group 9
;rongdong dingban
gen zone brick size 20 12 2 p0 -7 0 10 p1 20 0 10 p2 -7 12 10 p3 -7 0 12 &group 5
;rongdong youbianqiang
gen zone brick size 1 12 3 p0 19 0 7 p1 20 0 7 p2 19 12 7 p3 16 0 10 &
p4 20 12 7 p5 16 12 10 p6 20 0 10 p7 20 12 10 group 6
plot add surface yellow
plot show
;create macro
macro rock 'prop bulk 2.5e8 shear 3.3e8'
mo ela range group 1 group 2 group 3 group 4 group 5 group 6 group 7 group 9
mo nu range group 8
macro rock range group 1 group 2 group 3 group 4 group 5 group 6 group 7 group 9
plot add surface yellow
plot show
set grav 0 0 -10
fix x range x -7.1 -6.9
fix x range x 20.1 19.9
fix y range y -0.1 0.1
fix y range y 12.1 11.9
fix z range z -6.9 -7.1
fix z range z 12.1 11.9
ini szz -5e4 grad 0 0 -1e4 range z 12 -7
ini sxx -5e4 grad 0 0 -1e2 range z 12 -7
ini sxx -5e4 grad 0 0 -1e2 range z 12 -7
app szz -5e4 range z 12.1 11.9
app syy -5e4 range z 12.1 11.9
app sxx -5e4 range z 12.1 11.9
set large
我的诊断:
(1)没有定义强度参数
(2)几个group取并集的时候语法错误,具体参考command reference的range这条命令。
没有定义材料参数
修改如下:
gen zone radcyl size 1 12 10 10 p0 0 0 0 p1 7 0 0 p2 0 12 0 p3 0 0 7 &
p4 7 12 0 p5 0 12 7 &p6 7 0 7 p7 7 12 7 p8 5 0 0 p9 0 0 5 p10 5 12 0 p11 0 12 5 fill
gen zone reflect norm 1 0 0 ori 0 0 0
gen zone reflect norm 0 0 1 ori 0 0 0
group 2 range cyl end1 0 0 0 end2 0 12 0 ra 5
group 1 range x -7 7 y 0 12 z -7 7 group 2 not
;create rongdong
gen zone brick size 13 12 10 p0 7 0 -7 p1 20 0 -7 p2 7 12 -7 p3 7 0 7 group 3
gen zone brick size 16 12 3 p0 -7 0 7 p1 9 0 7 p2 -7 12 7 p3 -7 0 10 p4 9 12 7 p5 -7 12 10 p6 12 0 10 p7 12 12 10 group 4
;rongdong position
gen zone brick size 10 2 3 p0 9 0 7 p1 19 0 7 p2 9 2 7 p3 12 0 10 p4 19 2 7 p5 12 2 10 p6 16 0 10 p7 16 2 10 group 7
gen zone brick size 10 10 3 p0 9 2 7 p1 19 2 7 p2 9 10 7 p3 12 2 10 p4 19 10 7 p5 12 10 10 p6 16 2 10 p7 16 10 10 group 8
gen zone brick size 10 2 3 p0 9 10 7 p1 19 10 7 p2 9 12 7 p3 12 10 10 p4 19 12 7 p5 12 12 10 p6 16 10 10 p7 16 12 10 group 9
;rongdong dingban
gen zone brick size 20 12 2 p0 -7 0 10 p1 20 0 10 p2 -7 12 10 p3 -7 0 12 group 5
;rongdong youbianqiang
gen zone brick size 1 12 3 p0 19 0 7 p1 20 0 7 p2 19 12 7 p3 16 0 10 p4 20 12 7 p5 16 12 10 p6 20 0 10 p7 20 12 10 group 6
plot add surface yellow
plot show
;create macro
;prop bulk 2.5e8 shear 3.3e8 'prop bulk 2.5e8 shear 3.3e8'
mo ela
prop bulk 2.5e8 shear 3.3e8 range group 1
prop bulk 2.5e8 shear 3.3e8 range group 2
prop bulk 2.5e8 shear 3.3e8 range group 3
prop bulk 2.5e8 shear 3.3e8 range group 4
prop bulk 2.5e8 shear 3.3e8 range group 5
prop bulk 2.5e8 shear 3.3e8 range group 6
prop bulk 2.5e8 shear 3.3e8 range group 7
prop bulk 2.5e8 shear 3.3e8 range group 9
mo nu range group 8
plot show
set grav 0 0 -10
fix x range x -7.1 -6.9
fix x range x 20.1 19.9
fix y range y -0.1 0.1
fix y range y 12.1 11.9
fix z range z -6.9 -7.1
fix z range z 12.1 11.9
ini szz -5e4 grad 0 0 -1e4 range z 12 -7
ini sxx -5e4 grad 0 0 -1e2 range z 12 -7
ini sxx -5e4 grad 0 0 -1e2 range z 12 -7
app szz -5e4 range z 12.1 11.9
app syy -5e4 range z 12.1 11.9
app sxx -5e4 range z 12.1 11.9
set large
15.建立interface的几种方法
首先给出一个简单的例子
new
gen zone brick p0 0 0 0 p1 111.4 0 0 p2 0 10 0 p3 0 0 45 size 11 1 5 group 1
gen zone brick p0 0 0 45 p1 111.4 0 45 p2 0 10 45 p3 0 0 90 p4 111.4 10 45 &p5 0 10 90 p6 47 0 90 p7 47 10 90 size 11 1 9 group 3
gen zone wedge p0 66.4 0 90.1 p1 47 0 90.1 p2 66.4 10 90.1 p3 111.4 0 45.1 &p4 47 10 90.1 p5 111.4 10 45.1 size 5 1 9 group 4
;interface 1 face rang plane norm 45,0,64.4 origin 47 5 90
interface 1 face range plane norm 45,0,64.4 origin 47 5 90 dist 0.1
ini z add -0.1 range group 4
gen zone brick p0 111.4 0 0 p1 128 0 0 p2 111.4 10 0 p3 111.4 0 45 &
size 2 1 5 group 2
model mohr
pro bulk=1e8 she=3e7 dens 2e3 coh 12e3 &
friction 20 dilation 0. tension 1.0e10 range group 1
pro bulk=1e8 she=3e7 dens 2e3 coh 12e3 &
friction 20 dilation 0. tension 1.0e10 range group 2
int 1 prop ks 2e12 kn 2e12 fric 36
pro bulk=1e8 she=3e7 dens 2e3 coh 12e3 &
friction 20 dilation 0. tension 1.0e10 range group 3
pro bulk=1e8 she=3e7 dens 2e3 coh 12e3 &
friction 20 dilation 0. tension 1.0e10 range group 4
fix z range z -0.1 0.1
fix x range x -0.1 0.1
fix x range x 127.9 128.1
fix y
set gravity 0 0 -10
step 1000
ini state 0
ini xdis 0 ydis 0 zdis 0
;ini xvel 0 yvel 0 zvel 0
;set large
step 1000
;solve fos file cable.sav associated
修改上面蓝色字体部分
第一种建立interface的方法(书上的移来移去式):
gen zone brick p0 0 0 0 p1 111.4 0 0 p2 0 10 0 p3 0 0 45 size 11 1 5 group 1
gen zone brick p0 0 0 45 p1 111.4 0 45 p2 0 10 45 p3 0 0 90 p4 111.4 10 45 &p5 0 10 90 p6 47 0 90 p7 47 10 90 size 11 1 9 group 3
gen zone wedge p0 66.4 0 90.1 p1 47 0 90.1 p2 66.4 10 90.1 p3 111.4 0 45.1 &p4 47 10 90.1 p5 111.4 10 45.1 size 5 1 9 group 4
;interface 1 face rang plane norm 45,0,64.4 origin 47 5 90
interface 1 face range plane norm 45,0,64.4 origin 47 5 90 dist=0.1
ini z add -0.1 range group 4
gen zone brick p0 111.4 0 0 p1 128 0 0 p2 111.4 10 0 p3 111.4 0 45 &
size 2 1 5 group 2
通过计算得到的xdisp云图
pl int yel sket
问:为什么第一种方法要加 dist 0.1? 加入节理以后,这个例子就不能计算fos 了?
回答:你的第2种,把group2和group4删掉,这样造成的新的模型group2和group4有重复节点,这样是不正确的。方法是在一个实体的外表面全部都设置了接触面,就是可以将两个体完全分开。而你的这个接触问题,在坡脚的位置很难处理。只用把斜坡上的部分删掉,然后导入就可以了。
人为的把group1和group2之间的交界面上多出了节点,下图是两个group的节点图,是分开显示的,可以看到两个共同面上界面标号不同,这样是不对的。计算结果也同样是错误的。
16.call fishcall.fis总是会出错呢?老是给出error opening file,该怎么操作?
错误是:文件名为 fishcall.fis.txt(因为在记事本里这个txt的后缀是默认的)。修改方法是:将 fishcall.fis.txt里面的内容全部复制到新的记事本里,再按保存,保存时候将保存类型改为所有文件(*,*),这时你便可在文件名栏内输入 fishcall.fis,类型也就正确了
17.问题:
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
问:两者有区别吗?我感觉是一样的
回答:建一个模型,然后实验一下,然后用plot gpfixt看一下。
18. 得到初始应力的方法:
方法1、可以先给一些材料参数很大的值,进行初始求解,在计算之前再将材料参数设为正常值,即可。如在手册中给的第一个示例中就是这样做的。下面是例子,These are only initial values that are used during the development of gravitational stresses within the body. In effect, we are forcing the body to behave elastically during the development of the initial in-situ stress state.* This prevents any plastic yield during the initial loading phase of the analysis.
Gen zone brick size 6 8 8
Mode mohr
Prop bulk 1e8 shear 0.3e8 fric 35
Prop cohesion 1e10 tens 1e10 ;注意在此这个值给的很大。
Init dens 1000
Set gravity 0 0 -10
Fix x range x -0.1 0.1
Fix x range x 5.9 6.1
Fix y range y -0.1 0.1
Fix y range y 7.9 8.1
Fix z range z -0.1 0.1
set mech force=50
solve
;---------------------- mode null ---------------------
Prop coh 1e3 tens 1e3 ;改为正常值(在此例中我们故意给小值)
Mode null range x 2 ,4 y 2 , 6 z 5, 10
Set large
Ini xdis 0 ydis 0 zdis 0 ;清零,不影响结果,为画图方便。
Setp 2000
return
方法2:得到初始应力的一个不错办法是设为弹性模型,然后赋予地勘信息,so以后就ok了,得到初始应力了,再把相应的位移清零,下面就可以正式进入所分析的内容了。如上例还可以先设为弹性 (MODEL elastic),之后在开挖之前再设为 Mohr-Coulomb model, 就行。
19.关于初始应力的问题
Example 3.21 Initial stress state with gravitational gradient
for example, a 20 m[1] 20 m[1] 20 m box of
homogeneous material at a depth of 200 m underground, with fixed base and stress boundaries onthe other sides.
gen zone brick size 10,10,10 p1 20,0,0 p2 0,20,0 p3 0,0,20
model mohr
prop bulk 5e9 shear 3e9 fric 35
ini density 2500
set gravity 0,0,-10
fix x y z range z -0.1 0.1
ini szz = -5.0e6 grad 0,0,2.5e4
ini sxx = -2.5e6 grad 0,0,1.25e4
ini syy = -2.5e6 grad 0,0,1.25e4
apply szz = -4.5e6 range z 19.9 20.1
apply szz = -5.0e6 range z -0.1 0.1
apply sxx = -2.5e6 grad 0,0,1.25e4 range x -0.1 0.1
apply sxx = -2.5e6 grad 0,0,1.25e4 range x 19.9 20.1
apply syy = -2.5e6 grad 0,0,1.25e4 range y -0.1 0.1
apply syy = -2.5e6 grad 0,0,1.25e4 range y 19.9 20.1
它的意思是通过ini szz来赋予初始地应力,但是为何又有set gravity 0,0,-10?这样不是重复了吗?
ini是模型的内力,set grav是外力施加对模型的作用力,没有外力怎么有内力?一般而言,这样是为了计算比较快,因为这样设置以后,此时几乎已经平衡,了,计算步较少了,变形也就很少了嘛,当然最好再在以后计算时初始化位移为0,但初始化位移与否(在这种情况下),并不会明显影响计算结果的.当然还有另一种方法就是开始时设成弹性的(model elas)(或者还是mohr的但参数给的要大一些,目的是防止破坏),直接运行到平衡达来获取初始应力值,在真正计算时再改成mohr并将参数改为真实的数值,这种方法更适合于单元不太多,因为比较简单.但如果单元数目很多的话,那么此种方法速度会很慢的.
关于初始地应力及其算法,有两个疑问:
1)为何一定要让模型达到初始平衡再进行计算?
2.)那种改大参数,让模型在自重下平衡得到初始应力场的做法中,要将哪些参数改大呢?bul she coh ?还是改其他哪几个?
回答:
1)这是模拟多数现场施工前的实际情况,并非总是如此,例如土钉墙施工,如果开挖后立即加土钉,就无须先平衡再加土钉再SOLVE.
2) 取决于具体模型,核心思想是用该模型在此阶段模拟弹性模型.对于MOHR-COULOMB模型, 这样做(将COHESION,TENSION设置很大的值)与SOLVE ELASTIC是等价的.但对于别的模型,SOLVE LASTIC并不适用,最好用改变参数的方法来加快计算速度和防止屈服.另外一点: 在FLAC/FLAC3D中, SET命令作用于整个网格(赋值全局变量),INI则初始化指定范围内网格点/域的偏移量.初始应力不仅仅是重力引起的。它还包括土压力,水浮力,上方建筑物的力,这些信息的勘测一般都不容易获得。通常可以把模型材料设为弹性,再把两个模量设到很大solve后再把模量和材料还原可得。具体可以看以前关于初始应力的帖子。不只是这样的,set grav不是直接将力仅仅加在底层上,而是作用在上面,如果没有初始应力的话,地层就会有相应的变形直到地层变形和产生的力与之平衡。所以应当通过initial来初始化应力,而这个力与density相匹配。我是做地铁开挖的如果没有初始化的话地层在开挖前就有了沉降。这与实际不符合。设置重力的原因不是为了平衡减少程序计算步骤,而是因为如果未初始化应力的话,在set grav的时候,模型会在自重应力下发生应力变形。所以,初始化应力的原因是防止模型在自重应力下发生变形(我们认为地层自重变形已经发生,当然欠固结等现象是另外一回事)。其实就是让模型发生变形,然后把位移清零也可以的。有种方法,不少人也在用,就是为了得到初始应力值,先将材料参数放大到很大,获得初始值以后再恢复到正常参数。
20. Tension-p shear-p tension-n shear-n表示的含义
在计算的循环里面,每个循环中,每个zone都依据failure criterion处于不同的状态,shear 和tension分别表示因受剪和受拉而处于塑性状态.n表示now,p表示previous,即分别表示在现在和以前的循环当中处于塑性状态.
21. 有一个例子:
gen zone cyl p0 0 0 0 p1 1 0 0 p2 0 2 0 p3 0 0 1 size 4 5 4
gen zone reflect norm 1,0,0
gen zone reflect norm 0,0,1
model mohr
prop bulk 1.19e10 shear 1.1e10
prop coh 2.72e5 fric 44 ten 2e5
fix x y z range y -.1 .1
fix x y z range y 1.9 2.1
ini yvel 1e-7 range y -.1 .1
ini yvel -1e-7 range y 1.9 2.1
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
结果在“原点位移.dat”文件中只有:“Step 1 Y-Displace”
而没有保存下数值,怎么回事?我怎么才能获得table中的数据?
修改:
gen zone cyl p0 0 0 0 p1 1 0 0 p2 0 2 0 p3 0 0 1 size 4 5 4
gen zone reflect norm 1,0,0
gen zone reflect norm 0,0,1
model mohr
prop bulk 1.19e10 shear 1.1e10
prop coh 2.72e5 fric 44 ten 2e5
fix x y z range y -.1 .1
fix x y z range y 1.9 2.1
ini yvel 1e-7 range y -.1 .1
ini yvel -1e-7 range y 1.9 2.1
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
save a 'print tabel n' will solve your second qusetion
22.这个plot是什么意思?
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
plot 显示 hist 历史曲线 曲线2为横坐标,曲线一为纵坐标
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而是负值?
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
1) 在plot hist m vs n的形式里,m代表y轴,n代表x轴(不管m,n的正负);
2) "-"表示对其值作"mirror",如果大家使用AUTOCAD的话就明白"mirror"的含义了,比如上面的 hist 1 gp ydisp的值是0~100,那么vs -1就变成-100~0.以此类推.
3) 为什么要这么做呢?主要是为了符合岩土工程的习惯需要,例如桩载荷试验曲线,沉降曲线等都不是画在第一象限内.
23.关于water.fis的命令注释(设置地下水位)
1)water.fis的功能是设置地下水位面,在二维计算中,通过water table命令即可设置水位线,在三维计算中由于地下水位是面,因此需要作一些插值运算,以便形成水位面。这个FISH程序包含三个函数parm,aux1和aux2。parm用来设定水位的边值,即设置水位的区域,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作一些总的说明。water.fis程序反复使用了这三个变量,理解了这三个变量的含义,water.fis这段程序就解决了大半问题了。
Itasca的所有软件都使用了相同的数据结构储存数据,称之为链表结构,类似于关系型数据库中的数据链接方法。如果有数据结构的知识,或掌握关系型数据库的SQL语言,这三个变量的含义就不难理解了,只不过这个操作与真正的数据库操作相比,只有两个数据变量x,y。我用数据库的术语作解释:table就是产生一个“表”,xtable,ytable的作用就是产生一个新表(Create)以及对表中的数据进行取出(Select)、插入(Insert)、替换(Update)操作.
4)FISH函数aux1的作用是在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)组数据,这些数据为Aux2调用。注意:本段程序产生的数据是为那个特定的曲面边坡制作的,不是一个general purpose的LIB
5)FISH函数aux2的作用是使用WATER TABLE face命令产生水
面,把table 1的ytable值作为z坐标,aux1产生的数据作为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
24.产生结构元的几何形状(Geometry Creation)
FLAC3D有6种类型的结构单元,它们分别是梁单元beamSELs,锚杆单元cableSELs,桩单元pileSELs,壳单元shellSELs,地质网格单元geogridSELs和衬砌单元linerSELs.每一种类型的结构由相应分量对象的集合来表示。例如锚杆结构(cable)由一系列的cableSELs组成,而衬砌结构(liner)则由一系列的linerSELs组成。每种结构元都由两个不同的辨识号码来表示,以便与其它结构元相区别。
用Seltype命令和相应的关键字来定义结构单元:Seltype beam/cable/geogrid/liner/pile/shell,每一种支护类型的性质用SEL 命令的property关键字定义.
History SEL keywords
ID:用来标识一个结构对象,比如第一根锚杆的ID=1,第二根锚杆的ID=2,它是对整个结构进行编号;
CID:用来表示一个结构对象内部的分量,比如一根锚杆划分为3段,则这根锚杆的CID分别是1,2,3,用来表示这根锚杆的不同部分。
ID是为结构进行编号,CID是为结构的分量进行编号。比如下面的例子:
sel pile id=1 begin=(10.0, 1.0, 0.0) end=(10.0, 1.0, -10.0) nseg=5
sel pile id=2 begin=(10.0, 3.0, 0.0) end=(10.0, 3.0, -10.0) nseg=5
在这个例子中,设置了2根桩,第一根桩以id=1来表示,第二根桩以id=2来表示;第一根桩分为5段,则cid=1~5,第二根桩也分为5段,则cid=6~10。 可以用plot sel geom 命令来查看设置是否正确。
问题: 我设了三根桩,
sel pile id=1 begin=(10.0, 1.0, 0.0) end=(10.0, 1.0, -3.0) nseg=3
sel pile id=2 begin=(10.0, 3.0, 0.0) end=(10.0, 3.0, -3.0) nseg=3
sel pile id=3 begin=(10.0, 5.0, 0.0) end=(10.0, 5.0, -3.0) nseg=3
图中红色的数字1-3-4-2代表什么?是node?还是link?
生成node的时候,如果周围存在zone,会自动生成link,而且link和node位置总是重合的
25. 基于ansys复杂地质体flac模型自动生成
首先将复杂的三维地质模型建于ansys,然后导出结点坐标信息和单元信息,最后运用此程序就可以生成复杂地质体的flac命令,用flac程序运行此命令就可以生成复杂地质体的flac模型。
复杂的三维地质模型一般是在cad中建立的,然后导入ansys中,通过此它建立复杂地形的flac模型。用autocad建好模型后,输出为.sat文件,就可以导入到ansys,不用软件转换。
26. 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
根据情况更改。
27.一段fish命令的解释
def aux1 定义函数
loop n(1,nptab1) 开始一个循环,从1循环到变量nptab1
rr=xtable(1,n) 从table 1 的x列中读第n个数付给变量rr
zz=ytable(1,n) 从table 1 的y列中读第n个数付给变量zz
loop k(1,nprof) 开始第二个循环,从1循环到变量nprof
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=1的时候执行下面语句
xtable(n+10,k)=rr table n+10的x列第k个值等于变量rr
ytable(n+10,k)=-40.0 table n+10的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 执行什么定义的函数
28. 如何删除指定区域的塑性区?
可以通过分组塑性区来查看
def plasticarrange
zp=zone_head
loop while zp # null
curr_state=z_state(zp,0)
if curr_state # 0
z_group(zp)='yield'(这以后的什么意思?)
else
z_group(zp)='other'
endif
zp=z_next(zp)
endloop
end
plasticarrange
pr curr_state
是将塑性区分组为yield,再用model null ran gr yield
29.有关命令的解释
1) apply nvel 0.1 plane dip 60 dd 270 range left_boun
apply 施加边界条件,plane法向速度为0.1,plane 面的位置:倾角60(在xoy平面从-Z轴方向逆时针旋转),dd 走向270度,从+y方向绕z轴顺时针旋转;
2) ini szz -5e4 grad 0 0 -1e4
ini 初始边界条件,szz=-5e4+x*0+y*0+-z*-1e4,注:-5e4是range范围起点坐标的SZZ值,x,y,z所施加应力网格点的坐标。
30. 问:做的边坡开挖是一个四面体或是契体,除了在建模过程中单独建模再开挖以外,还有什么方法?单独建模的话,模型比较复杂,而且网格不太好统一。
回答:用group定义,然后在挖掉即可,
斜面你可以采用wedge来建立,或用brick建立,
但是设置斜面要用:
norm (X X X) ori (X,X,X) above x x1 x2 y y1 y2 z z1 z2
31. 渗流示例
;------------------------------参数部分
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 exc1.sav ; 保存
;
; --- 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 exc2.sav ;保存
;
; --- 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 exc3.sav ;保存
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
32.VB中调用FLAC与FLAC调用VB程序
在VB中调用Flac3d.exe的源代码:
Private Sub Command1_Click()
'定义打开Flac时返回的值
Dim Flac As Long
'在VB中调用Flac3d
Flac = Shell("E:/工具箱/FLAC 3D/flac3d v3.00-251/Flac3d v3.00/f3d300.exe", vbNormalFocus)
' 激活Flac,使其窗口获得焦点
'AppActivate Flac
'使用代码模拟键盘输入
' 按下回车键给计算器
SendKeys "{Enter}", True
'SendKeys "gen zone brick", True
'SendKeys "{Enter}", True
'SendKeys "plot surface", True
'SendKeys "{Enter}", True
'SendKeys "{Enter}", True
'调用命令流
SendKeys "call F:/VB/work/test.dat", True
SendKeys "{Enter}", True
End Sub
test.dat:
restore tcav3.sav
call stable.dat
stable.dat:
;;显示支撑轴力得变化
plot hist 7
;;excavate the fourth layer
model null ran group pcav4
;;支撑稳定性判断程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;读出数据,将其输到文件c:/panda/t1.txt中
;;read the force from flac
def stable
loop t(1,200) ;每500步判断一次
;;计算200步
command
step 200
endcommand
command
;;删除旧有文件
Sys del F:/VB/work/t1.txt
;;打开文件开关,并将支撑轴力录入到c:/panda/t1.txt中。
set log on
set logfile F:/VB/work/t1.txt
print sel beam force
set log off
;;调用vb程序
Sys start /wait F:/VB/work/inputdata.exe
endcommand
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;读入数据之前的定义
a_size = 1
IO_READ = 0
IO_WRITE = 1
IO_FISH = 0
IO_ASCII =1 ;当需要读入,需使用ASCII模式
filename = 'output.txt' ; 注意:如果要进行文件操作,必须先定义,不能直接使用。
;;读入数据
;;define the array
array var(1)
;;3.输入数据
status=open(filename,IO_READ,IO_ASCII)
status=read(var,a_size)
status=close
;;将在z_d初始化为零
z_d=0
;;对数据类型进行转化
z_d=int(var(1))
;;判断是否失稳,如果输入数据为0,则继续循环,如果输入数据为1,则判断失稳并跳出循环将所有杆刚度设为0
if z_d=1 then
command
;;将所有杆设置刚度设为很小
sel beam id=1 prop density 1.9 emod=1.0e8 nu=0.0003 &
xcarea=0.00968 xciy=0.844e-3 xciz=0.844e-3 xcj=0
endcommand
exit
endif
endloop
end
stable
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
solve
save pcav4.sav
inputdata.exe的源代码:
'工程文件路径
Public strInputPath As String
Public strOutputPath As String
Private Sub Form_Load()
'隐藏窗口
Me.Hide
'定义极限荷载
Dim Plim As Single
'定义杆件失稳标记
'如果杆件失稳则输出1,如果没有失稳则输出0
Dim nFlag As Integer
Plim = 10.44 * 100000# '根据0.85的折减系数而得
'定义单元编号
Dim nEleID As Integer
'定义节点编号
Dim nNodeID As Integer
'定义杆件节点的轴力的分量
Dim F(1 To 3) As Single
'定义字符串变量
Dim str As String
'定义读入数据前忽略的行数
Dim nLine As Integer
nLine = 21
'定义欲读入单元的个数
Dim nElement As Integer
nElement = 10
'定义每个单元的节点数
Dim nNode As Integer
nNode = 2
'定义可供Open语句使用的文件号
Dim nInputFile As Integer
Dim nOutputFile As Integer
'FreeFile函数返回一个Integer,代表下一个可供Open语句使用的文件号
nInputFile = FreeFile
nOutputFile = nInputFile + 1
'打开文本文件
strInputPath = "F:/VB/work/t1.txt"
strOutputPath = "F:/VB/work/output.txt"
Open strInputPath For Input As #nInputFile
Open strOutputPath For Output As #nOutputFile
'读入忽略的行数
For i = 1 To nLine
Line Input #nInputFile, str
Next i
'读入数据
'For i = 1 To nElement
For i = 1 To 1
For j = 1 To nNode
'If j = 1 Then
' Input #nInputFile, nEleID, nNodeID, F(1), F(2), F(3)
'Else
' Input #nInputFile, nNodeID, F(1), F(2), F(3)
'End If
If j = 1 Then
Input #nInputFile, nEleID
End If
Input #nInputFile, nNodeID, F(1), F(2), F(3)
'将轴力值与杆件的极限载荷相对比,如果杆件失稳则输出1,如果没有失稳则输出0
If j = 1 Then
If Plim < (-F(1) * 3) Then
nFlag = 1
Else
nFlag = 0
End If
Write #nOutputFile, nFlag
End If
Next j
Next i
'关闭文件
Close #nInputFile
Close #nOutputFile
'卸载窗体
Unload Me
33. 用什么命令可以位移图中显示最大位移点的坐标呀????
用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
end
get_gp_maxdisp
33. 如何显示计算后模型的变形状态?
plot keyword magfac value
value 取大于0的值即可,当然要想看的明显,应该取大一点比较好~
34如何查看剖面上任一点的位移值?
print gp disp range x() y( ) z( )或
print gp disp range id
plot gp disp range x() y( ) z( )或
plot gp disp range id
35. group命令时的疑惑
我在用group划分区域时,遇到了斜线条,该怎么整啊,我只知道平行于轴的区域的划分
group groupname colour range plane above dd ** dip ** origin *** below dd ** dip ** origin ***
dd 和dip就是两个斜面的倾向和倾角,origin是这个斜面通过的某个点,这个命令就可以group两个斜面间的区域.试一下看行不行.
我试了一下,不行的,缺个plane
group groupname colour range plane above dd ** dip ** origin *** plane below dd ** dip ** origin ***
36.请问各位:ansys导入flac的时候,能划分一下group吗?如何实现?给兄弟我一个详细的解释如何?
在ansys中对不同group用不同的材料号(mat)定义,再用ansys2flac之类的程序转换成flac的.dat文件就可,group自动生成。
37. fix x y z range x -0.1 0.1 ..........................a
fix x range x -0.1 0.1................................b
请问a式与b式有何区别?
a 表示 在x=0 这个平面 是固定的
b 表示在x=0 这个平面 只x方向不能发生运动。
38. initial 与 apply 区别
initial初始化命令,如初始化计算体的应力状态等;
apply边界条件限制命令,如施加边界的力、位移等约束等。
initial的应力状态会随计算过程的发生而发生改变,一般体力需要初始化
apply施加的边界条件不会发生变化 而