下图所示为一厚壁圆筒,内半径r1=50mm,外半径r2=100mm,作用在内孔上的压力p=10MPa,无轴向力,轴向长度可视为无穷。欲计算径向应力σr和切向应力σt沿圆筒半径r方向的分布。
图1-1 厚壁圆筒问题
根据材料力学知识,σr、σt沿r方向的分布的解析解为:
将r1、r2以及p值带入上式进行计算,得到径向应力σr最大值为-10MPa,切向应力σt最大、最小值分别为16.67MPa、6.67MPa。
2.应力分量的坐标转换式
根据弹性力学知识,应力分量坐标转换计算图示以及转换结果见下图。
图2-1 应力分量坐标转换计算图示及计算公式
3.数值求解代码
该问题符合平面应变问题条件,故可以简化为平面应变问题。在FLAC3D中进行分析时,可将模型厚度(Y方向)取一小值进行建模分析。
# case-01
import itasca as it
import math
it.command("python-reset-state false")
# 模型参数
r1 = 50 # 内半径/mm
r2 = 100 # 外半径/mm
th = 5 # 轴向厚度/mm
s_r = 30 # 径向网格数量
s_th = 1 # 轴向网格数量
s_t = 30 # 环向网格数量
E = 2e5 # 弹性模量/MPa
v = 0.3 # 泊松比
p = -10 # 内孔压力/MPa
# 建模计算
it.command("""
model new
model largestrain off
;建模
zone create cylindrical-shell point 0(0,0,0) point 1({0},0,0) point 2(0,{1},0) point 3(0,0,{0}) point 4({0},{1},0)...
point 5(0,{1},{0}) point 8({2},0,0) point 9(0,0,{2}) point 10({2},{1},0) point 11(0,{1},{2}) size {3} {4} {5}
zone reflect origin (0,0,0) normal (-1,0,0)
zone reflect origin (0,0,0) normal (0,0,-1)
;赋予本构、参数
zone cmodel assign elastic
zone property young {6} poisson {7}
;边界条件
zone face skin
zone face apply velocity-normal 0 range group 'south' or 'north'
zone face apply stress-normal {8} range group 'west'
;求解
model solve
""".format(r2,th,r1,s_r,s_th,s_t,E,v,p))
# 圆心坐标
xc = 0.0
zc = 0.0
# 遍历求解各单元径向、切向应力
for z in it.zone.list():
;计算夹角正弦、余弦
xz = z.pos_x()
zz = z.pos_z()
r = math.sqrt((xz-xc)**2+(zz-zc)**2)
sin = zz/r
cos = xz/r
;获取应力分量
sxx = z.stress()[0][0]
szz = z.stress()[2][2]
sxz = z.stress()[2][0]
;根据图2-1计算各单元径向、切向应力
sig_r = sxx*cos**2+szz*sin**2+2*sxz*cos*sin
sig_t = sxx*sin**2+szz*cos**2-2*sxz*cos*sin
;设置径向、切向应力Extra云图
z.set_extra(1,sig_r)
z.set_extra(2,sig_t)
# 解析解
sig_r_max = str(-1.0*r1**2*p/(r2**2-r1**2)*(1-r2**2/r1**2))
sig_t_min = str(-1.0*r1**2*p/(r2**2-r1**2)*(1+r2**2/r2**2))
sig_t_max = str(-1.0*r1**2*p/(r2**2-r1**2)*(1+r2**2/r1**2))
print(sig_r_max,sig_t_min,sig_t_max)
3.结果对比
径向应力云图见图3-1。由图可知:径向应力最大值计算结果为-10.05MPa,与解析解-10MPa相比,误差率为0.5%。
图3-2 切向应力云图