ansys 如何生成内力图
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 13:36:31
ansys 如何生成内力图
大哥,我是新手!
大哥,我是新手!
1.绘制弯矩图
建立弯矩单元表.例如梁单元
i节点单元表名称为imom,j节点单元表名称为jmom,
ETABLE,NI,SMISC,1 !单元I点轴力
ETABLE,NJ,SMISC,7 !单元J点轴力
ETABLE,QI,SMISC,2 !单元I点剪力
ETABLE,QJ,SMISC,8 !单元J点剪力
ETABLE,MI,SMISC,6 !单元I点弯矩
ETABLE,MJ,SMISC,12 !单元J点弯矩
plls,MI,MJ
2.标注弯矩图
PLOTCTRLS>>NUMBERING>>SVAL ON即可在画出弯矩图的同时在图上标出弯矩值的大小
3.调整弯矩图
如果弯矩图方向错误,则绘制弯矩图命令为
plls,imom,jmom,-1
同一个节点处两边的单元内力有细微差别,
导致内力数字标注出现重影.观察上面整体轴力图也可以发现,
一段一段的,好像马赛克,其实上面整体弯矩图也是,不过不是
很明显罢了.这是EULER-BEONOULI梁理论以及ANSYS输出定义造成
的(详细原因就不展开了,看看梁理论的书和ANSYS的说明吧).
为了修正重影和节点两边内力值不一样的问题,遍制了宏文件ITFAVG.MAC
命令文件内容如下:
!---------------------------------------------------------------------
!宏:ITFAVG.MAC(INTERNAL FORCE AVERAGE MACRO)
!获取线性单元内力,并对单元边界处的内力进行平衡
!输入信息
!内力类型:MFORX,MFORY,MFORZ,MMOMX,MMOMY,MMOMZ
*ASK,ITFTYPE,'PLEASE INPUT THE TYPE OF INTERNAL FORCE','MMOMY'
!需处理的单元包
*ASK,EASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF ELEMENTS TO BE PROCESSED!',
'EOUTER'
!需处理的节点包
*ASK,NASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF NODE TO BE PROCESSED!','NOU
TER'
!无需处理的节点包
*ASK,UNASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF THE UNCHANGED NODE!(NONE I
F THERE'S NO SUCH COMPONENT)','NONE'
/POST1
!输入信息:内力类型,欲处理单元的集合,欲处理节点的集合
!ITFTYPE='MMOMY'
!EASSEMBLY='EOUTER'
!NASSEMBLY='NOUTER'
!按内力类型确定ANSYS输出信息SMISC的编号
*IF,ITFTYPE,EQ,'MFORX',THEN
ITFINUM=1
ITFJNUM=7
*ELSEIF,ITFTYPE,EQ,'MFORY',THEN
ITFINUM=2
ITFJNUM=8
*ELSEIF,ITFTYPE,EQ,'MFORZ',THEN
ITFINUM=3
ITFJNUM=9
*ELSEIF,ITFTYPE,EQ,'MMOMX',THEN
ITFINUM=4
ITFJNUM=10
*ELSEIF,ITFTYPE,EQ,'MMOMY',THEN
ITFINUM=5
ITFJNUM=11
*ELSEIF,ITFTYPE,EQ,'MMOMZ',THEN
ITFINUM=6
ITFJNUM=12
*ELSE
*ENDIF
!对不需平均的节点进行处理
*IF,UNASSEMBLY,NE,'NONE',THEN
!选出不进行处理的节点包并获取不进行处理节点的数目
CMSEL,S,UNASSEMBLY
*GET,UNNODNUM,NODE,0,COUNT
!定义长度为UNNODNUM的数组(UNNOD),以存放选中单元的单元编号
*DIM,UNNOD,ARRAY,UNNODNUM
!将选中单元的编号按顺序存入数组UNNOD
*DO,I,0,UNNODNUM-1,1
UNNOD(I+1)=NDNEXT(I)
*ENDDO
*ELSE
UNNODNUM=0
*ENDIF
!选出所需的单元和节点包
CMSEL,S,EASSEMBLY
CMSEL,S,NASSEMBLY
!获得当前选中单元总数(存入变量SELELENUM)
*GET,SELELENUM,ELEM,0,COUNT
!定义长度为SELELENUM的数组(ELENUM),以存放选中单元的单元编号
*DIM,ELENUM,ARRAY,SELELENUM
!将选中单元的编号按顺序存入数组ELENUM
*DO,I,0,SELELENUM-1,1
ELENUM(I+1)=ELNEXT(I)
*ENDDO
!获得当前选中节点总数(存入变量SELNODNUM)
*GET,SELNODNUM,NODE,0,COUNT
!定义长度为SELNODNUM的数组(NODNUM),以存放选中单元的单元编号
*DIM,NODNUM,ARRAY,SELNODNUM
!将选中单元的编号按顺序存入数组NODNUM
*DO,I,0,SELNODNUM-1,1
NODNUM(I+1)=NDNEXT(I)
*ENDDO
!定义所需的线性单元内力ETABLE,节点I的内力存入数组ITNFI,
!节点J的内力存入数组ITNFJ
ETABLE,ITNFI,SMISC,ITFINUM
ETABLE,ITNFJ,SMISC,ITFJNUM
!定义所需的结果数组,并将其置零
ETABLE,ITNFINEO,SMISC,5
SADD,ITNFINEO,ITNFI,1
ETABLE,ITNFJNEO,SMISC,11
SADD,ITNFJNEO,ITNFJ,1
*DO,K,1,SELNODNUM,1
!处理不需平均的节点
INDEX=0
*IF,UNNODNUM,GE,1,THEN
*DO,J,1,UNNODNUM
*IF,NODNUM(K),EQ,UNNOD(J),THEN
INDEX=1
*ELSE
*ENDIF
*ENDDO
*ELSE
*ENDIF
*DO,J,1,SELELENUM,1
!选出和节点K相连的线性单元中,I节点(对线性单元而言)为节点K的单元编号
*IF,NELEM(ELENUM(J),1),EQ,NODNUM(K),THEN
ELEI=ELENUM(J)
*EXIT
*ELSE
*ENDIF
*ENDDO
*DO,J,1,SELELENUM,1
!选出和节点K相连的线性单元中,J节点(对线性单元而言)为节点K的单元编号
*IF,NELEM(ELENUM(J),2),EQ,NODNUM(K),THEN
ELEJ=ELENUM(J)
*EXIT
*ELSE
*ENDIF
*ENDDO
*IF,INDEX,EQ,0,THEN
*IF,ELEJ,NE,0,THEN !有可能出现ELEJ为0的情况
!取出I节点为节点K的单元的I节点端的内力放入参数ETELEI
*GET,ETELEI,ELEM,ELEI,ETAB,ITNFI
!取出J节点为节点K的单元的J节点端的内力放入参数ETELEJ
*GET,ETELEJ,ELEM,ELEJ,ETAB,ITNFJ
!平均节点K的单元的I节点端的内力和节点K的单元的J节点端的内力
ETAVE=(ETELEI+ETELEJ)/2
!将平均后的内力存入结果数组中
DETAB,ELEI,ITNFINEO,ETAVE
DETAB,ELEJ,ITNFJNEO,ETAVE
*ELSE
*ENDIF
*ELSE
*ENDIF
*ENDDO
/UDOC,1,LOGO,OFF
PLLS,ITNFINEO,ITNFJNEO
!END OF ITFAVG.MAC
(2)
对体和面来说,ANSYS默认的结果输出格式是云图格式,而这种彩色云图打印为黑白图像时对比很不明显,无法表达清楚,对于发表文章非常不便.发文章所用的结果图最好是等值线图,并且最好是黑白的等值线图.一般借用photoshop等第三方软件,很麻烦,效果也不好.ansys本身也能实现这项功能.
1.将要输出的结果调出,这时为彩色云图;
2.将云图转换为等值线图的形式
GUI:plotCtrls—>Device Options—>[/DEVI]中的vector mode 选为on
命令:/DEVICE,VECTOR,1
这时结果为彩色等值线,若直接输出,打印为黑白图像时仍然不清晰,为此需进行以下几步将图像转换为黑白形式;
3. 将背景变为白色
命令:jpgprf,500,100,1
/rep
4.对等值线中的等值线符号(图中为A,B,C等)的疏密进行调整
GUI:plotCtrls—>Style—>Contours—> Contours Labeling 在Key Vector mode contour label 中选中on every Nth elem,然后在N= 输入框中输入合适的数值,例如5,多试几次,直到疏密合适
命令:/clabel,1,5
5.将彩色等值线变为黑色
GUI:plotCtrls—>Style—>Colors—>Contours Colors 将Items Numbered 1,Items Numbered 2等复选框中的颜色均选为黑色,图像即可变为黑白等值线图像
命令:/color,cntr,whit,1 等等
6.修改
在显示等值线时,图形中太多的标识字母(A、B等)使得等值线图完全看不清楚.请问有没有什么方法可以去掉图形的这些标识字母呢
在plotCtrls下面的style下面的contours下面的contour Labeling,在弹出的contour labeling options里面的vector mode contour labels选off
后处理中画出了结构的等值线图,可否将等值线边的字母改为相应的数值标注
/PNUM,SVAL,1
/replot
如果还想将等值线的字母去掉
/PNUM,SVAL,1
/CLABEL,1,-1
/replot
7.出图
GUI:plotCtrls—>Capture Image
建立弯矩单元表.例如梁单元
i节点单元表名称为imom,j节点单元表名称为jmom,
ETABLE,NI,SMISC,1 !单元I点轴力
ETABLE,NJ,SMISC,7 !单元J点轴力
ETABLE,QI,SMISC,2 !单元I点剪力
ETABLE,QJ,SMISC,8 !单元J点剪力
ETABLE,MI,SMISC,6 !单元I点弯矩
ETABLE,MJ,SMISC,12 !单元J点弯矩
plls,MI,MJ
2.标注弯矩图
PLOTCTRLS>>NUMBERING>>SVAL ON即可在画出弯矩图的同时在图上标出弯矩值的大小
3.调整弯矩图
如果弯矩图方向错误,则绘制弯矩图命令为
plls,imom,jmom,-1
同一个节点处两边的单元内力有细微差别,
导致内力数字标注出现重影.观察上面整体轴力图也可以发现,
一段一段的,好像马赛克,其实上面整体弯矩图也是,不过不是
很明显罢了.这是EULER-BEONOULI梁理论以及ANSYS输出定义造成
的(详细原因就不展开了,看看梁理论的书和ANSYS的说明吧).
为了修正重影和节点两边内力值不一样的问题,遍制了宏文件ITFAVG.MAC
命令文件内容如下:
!---------------------------------------------------------------------
!宏:ITFAVG.MAC(INTERNAL FORCE AVERAGE MACRO)
!获取线性单元内力,并对单元边界处的内力进行平衡
!输入信息
!内力类型:MFORX,MFORY,MFORZ,MMOMX,MMOMY,MMOMZ
*ASK,ITFTYPE,'PLEASE INPUT THE TYPE OF INTERNAL FORCE','MMOMY'
!需处理的单元包
*ASK,EASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF ELEMENTS TO BE PROCESSED!',
'EOUTER'
!需处理的节点包
*ASK,NASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF NODE TO BE PROCESSED!','NOU
TER'
!无需处理的节点包
*ASK,UNASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF THE UNCHANGED NODE!(NONE I
F THERE'S NO SUCH COMPONENT)','NONE'
/POST1
!输入信息:内力类型,欲处理单元的集合,欲处理节点的集合
!ITFTYPE='MMOMY'
!EASSEMBLY='EOUTER'
!NASSEMBLY='NOUTER'
!按内力类型确定ANSYS输出信息SMISC的编号
*IF,ITFTYPE,EQ,'MFORX',THEN
ITFINUM=1
ITFJNUM=7
*ELSEIF,ITFTYPE,EQ,'MFORY',THEN
ITFINUM=2
ITFJNUM=8
*ELSEIF,ITFTYPE,EQ,'MFORZ',THEN
ITFINUM=3
ITFJNUM=9
*ELSEIF,ITFTYPE,EQ,'MMOMX',THEN
ITFINUM=4
ITFJNUM=10
*ELSEIF,ITFTYPE,EQ,'MMOMY',THEN
ITFINUM=5
ITFJNUM=11
*ELSEIF,ITFTYPE,EQ,'MMOMZ',THEN
ITFINUM=6
ITFJNUM=12
*ELSE
*ENDIF
!对不需平均的节点进行处理
*IF,UNASSEMBLY,NE,'NONE',THEN
!选出不进行处理的节点包并获取不进行处理节点的数目
CMSEL,S,UNASSEMBLY
*GET,UNNODNUM,NODE,0,COUNT
!定义长度为UNNODNUM的数组(UNNOD),以存放选中单元的单元编号
*DIM,UNNOD,ARRAY,UNNODNUM
!将选中单元的编号按顺序存入数组UNNOD
*DO,I,0,UNNODNUM-1,1
UNNOD(I+1)=NDNEXT(I)
*ENDDO
*ELSE
UNNODNUM=0
*ENDIF
!选出所需的单元和节点包
CMSEL,S,EASSEMBLY
CMSEL,S,NASSEMBLY
!获得当前选中单元总数(存入变量SELELENUM)
*GET,SELELENUM,ELEM,0,COUNT
!定义长度为SELELENUM的数组(ELENUM),以存放选中单元的单元编号
*DIM,ELENUM,ARRAY,SELELENUM
!将选中单元的编号按顺序存入数组ELENUM
*DO,I,0,SELELENUM-1,1
ELENUM(I+1)=ELNEXT(I)
*ENDDO
!获得当前选中节点总数(存入变量SELNODNUM)
*GET,SELNODNUM,NODE,0,COUNT
!定义长度为SELNODNUM的数组(NODNUM),以存放选中单元的单元编号
*DIM,NODNUM,ARRAY,SELNODNUM
!将选中单元的编号按顺序存入数组NODNUM
*DO,I,0,SELNODNUM-1,1
NODNUM(I+1)=NDNEXT(I)
*ENDDO
!定义所需的线性单元内力ETABLE,节点I的内力存入数组ITNFI,
!节点J的内力存入数组ITNFJ
ETABLE,ITNFI,SMISC,ITFINUM
ETABLE,ITNFJ,SMISC,ITFJNUM
!定义所需的结果数组,并将其置零
ETABLE,ITNFINEO,SMISC,5
SADD,ITNFINEO,ITNFI,1
ETABLE,ITNFJNEO,SMISC,11
SADD,ITNFJNEO,ITNFJ,1
*DO,K,1,SELNODNUM,1
!处理不需平均的节点
INDEX=0
*IF,UNNODNUM,GE,1,THEN
*DO,J,1,UNNODNUM
*IF,NODNUM(K),EQ,UNNOD(J),THEN
INDEX=1
*ELSE
*ENDIF
*ENDDO
*ELSE
*ENDIF
*DO,J,1,SELELENUM,1
!选出和节点K相连的线性单元中,I节点(对线性单元而言)为节点K的单元编号
*IF,NELEM(ELENUM(J),1),EQ,NODNUM(K),THEN
ELEI=ELENUM(J)
*EXIT
*ELSE
*ENDIF
*ENDDO
*DO,J,1,SELELENUM,1
!选出和节点K相连的线性单元中,J节点(对线性单元而言)为节点K的单元编号
*IF,NELEM(ELENUM(J),2),EQ,NODNUM(K),THEN
ELEJ=ELENUM(J)
*EXIT
*ELSE
*ENDIF
*ENDDO
*IF,INDEX,EQ,0,THEN
*IF,ELEJ,NE,0,THEN !有可能出现ELEJ为0的情况
!取出I节点为节点K的单元的I节点端的内力放入参数ETELEI
*GET,ETELEI,ELEM,ELEI,ETAB,ITNFI
!取出J节点为节点K的单元的J节点端的内力放入参数ETELEJ
*GET,ETELEJ,ELEM,ELEJ,ETAB,ITNFJ
!平均节点K的单元的I节点端的内力和节点K的单元的J节点端的内力
ETAVE=(ETELEI+ETELEJ)/2
!将平均后的内力存入结果数组中
DETAB,ELEI,ITNFINEO,ETAVE
DETAB,ELEJ,ITNFJNEO,ETAVE
*ELSE
*ENDIF
*ELSE
*ENDIF
*ENDDO
/UDOC,1,LOGO,OFF
PLLS,ITNFINEO,ITNFJNEO
!END OF ITFAVG.MAC
(2)
对体和面来说,ANSYS默认的结果输出格式是云图格式,而这种彩色云图打印为黑白图像时对比很不明显,无法表达清楚,对于发表文章非常不便.发文章所用的结果图最好是等值线图,并且最好是黑白的等值线图.一般借用photoshop等第三方软件,很麻烦,效果也不好.ansys本身也能实现这项功能.
1.将要输出的结果调出,这时为彩色云图;
2.将云图转换为等值线图的形式
GUI:plotCtrls—>Device Options—>[/DEVI]中的vector mode 选为on
命令:/DEVICE,VECTOR,1
这时结果为彩色等值线,若直接输出,打印为黑白图像时仍然不清晰,为此需进行以下几步将图像转换为黑白形式;
3. 将背景变为白色
命令:jpgprf,500,100,1
/rep
4.对等值线中的等值线符号(图中为A,B,C等)的疏密进行调整
GUI:plotCtrls—>Style—>Contours—> Contours Labeling 在Key Vector mode contour label 中选中on every Nth elem,然后在N= 输入框中输入合适的数值,例如5,多试几次,直到疏密合适
命令:/clabel,1,5
5.将彩色等值线变为黑色
GUI:plotCtrls—>Style—>Colors—>Contours Colors 将Items Numbered 1,Items Numbered 2等复选框中的颜色均选为黑色,图像即可变为黑白等值线图像
命令:/color,cntr,whit,1 等等
6.修改
在显示等值线时,图形中太多的标识字母(A、B等)使得等值线图完全看不清楚.请问有没有什么方法可以去掉图形的这些标识字母呢
在plotCtrls下面的style下面的contours下面的contour Labeling,在弹出的contour labeling options里面的vector mode contour labels选off
后处理中画出了结构的等值线图,可否将等值线边的字母改为相应的数值标注
/PNUM,SVAL,1
/replot
如果还想将等值线的字母去掉
/PNUM,SVAL,1
/CLABEL,1,-1
/replot
7.出图
GUI:plotCtrls—>Capture Image