在分析中,可能涉及到复杂的面荷载的施加,比如切向的面荷载或者呈一定角度的面荷载,ANSYS的面荷载仅仅能施加垂直于面方向的荷载,这样的角度控制往往是一个问题。另外一种情况就是面荷载的大小随着位置的不同而不同,这样的荷载也比较难以施加。
本次分析一个挡土墙,墙体底部全部约束,但是侧面受到和水平方向呈16.5度的土压力,大小随着埋深的增加而增加,如下图所示:
荷载表达式如下所示:
\[P = 1.71 \times {10^4} \times (h + 1)\]
根据模型情况,荷载的施加大致具有两种方式,一是采用表面效应单元,比如SURF153或者SURF154添加;而是可以通过APDL语言进行程序编制,本文将采用第二种方式进行施加,基本方法如下:
- 选出要施加荷载的面,并赋予SHELL63单元,划分面网格;
- 对生成的单元执行下面的循环操作;
- 计算每一个单元计算面积和中心X、Y、Z坐标
- 将坐标带入表达式计算函数值,并乘以单元面积得到单元的合力;
- 将合力平均分配到四个节点上,并按照角度施加;
- 对每一个面完成操作后,删除SHELL63单元。
根据上述的思路,首先建立有限元模型,如下图所示:
下面建立完成之后,增加一个新的单元SHELL63,并选择墙体背面的面,如下图所示:
将选择的面直接从新赋予SHELL63号单元,之后划分网格,并采用下面的语句进行荷载加载:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
*get,enmax,elem,,num,max !得到选择集中最大的单元号 *get,enmin,elem,,num,min !得到选择集中最小的单元号 dofsel,s,fx,fy,fz !选择将进行操作的自由度 fcum,add !将力的施加方式设置为"累加",而不是缺省的"替代" *do,i,enmin,enmax !开始对第enmin号到第enmax号单元的循环 *if,esel(i),eq,1,then !选择语句,判断当前单元是否在选择集中 *get,ae,elem,i,area !得到单元真实面积 xe=centrx(i) !单元中心的X坐标(用于求解压力值) ye=centry(i) !单元中心的Y坐标(用于求解压力值) ze=centrz(i) !单元中心的Z坐标(用于求解压力值) !输入压力随坐标变化的公式 p_e=1.71e4*(ye-1) !压力公式 f_tot=p_e*ae !单元上的合力 esel,s,elem,,i !选择第i个单元 nsle,s,corner !选择单元角点上的节点 *get,nn,node,,count !得到当前选择集中节点的个数 f_n=f_tot/nn !得到每个节点上需施加的力 *do,j,1,nn !此循环对第i个单元上的每个节点施加集中力 f,nelem(i,j),fx,f_n*cos(16.5*3.14/180) !压力的作用方向为X方向 f,nelem(i,j),fy,f_n*sin(16.5*3.14/180) !压力的作用方向为Y方向 *enddo *endif esla,s !重新选择面上所有单元 *enddo |
加载完成之后,删除面上的SHELL63号单元即可,这样做是因为在加载完成之后,ANSYS会将荷载转换到有限元模型的节点上,与单元已经无关,因此可以直接删除该单元。加载完成之后如下图所示:
之后全选所有模型,进行求解,求解结果如下图所示:
APDL代码以如下所示:
模型为测试模型,APDL代码不公开,如有需要请留言。
本文隐藏内容 登陆 后才可以浏览