资源描述
1、怎样查看模型?
答:plot grid 可以查看网格,plot grid num 可以查看节点号。
2、请问在圆柱体四周如何施加约束条件?
答:可以用fix ... ran cylinder end1 end2 radius r1 cylinder end1 end2 radius r2 not,其中r2<r1,其实就是选择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、怎么能把一个PLOT的图像数据导出来以便用其他软件绘图?
答:用set log on 命令,把数据导出来,转到excel里处理一下,然后用surfer或者什么作图软件绘制就行了。
4、用命令建立模型后,如何显示点的坐标?
答:使用plo blo gro gpnum on命令
5、关于gauss_dev对性质进行高斯正态分布的问题?
答:根据手册上的说明:下面的命令设定一个平均摩擦角为40度,标准方差是±5%。则命令如下:prop friction 40 gauss_dev 2
问题:请问gauss_dev 2中的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 (对xy面做镜像)
gen zone reflect dip 90 dd 90 (对yz面做镜像)
(1)dd表示y轴正向顺时针到那条射线的夹角,dip表示对称参照面与xy平面的夹角,对称参照面与xy平面的夹角在xy平面的投影是一条射线。首先应该按照dd的方向大体确定这个面的朝向,dd 指的是从y轴正方向按顺时针(clockwise)方向转向所要确定面的法线方向
在xy平面上的投影的夹角,然后再确定dip,dip指的是从xy平面转向所要确定的平面的角.(及z轴负方向转过角度)
(2)命令:reflect normal xyz origin xyz (根据法线和过一点建的面)最常用,至于实际使用过程中有人问道:normal -1 0 0 与normal 1 0 0的区别,我试过两者的效果是一样的,没区别,虽然方向不同,但表达的是同一个面。
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施加的力、边界条件不会随着计算变化。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代表y轴,n代表x轴(不管m,n的正负);
2) "-"表示对其值作"mirror",如果大家使用AUTOCAD的话就明白"mirror"的含义了,比如上面的 hist 1 gp ydisp的值是0~100,那么vs -1就变成-100~0.以此类推.
3) 要这么做主要是为了符合岩土工程的习惯需要,例如桩载荷试验曲线,沉降曲线等都不是画在第一象限内。
12、 关于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
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命令的解释
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 执行什么定义的函数
15、有关命令的解释
(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所施加应力网格点的坐标。
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 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
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
end
get_gp_maxdisp
18、 如何显示计算后模型的变形状态?
答:pl sk magfac **(一个放大的数字)
19、如何查看剖面上任一点的位移值
答:print gp disp range x() y( ) z( )或 print gp disp range id
plot gp disp range x() y( ) z( )或 plot gp disp range id
20、group命令划分斜面
答:group groupname colour range plane above dd ** dip ** origin *** plane below dd ** dip ** origin ***
dd 和dip就是两个斜面的倾向和倾角,origin是这个斜面通过的某个点,这个命令就可以group两个斜面间的区域
21、ansys导入flac的时候,如何划分一下group
答:在ansys中对不同group用不同的材料号(mat)定义,再用ansys2flac之类的程序转换成flac的.dat 文件就可,group自动生成。
22、 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方向不能发生运动。
23、如何知道每个单元的ID?
答:用鼠标双击单元的表面,可以知道单元的ID和坐标。
24、如何进行切片?
答:plo set plane ori (点坐标) norm (法向矢量)
plo con sz plane (显示z方向应力的切片)
这两行命令,用来显示指定面上的位移变化云图(把第二行改改,还可以显示应力云图,等其他);
plot con syy y向应力云图
plot con szz outline on z向应力云图加显示网格
plot con szz effective on z向有效应力
plot con szz inter 1e4 云图显示增量(后面的值越小,图上颜色条带就越细,)
plot con szz min -10e4 显示最小值,图上小于这个数的值都用同一色表示
plot con szz max 10e4 显示最大值,图上大于这个数的值都用同一色表示
plot fip outside on 显示力的箭头
现在看边界,如果是不动面,用fix x range…如果边界带速率,或位移用ini…
set grav 0 0,-9.81
ini dens 1000
设置重力就一定要设置密度,不考虑重力就不要设计密度。两者共存的,设计程序的时候一定要记的。
set mech force 50
solve
用SET命令设定了最大不平衡力的上限值为50N,即:计算的最大不平衡力一旦小于此值,我们便人为模型达到了平衡状态。求解过程终止。设置这个目的是在一定精度要求下,加快计算(值越大,算的量越少,花的时间也越少)。
25、如何在程序中进行暂停,并可恢复计算?
答:在命令中加入pause命令,用continue进行继续。
在我们分步求解中想得到某一个过程中的结果,不用等到全求完,还可以在分布求解错误的时候就进行改正,而不是等到结果出来。
26、如何跳过某个计算步?
答:在计算中按空格键跳过本次计算,自动进入下一步
27、Fish是什么东西?Fish是否一定要学?
答:是FLAC3D的内置语言,可以用来进行参数化模型、完成命令本身不能进行的功能。Fish可以不用学,需要的时候查Mannual获得需要的变量就可以了。
28、如何调用一些可选模块?
答:config dyn (fluid, creep, cppudm)
29、range的命令:
①取圆球面的范围,就是同一个中心,不同半径之间夹的那一部分,用在给球面施加力,约束时用该命令,命令:
range annulus center xyz(中心坐标)radius r1 r2(两半径),想要表达的是球面时,r1r2取值相差小点即可,如radius 2.9 3.1 这时范围就是半径为3的面。
②圆柱的环面施加力或约束时也用到该命令。
range cylinder end1 xyz end2 xyz radius r(end是表示柱体断面的中心点坐标)
range plane above 表示的是z大于0的上部结构
range plane blow 表示的是z小于0的下部结构
range dd a dip b origin xyz 表示的是走向角度a,倾向角度b的面
dd表示,当面与xoy面相交时的垂线与y轴正向的夹角,顺为正,说白话,就是面的指向方向面是朝那个方向的意思。
dip面与xoy面的夹角,与z轴负向为正,origin表示面经过xyz点;
range normal xyz 法线方向为xyz的面
range not 没试用过(范围外的东西,想想用到圆上取范围非常好)。
30、如何调用FISH文件?
答:新手调用FISH文件出错的原因:是:文件名为 fishcall.fis.txt(因为在记事本里这个txt的后缀是默认的)。修改方法是:将 fishcall.fis.txt里面的内容全部复制到新的记事本里,再按保存,保存时候将保存类型改为所有文件(*,*),这时你便可在文件名栏内输入 fishcall.fis,类型也就正确了。
31、问a式与b式有何区别?
答:fix x y z range x -0.1 0.1 ..........................a
fix x range x -0.1 0.1................................b
a 表示 在x=0 这个平面 是固定的;
b 表示在x=0 这个平面 只x方向不能发生运动。
32、如何查看各个时段不平衡力的具体数值?
答:采用his来记录计算,包括位移应力等 命令his unbal;
his gp(zone) zdis range (0 0 0) 或者id=?;
导出数据命令his write n vs m begin 时步 end 时步+ file filename.his
n表示纪录的id m表示时步;
要导出不平衡力的具体数值
his unbal
step 100000 or solve
his write 1 vs step begin 1 end 1000 file 123.his
使用上述命令就可以查看各个时步下的不平衡力的具体数值。
33、如何显示变形轮廓线的命令?
plo ske magf 10 其中10为放大系数
34、怎样查看模型的矢量图?
pl grid vel (disp) red
plo blo gro可以看到不同的group的颜色分布(看模型的样子);
plo gpfix red sk 看模型的边界情况
plo fap red sk 看模型的体力分布
plo con dis (xdis, ydis, zdis) 看模型的云图:位移
plo con sz (sy, sx, sxy, syz, sxz) 看模型的云图:应力
plo dis (xdis, ydis, zdis) 看模型的矢量图
plo info 看模型有多少单元、节点
plot grid 可以查看网格,plot grid num 可以查看节点号。
plot fix 查看边界条件
plot grid mark 查看预先留设的开挖边界
pl syy (sxx xdis ydis sig1..
展开阅读全文