本期给大家带来一个宏文件的开发与使用全过程,宏文件功能如文章标题所示,给任意曲面施加任意方向的均布压力。
我们在做分析时,有时候总避免不了需要给某些特定的曲面施加特定方向的荷载,常用给面施加压力的有SFA命令,但SFA命令总是沿着面的法向,荷载转换到单元上面也是沿着单元法向的,所以当面法向不一致时,要施加同一个方向的荷载就比较头疼了。解决这种窘境的一个好方法是采用表面效应单元解决,事实上,很多时候,要实现复杂曲面统一方向荷载的施加都是靠表面效应单元解决,例如土木结构里面经常用到的投影荷载。
采用表面效应单元时,每一次都要新建单元,并且要根据荷载方向的特性,设定不同的单元关键项,水哥有时候觉得甚是麻烦(主要是懒),故编写了如下宏文件,能较好的一步到位根据曲面形状施加各种方向的荷载,供同学们参考使用,本宏文件目前只针对采用壳单元模拟的情况。
本宏文件思路如下:
1、选取需要施加的面
2、根据面,选择相应的单元
3、获取单元信息
4、计算等效节点荷载
5、循环施加荷载。
宏文件命令流如下:
*Create,Arbpres,mac
Save,Arbs1,Db !预防使用错误,用Resume,S1,Db返回
Esla,S$Nsla,S,1
*Get,Elnum,Elem,,count !获取单元数目
*dim,Eleno,,Elnum !存储单元号
*get,e1,elem,,num,min
eleno(1)=e1
*do,i,2,elnum
e1=elnext(e1)
eleno(i)=e1
*enddo
Dofsel,S,Fx,Fy,Fz
Fcum,Add !荷载加载设置为叠加
*Do,I,1,Elnum
*If,Arg1,Eq,1,Then
Esel,S,,,eleno(i)
*Get,E_area,Elem,Eleno(i),Aproj,Arg2 !用单元投影面积
*Else
*Get,E_area,Elem,Eleno(i),Area !用单元真实面积
*Endif
ArbP=Arg3 !压力荷载值
ArbF=ArbP*E_area
Esel,S,,,eleno(i)
Nsle,S,Corner
*Get,N_num,Node,,Count
F_N=ArbF/N_num
*Do,J,1,N_Num
*if,Arg5,eq,1,then
F,Nelem(Eleno(i),J),Arg4,F_N !施加节点荷载
*elseif,Arg5,eq,-1,then
F,Nelem(Eleno(i),J),Arg4,-F_N
*Enddo
*ENDDO
Esla,s
Fcum,Repl !荷载加载设置为替换
Dofsel,All
Allsel
!清除临时变量
ELnum=$ArbP=$ArbF=$F_N=$N_num=$Inum=$E_area=
*End
!宏文件结束
本宏文件有五个参数,使用前需要将我们施加的面选中,然后在调用该宏,五个参数的含义分别如下:
1、使用格式:Arbpres,Arg1,Arg2,Arg3,Arg4,Arg5
2、Arg1:1或0,是否进行面积投影,1代表投影,0代表否
3、Arg2: ‘x’、’y’或’z’,当Arg1=1时有效,指定面积投影方向
4、Arg3: 压力荷载值
5、Arg4: ‘fx’、’fy’或’fz’,指定压力的加载方向
6、Arg5:方向正负调整,1代表与指定方向想同,-1代表相反
7、注意,如果不小心使用错误,或者发生了未可知的错误警告等,可以采用Resume,Arbs1,db命令恢复未加载前模型
注意Arg2、Arg4采用的是字符型变量,在输入的时候需要用‘ ’符号。
【案例验证】
如下所示一圆筒结构,长1m,半径0.15m,厚0.01m,材料为钢材,跨中0.4m范围内表面受均布压力10Mpa,采用ANSYS对其分析。
1、采用表面效应单元
分析思路:结构使用壳单元模拟,采用四分之一模型计算,用工作平面将跨中400mm范围切割出,划分网格,然后在跨中中生成表面效应单元,最后使用表面单元加载,主要过程命令流如下:
finish
/clear
/prep7
l=1000
r=150
t=10
et,1,shell63
et,2,surf154
keyopt,2,11,2 !整面,否则为投影面
!=========
!建模
!=========
asel,s,loc,z,300,700
esla,s,1
type,2
real,2
esurf
esel,r,type,,2
sfe,all,5,pres,,10,0,-1.0,0
/psf,pres,,2
eplot
!=============
!加载、求解、后处理
切割示意图如下:
加载示意图如下:
计算位移总图:
2、采用本文编制的宏文件
分析思路:用工作平面将跨中400mm范围切割出,划分网格,然后选中跨中要加载的几何面,直接调用本宏文件即可,主要过程如下:
!==============
!建模
!==============
!选中要加载的面
Asel,s,loc,z,300,700
!调用宏文件
Arbpres,0,’Y’,10,’FY’,-1
!============
!加载求解
加载示意图如下:
计算位移总图:
通过计算结果的对比,可以发现本宏文件能很好的实现均布荷载的导荷,通过调用的方式避免了设置表面效应的麻烦。
那么疑问来了,如果我们施加的方向不是沿整体坐标系方向呢?这时候的处理办法如下:
1、沿着我们加载的方向建立平行的局部坐标系;
2、选中加载区域的节点,旋转节点坐标系至第一步建立好的局部坐标系
3、调用本文宏文件即可。
下面做一个演示,同样的案例,将荷载方向调整45度,如下所示:
!==============
!建模
!==============
local,11,0,,,,45 !创建局部坐标系
csys,0
asel,s,loc,z,300,700
nsla,s,1
csys,11
nrotat,all !旋转节点坐标系
!调用宏文件
Arbpres,0,’Y’,10,’FY’,-1
!============
!加载求解
加载示意图如下:
求解结果云图如下:
有兴趣的同学可以采用表面效应单元的方式对比计算下~~!
祝好
ANSYS结构院
2020.03.05
暂无评论内容