echowasd 发表于 2014-9-4 23:11:54

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

echowasd 发表于 2015-5-6 00:19:58

set @grpnam

yaoguen 发表于 2014-9-5 09:08:33

不错,学习了
希望有更多5.0新功能使用

xiaowoniu 发表于 2014-9-10 23:45:16

赞一个。。。。

sjzdh 发表于 2014-10-18 06:47:21

谢谢分享

745257116 发表于 2015-5-5 22:56:12

请教楼主一个问题,这是我在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



745257116 发表于 2015-5-6 08:43:44

echowasd 发表于 2015-5-6 00:19
set @grpnam

谢谢echowasd大哥指点,调试通了,感激不尽!

yebochuan 发表于 2015-5-21 17:41:43

做好标记以后学习!

一知半解 发表于 2015-5-23 11:45:21

学习了,5.0的计算速度快很多么?

gyc3017 发表于 2015-5-24 08:48:26

学习了,5的模型怎么倒啊

echowasd 发表于 2015-5-24 16:26:00

gyc3017 发表于 2015-5-24 08:48
学习了,5的模型怎么倒啊

http://forum.simwe.com/thread-1107630-1-1.html

zyx0507 发表于 2015-5-25 10:46:56

学习了,谢谢!

gyc3017 发表于 2015-5-26 08:06:02

echowasd 发表于 2015-5-24 16:26
http://forum.simwe.com/thread-1107630-1-1.html

谢谢,把那个西南交大编写的程序装进电脑了~~非常感谢

gyc3017 发表于 2015-5-26 08:16:21

echowasd 发表于 2015-5-24 16:26
http://forum.simwe.com/thread-1107630-1-1.html

ACAD_SurferAns.dll这个怎么加载的,有没有教程啊?万分感谢啊

echowasd 发表于 2015-5-26 13:46:22

gyc3017 发表于 2015-5-26 08:16
ACAD_SurferAns.dll这个怎么加载的,有没有教程啊?万分感谢啊

http://forum.simwe.com/thread-1107638-1-1.html

cocoffee2008 发表于 2015-5-28 11:39:50

:(:):):):):):):)

sjzdh 发表于 2015-10-5 06:31:40

谢谢分享

DFHW 发表于 2015-11-17 15:44:12

我来取经的,,

jins00a 发表于 2016-4-20 11:12:33

号好东西啊啊 啊

hushifei 发表于 2016-5-20 17:14:47

flac3D5.0如何显示变形后的网格啊?命令是什么?
页: [1] 2
查看完整版本: FLAC3D500命令流新语法