Ansys Workbench 估计圆柱面受力变形后的圆柱度

问题:

仿真过程中有时会遇到要求提取圆柱面在受力变形后的圆柱度。若此时圆柱面有刚体偏移等,就无法直接在workbench界面中通过创建圆柱坐标系而读取圆柱度信息。

Ansys Workbench 估计圆柱面受力变形后的圆柱度的图1

解决方案:

通过apdl后处理命令,提取待评估圆柱面的几何信息和变形信息。利用matlab强大的优化计算功能,评估圆柱面在变形后的圆柱度。

Ansys Workbench 估计圆柱面受力变形后的圆柱度的图2

matlab评估圆柱度大致过程为,根据圆柱面节点,确定中心轴线,测量每个节点到中心轴线的距离,获得最大、最小距离差,即为圆柱度。

• 依据初始圆柱面确定中心点O,作为圆柱面的初始中心点;

• 以中心点O,计算O点到壁面的最小距离点A;

• 参考O、A点筛选合适的点B,要求点B尽可能在圆柱面轴线垂直的法平面附近,且∠BOA近似90°;(要求圆柱面圆周方向大于25个节点,轴向大于20层节点

• 以O、A、B三个点为平面,提取法向向量,作为圆柱面的初始轴线;

• 根据初始中心点和初始轴线,结合圆柱度定义,构建目标函数;

• 利用matlab的优化极值功能,优化和中心点和轴线方向,使得目标函数获得极小值。此时中心点和轴线方向即为变形后所有节点的理想圆柱中心线;

操作方法:

首先,需要利用APDL后处理命令,在仿真模型计算后,提取待评估圆柱面的几何信息和变形信息。

1、 在named Selection中选择要评估的圆柱面,并命名为cyFace1、cyFace2、cyFace3…等。每个圆柱面单独命名。

Ansys Workbench 估计圆柱面受力变形后的圆柱度的图3

2、 在求解Solution下插入Command命令,将附录1的APDL命令复制进来。并根据上一步补创建的cyFace数量,在command的属性栏ARG1内,填写数值。

Ansys Workbench 估计圆柱面受力变形后的圆柱度的图4

3、 求解计算。计算完成后会在对应的目录文件夹下生产cyFace#.txt文档。

Ansys Workbench 估计圆柱面受力变形后的圆柱度的图5

至此仿真计算工作已经完成,下步需要借助matlab(R2021B)软件完成圆柱度的估计。

利用matlab的自动优化求解极值的强大计算能力,构建圆柱度目标函数,评估原始圆柱面和变形后圆柱面的,圆柱度。

1、 打开matlab后将工作目录选择到附件的matlabProcess文件夹,选择mainProcess.m右键“运行”。

Ansys Workbench 估计圆柱面受力变形后的圆柱度的图6

2、 运行程序后弹出txt文件选择框,选取仿真求解后处理生成的cyFace1.txt文件,即可。

Ansys Workbench 估计圆柱面受力变形后的圆柱度的图7

3、 稍等片刻即可在命令栏内显示圆柱度评估结果。Output值共两行,第一行为初始圆柱面在变形前评估的圆柱度结果。第二行为cyFace面在受力变形后评估的圆柱度结果。并且显示两个散点图,左侧图为初始圆柱面(红色和绿色线表示选定A/B点);右侧图为变形后的圆柱面,中心黑色线,为程序估计的圆柱面中心轴线。

Ansys Workbench 估计圆柱面受力变形后的圆柱度的图8

附录1:Command命令,在结果后处理中,提取cyFace#面的每个节点的原始坐标和变形量。(每次APDL命令内容无需更改,计算完成后会在对应的目录文件夹下生产cyFace#.txt文档)

!*******选择圆柱面组******导出节点编号,坐标位置,变形量,变形后的节点位置

!*******圆柱面组命名规则cyFace(NUM)*******

!*******设定face面的个数faceCount

*set,faceCount,ARG1 !由属性栏参数定义监测面的个数

!*set,faceCount,2

!*******main process

finish

/post1

set,last

*do,iFace,1,faceCount

*set,surfaceName,'cyFace%iFace%'

!*set,surfaceName,'face1'

allsel

cmsel,s,%surfaceName% !选取自定面,nameselection为cyface1、cyface2..。

*get,nodeCount,node,0,count !节点个数

*dim,nodeLoc,array,nodeCount,3,1 !三维数组

*dim,nodeDir,array,nodeCount,3,1

*dim,nodeTotal,array,nodeCount,3,1

*dim,nodes,array,nodeCount,1,1

*get,nodeMin,node,0,num,min !最小节点编号

*do,i,1,nodeCount

    nodes(i)=nodeMin !最小节点编号开始循环,提取坐标,方向变形量,并求和

    *get,nodeLoc(i,1),node,nodes(i),loc,x

    *get,nodeLoc(i,2),node,nodes(i),loc,y

    *get,nodeLoc(i,3),node,nodes(i),loc,z

    *get,nodeDir(i,1),node,nodes(i),u,x

    *get,nodeDir(i,2),node,nodes(i),u,y

    *get,nodeDir(i,3),node,nodes(i),u,z

    nodeTotal(i,1)=nodeLoc(i,1)+nodeDir(i,1)

    nodeTotal(i,2)=nodeLoc(i,2)+nodeDir(i,2)

    nodeTotal(i,3)=nodeLoc(i,3)+nodeDir(i,3)

    nodeMin=ndnext(nodeMin) !循环至下一个节点

*enddo

*cfopen,%surfaceName%,txt !导出至txt文件

*vwrite,nodes(1),nodeLoc(1,1),nodeLoc(1,2),nodeLoc(1,3),nodeDir(1,1),nodeDir(1,2),nodeDir(1,3),nodeTotal(1,1),nodeTotal(1,2),nodeTotal(1,3)

(f9.1,' ',f16.6,' ',f16.6,' ',f16.6,' ',f16.8,' ',f16.8,' ',f16.8,' ',f16.8,' ',f16.8,' ',f16.8)

*cfclose

*enddo

以下内容为付费内容,请购买后观看

App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

7
3
1