FLAC3D500命令流新语法
Flac3D500不管是界面还是命令流都与3DEC统一,用过3DEC的用户使用Flac3D5.0会比较得心应手。下面简要介绍一下5.0与3.0语法的差别。1. 显示plot
gen zone brick p0 10 0 0 size 10 10 10
plot zgroup ; flac3d300: pl bl gr
pl zg ra x 0 10
2. 函数
def test
a = 10
test = a
end
@test
print @a
带参数的函数
def test(para1)
aa = para1 *2
test = aa
end
print @test(11)
The definition
DEFINE abc(one,two)
END
is equivalent to
DEFINE abc
argument one
argument two
END
3. vector用法
def para
pos = vector(0,1,2)
array arr(2,2)
loop i(1,2)
loop j(1,2)
arr(i,j)=i*j
endloop
endloop
loop i(1,2)
aa = arr(i,i)
command
print @aa ; not print @arr(i,i)
endcommand
; ii = out(string(aa))
endloop
end
@para
@tst
def tst
tst = ycomp(pos)
igp = gp_near(787,80,1081)
xpos = gp_x(igp)
tst = xpos
igp = gp_next(igp)
end
@tst
gen zone brick size 15 15 15 p0 @base ...
p1
p2
p3
4. 采用loop foreach进行list循环
;flac3d300
def coord
pnt = gp_head
loop while pnt # null
xpos = gp_xpos(pnt)
pnt = gp_next(pnt)
endloop
end
@coord
;flac3d500
def tst
pnts = gp_list
loop foreach pnt pnts
xpos = gp_xpos(pnt)
ss = buildstr('xpos: %1',xpos);buildstr参数化字符
ii = out(ss)
endloop
end
5. 清除数组
def clear
arr = 0
pos = 0
;all access to that array is lost and the memory will not be recovered until a NEW command is issued
end
@clear
6. 局部变量
local abc = one * two
list fish
7. 例子
new
def in_def(msg,default)
local xx = in(buildstr('%1 (default:%2):',msg,default))
if type(xx) = 3
in_def = default
else
in_def = xx
end_if
end
def moduli_data
local default = 1.0e9
local y_mod = in_def('Input Young\'s modulus',1.0e9)
local p_ratio = in_def('Input Poisson\'s ratio',0.25)
if p_ratio = 0.5 then
local ii = out('Bulk mod is undefined at Poisson\'s ratio = 0.5')
ii = out('Select a different value --')
p_ratio = in_def('Input Poisson\'s ratio',0.25)
end_if
;
global s_mod = y_mod / (2.0 * (1.0 + p_ratio))
global b_mod = y_mod / (3.0 * (1.0 - 2.0 * p_ratio))
end
@moduli_data
;
gen zone brick size 10 10 10
model mech elastic
prop bulk=@b_mod shear=@s_mod
list zone prop bulk
list zone prop shear
new
def make_hole
global x_bou = 400.0
global y_bou = 200.0
global z_bou = 200.0
global rad = 20.0
global n_inner
global n_total
global n_1 = n_inner
global n_2 = n_total
global n_3 = 2 * n_inner
global n_4 = n_total - n_inner
end
; FLAC3D input ---
set @n_inner=5 @n_total=10
@make_hole
; create grid
gen zone radcylinder size @n_1,@n_2,@n_3,@n_4 ...
p0 (0,0,0) p1 (@x_bou,0,0) p2 (0,@y_bou,0) p3 (0,0,@z_bou) ...
dim (@rad,@rad,@rad,@rad)
new
def series
global new_fric = 85.0
global step_lim = 1000
global inc_fric
local ipt = gp_near(1,5,1)
local n
loop n (1,8)
command
prop fric = @new_fric
ini stress 0,0,0,0,0,0
ini vel (0,0,0)
ini disp (0,0,0)
list @new_fric
set mech step @step_lim force 50
solve step 1000 force 50
endcommand
xtable(1,n) = new_fric
ytable(1,n) = log(abs(gp_ydisp(ipt)))
new_fric = new_fric - inc_fric
end_loop
end
gen zone brick size 3 5 3
model mech mohr
prop bulk 1e8 shear .3e8 coh 1e4 ten 1e4 dens 2500
fix y range y -0.1 0.1
set grav (0,-10,0)
set @inc_fric = 5
@series
plot table 1 style both
set @grpnam 不错,学习了
希望有更多5.0新功能使用 赞一个。。。。 谢谢分享 请教楼主一个问题,这是我在5.0里面运行丁版主的剑桥模型命令流时遇到的问题!运行到这句时出错,报错说不识别“grpnam”:set grpnam='soil_3_x_out' p_ratio=0.24 fai=30 _lambda=0.14 _kappa=0.012 _mp1=1e3 _e0=0.8 _cu=10e3 OCR=1.0
请问这句要怎么修改呢?我发现很多set命令流都会报错,楼主能不能具体讲一下set在5.0中怎么使用!
以下是详细命令流:
def cam_prop
pnt=zone_head
loop while pnt # null
if z_group(pnt)=string(grpnam) then ;note:新增控制分组参数,grpnam=分组名称。
abs_sxx=abs(z_sxx(pnt)) ;|sxx|
abs_syy=abs(z_syy(pnt)) ;|syy|
abs_szz=abs(z_szz(pnt)) ;|szz|
p0=(abs_sxx+abs_syy+abs_szz)/3.0
;cam-clay模型中p、q均须为正值,p0由初应力场确定,故cam-clam定义模型参数前须先已知初应力
p0_effective=p0-z_pp(pnt) ;p0'
;q0=sqrt(((abs_sxx-abs_syy)^2+(abs_syy-abs_szz)^2+(abs_szz-abs_sxx)^2)*0.5)
q0=sqrt(((abs_sxx-abs_syy)^2+(abs_syy-abs_szz)^2+(abs_szz-abs_sxx)^2)*0.5+3.0*((z_sxy(pnt))^2+(z_sxz(pnt))^2+(z_syz(pnt))^2))
z_prop(pnt,'mm')=6.0*sin(fai*degrad)/(3.0-sin(fai*degrad));①注三角函数中需将角度转化为弧度
temp1=q0/(z_prop(pnt,'mm')*p0_effective)
pc0=p0_effective*(1.0+temp1^2)*OCR ;先期有效固结压力,用于确定屈服面
v0=1.0+_e0
z_prop(pnt,'cam_cp')=p0_effective ;★重要参数,否则不能正确计算有效应力,提示出错"Mean effective pressure is negative"
z_prop(pnt,'mpc')=pc0 ;②
z_prop(pnt,'poisson')=p_ratio ;③
z_prop(pnt,'lambda')=_lambda ;④
z_prop(pnt,'kappa')=_kappa ;⑤
z_prop(pnt,'mp1')=_mp1 ;⑥
z_prop(pnt,'mv_l')=v0+_lambda*ln(2.0*_cu/(z_prop(pnt,'mm')*_mp1))+(_lambda-_kappa)*ln(2.0);⑦
z_prop(pnt,'bulk_bound')=100*40e6 ;⑧
;z_prop(pnt,'bulk_bound')=100*(s_mod+4.0/3.0*s_mod) ;弹性体模上界Kmax
;自动确定Kmax时会出现“property bad”错误提示
;因为弹性上界对计算结果无影响,在不提示Kmax太小的性况下,取值越小计算收敛越快
endif
pnt=z_next(pnt)
endloop
end
model mech cam-clay
set grpnam='soil_3_x_out' p_ratio=0.24 fai=30 _lambda=0.14 _kappa=0.012 _mp1=1e3 _e0=0.8 _cu=10e3 OCR=1.0;模型所需参数
@cam_prop
set grpnam='soil_1_x_out' p_ratio=0.24 fai=30 _lambda=0.14 _kappa=0.90_mp1=1e3 _e0=0.8 _cu=10e3 OCR=1.0;模型所需参数
@cam_prop
echowasd 发表于 2015-5-6 00:19
set @grpnam
谢谢echowasd大哥指点,调试通了,感激不尽! 做好标记以后学习! 学习了,5.0的计算速度快很多么? 学习了,5的模型怎么倒啊 gyc3017 发表于 2015-5-24 08:48
学习了,5的模型怎么倒啊
http://forum.simwe.com/thread-1107630-1-1.html 学习了,谢谢! echowasd 发表于 2015-5-24 16:26
http://forum.simwe.com/thread-1107630-1-1.html
谢谢,把那个西南交大编写的程序装进电脑了~~非常感谢 echowasd 发表于 2015-5-24 16:26
http://forum.simwe.com/thread-1107630-1-1.html
ACAD_SurferAns.dll这个怎么加载的,有没有教程啊?万分感谢啊 gyc3017 发表于 2015-5-26 08:16
ACAD_SurferAns.dll这个怎么加载的,有没有教程啊?万分感谢啊
http://forum.simwe.com/thread-1107638-1-1.html :(:):):):):):):) 谢谢分享 我来取经的,, 号好东西啊啊 啊 flac3D5.0如何显示变形后的网格啊?命令是什么?
页:
[1]
2