yyttmm 发表于 2007-7-17 13:36:10

用fish实现duncan-chang模型问题请教(附命令流)

我用fish写了一个实现duncan-chang模型(没考虑波松比变化,直接用E和0.33算bulk和shear modulus)。模拟三轴试验没问题,但是模拟实际问题的时候就有问题,主要是因为某些zone会受到拉力,我不知道怎么处理。而且切线模型那个公式在处理实际问题的时候常常会算出很夸张的模量。以前看过有人写过这种外挂的duncan-chang,不知道你们是怎么处理的。

我这里贴了一个模拟三轴试验的模型,是没有问题的,有问题的那个算起来太长,就不浪费大伙的时间了。主要是问题我在注释中打了***,希望大家讨论一下给点意见。

new
;; build the sample
gen zone cyl size 1 2 3 p0 0 0 0 p1 0.0372 0 0 p2 0 0 -0.160 p3 0 0.0372 0

gen zone reflect dd 0 dip 90 ori 0 0 0
gen zone reflect dd 90 dip 90 ori 0 0 0

;; give the soil a very large modulus
model elas
prop b=1.96e11 s=7.52e10

;; boundary condition

fix z range z -0.17 -0.15

;; apply sigma3
apply nstress -68.95e3 range cy end1 0 0 -0.17 end2 0 0 0.1 r 0.03 not

;; apply sigma1
apply nstress -68.95e3 range z -0.015 0.015
solve

ini xdis=0 ydis=0 zdis=0

;;;;;;; duncan
def duncan
zn=zone_head

loop while zn # null
   
    ps1=-z_sig1(zn);;获得该zone最大主应力,flac里压应力为负值,所以加了个负号,如果该zone受拉,则假设该zone受很小的压力,因为duncan-chang模型里没有拉力。
    if ps1<0
    ps1=0.01
    endif

    ps3=-z_sig3(zn);;最小主应力也是一样
    if ps3<0
    ps3=0.01
    endif

    if ps1<ps3;;flac里最大最小主应力是由主应力大小而不是绝对之大小决定的,所以经常是反的,这里检查一下。如果反了换过来。
    pst=ps1
    ps1=ps3
    ps3=pst
    endif
   


    tempnum=1-Rf*(1-sin(ff*degrad))*abs(ps1-ps3)/(2*cc*cos(ff*degrad)+2*ps3*sin(ff*degrad)) ;;这是计算切线模量时前边那个系数,这里abs也可以不用因为前边检查过了

    ;; ***在模拟复杂模型时,有时最大主应力比最小主应力大很多,这个值会变成负值,导致平方后远远大于1,在下面的共式中就会得到很大的E_mod。***
    ;; 所以我考虑当tempnum<0时干脆就让他等于0.1。但是结果不理想。
   

    E_mod=Ke*101.3e3*(ps3/101.3e3)^n*tempnum^2

    ;;***上面这个公式是计算切线模量的,但是对于某些最小主应力为拉力的zone,前面设了ps=0.01,这里可能会算出一个很小的模量。这样整个模型很容易坏。***
   
    B_mod=E_mod/3/(1-2*p_ratio)
   
    G_mod=E_mod/2/(1+p_ratio)
   
    zid=z_id(zn)
   
    command
    prop bulk=B_mod shear=G_mod range id zid
    endcommand
zn=z_next(zn)

endloop

end

set Rf=0.85 cc=0 ff=42 Ke=300 n=0.4 p_ratio=0.33

;; 后面这些是分级加载的fish

table 1 0 0
set large
def haha
loop m (1,13)
    devistress=20e3*m
    ttstress=-1*devistress-68.95e3
    command
    duncan
    apply nstress ttstress range z -0.015 0.015
    solve
    endcommand
    ppp=find_gp(1)
    ttt=-gp_zdisp(ppp)/0.160*100
    command
    table 1 ttt devistress
    endcommand
endloop
end
haha

plot table 1 both

zlxxd 发表于 2007-7-17 17:40:14

也想做这方面的东西。顶一个:lol

yyttmm 发表于 2007-7-18 12:28:37

没人感兴趣吗?

hxbhwj 发表于 2007-7-18 19:02:59


好东西。顶一个:lol

xuelei 发表于 2007-7-19 13:13:48

好啊

好东西

ansys2007 发表于 2007-7-20 21:34:35

这个东西是非常经典的!!!必须得顶!!!!

ansys2007 发表于 2007-7-20 21:46:09

对了,好象没有回弹吧?

yyttmm 发表于 2007-7-20 23:26:51

回复 #7 ansys2007 的帖子

No, I didn't consider the unloading because the load I model is increasing all the way to failure.

ansys2007 发表于 2007-7-21 16:36:24

能加你QQ吗?我们可以合作 呵呵,如果你有兴趣的话

chunhuo420 发表于 2007-7-21 21:49:43

原帖由 ansys2007 于 2007-7-21 16:36 发表 http://www.simwe.com/forum/images/common/back.gif
能加你QQ吗?我们可以合作 呵呵,如果你有兴趣的话

合作哦。有钱分吧,嘿嘿。。。帮楼主问得。嘎嘎

cdstudio 发表于 2007-8-4 05:40:19

给你发个东西吧,我也不知道有没有用。

tmm_sugar 发表于 2007-9-15 09:43:45

首先,楼主定义的弹性模量是卸载及重复加载模量。
楼主在定义弹性模量等参数时,应该是按照m从1到13分别计算,也就是说一共算了13次参数的值,我个人认为应该是每step一次求一次主应力值,由于个参数与主应力有关,也就是每step一次,各参数重新定义一次。不知道楼主怎么样认为?

tmm_sugar 发表于 2007-9-15 09:46:35

首先,楼主定义的弹性模量是卸载及重复加载模量。
楼主在定义弹性模量等参数时,应该是按照m从1到13分别计算,也就是说一共算了13次参数的值,我个人认为应该是每step一次求一次主应力值,由于个参数与主应力有关,也就是每step一次,各参数重新定义一次。不知道楼主怎么样认为?

dubing222 发表于 2007-9-15 10:15:21

看不懂郁闷

dubing222 发表于 2007-9-15 10:21:21

给你发个东西吧,我也不知道有没有用。



附件
2007-8-4 05:40
下载次数: 20 Mduncan.rar (1.72 KB)
请问哥们这个模型能用吗?

横之爱 发表于 2007-9-17 17:13:58

关注邓肯张模型

zhenghaoqnhw 发表于 2007-11-9 15:35:10

真是好东东!!!!!

sjzdh 发表于 2010-7-31 10:28:45

也想下载学习学习

sjzdh 发表于 2011-5-3 15:55:31

也下载看看了

ansys平安 发表于 2011-5-10 22:30:22

这个东西是非常经典的!!!必须得顶!!!!
页: [1] 2
查看完整版本: 用fish实现duncan-chang模型问题请教(附命令流)