本帖最后由 shifang157300 于 2017-4-16 17:30 编辑
(原创)利用Matlab对ANSYS数据进行后处理实例
本帖子给出一个利用Matlab对ANSYS进行后处理的2D实例。处理的数据为ANSYS的y方向位移场,Matlab绘制位移场矢量图和云图。模型宽10m,高5m,上端面受拉,下端面固定约束。本贴的关键是Matlab云图的绘制,对于已知节点坐标和节点处位移、温度、应力等标量的问题,常用的Matlab云图绘制命令contour和contourf无法使用,此时可以用griddata和pcolor绘制云图。
1导出ANSYS数据至文本文件 finish /clear /FILNAME,simple-case-data-matlab /Titie,SHIFang,CUMT /PREP7 /DSCALE,ALL,1.0 /eshape,on !--------------------- et,1,42 !--------------------- KEYOPT,1,3,2 KEYOPT,1,6,0 keyopt,1,10,0 !--------------------- mp,ex,1,10e9 mp,nuxy,1,0.25 !--------------------- k,1,0,0 k,2,10,0 k,3,10,5 k,4,0,5 !--------------------- a,1,2,3,4 !--------------------- LESIZE,all,1,, , ,, , ,, !--------------------- MSHKEY,0 AMESH,all !--------------------- DL,1,,all, !--------------------- SFL,3,PRES,-1e6, !--------------------- FINISH !--------------------- /SOLU SOLVE !--------------------- /post1 PLNSOL,U,Y, 0,1.0 !------------------------------ !--------提取数据-------------- !------------------------------ *get,NodeNum,NODE,0,COUNT !得到模型的所有节点数 *dim,nodes,array,NodeNum !定义一个存储节点的数组 *dim,xyz,array,NodeNum,2 !定义一个存储节点坐标的二维数组 !*dim,xyz,array,NodeNum,3 !定义一个存储节点坐标的三维数组 *dim,disY,array,NodeNum,1 !定义一个存储节点Y坐标的数组 *do,i,1,NodeNum,1 xyz(i,1)=NX(i) !在xyz(i,1)中存储节点的X坐标 xyz(i,2)=NY(i) !在xyz(i,1)中存储节点的Y坐标 !xyz(i,3)=NZ(i) !在xyz(i,1)中存储节点的Z坐标 *Get,disY(i),NODE,i,U,Y !*Get,sxy(i),NODE,i,S,XY *enddo !------------------------------ !--------导出文件-------------- !------------------------------ *cfopen,x-coord,txt !打开文件,写入数据 *vwrite,xyz(1,1) (e16.8) *cfclos ! *cfopen,y-coord,txt !打开文件,写入数据 *vwrite,xyz(1,2) (e16.8) *cfclos ! *cfopen,disY,txt !打开文件,写入数据 *vwrite,disY(1) (e16.8)
*cfclos ANSYS命令流:
2 Matlab后处理
m文件内容如下: %Written By:: Shi Fang, China University of Mining and Technology (2013) %QQ: 1549221758 clearall; close all; clc; format compact; format long; %Settings %------------------------------ SizeFont=20; set(0,'defaultfigurecolor','w') %Read data %------------------------------ disp('Readinginput file....') x = load('x-coord.txt'); x=x'; y = load('y-coord.txt'); y=y'; Uy= load('disY.txt'); Uy=Uy'; disp('Readdone.') %Plot the vector %------------------------------ disp('Plottingthe vector....') num=size(x,2); fori=1:num Ux(i)=0; end quiver(x,y,Ux,Uy); disp('Plotdone.') %Plot the contour %------------------------------ disp('Plottingthe contour....') pp1=0:0.1:10; % Range of the x axial pp2=0:0.01:5; % Range of the y axial [X,Y]=meshgrid(pp1,pp2); T=griddata(x,y,Uy,X,Y,'cubic'); %T(pp>2,pp<3)=nan; % Blank zone if necessary figure;hold on; title('\itDisplacement y','FontName','Times New Roman','FontSize',SizeFont); pcolor(X,Y,T); axisequal; axis([min(x)max(x) min(y) max(y)]); set(gca,'XTick',[],'YTick',[],'XColor','w','YColor','w'); colorbar('FontAngle','italic','FontName','TimesNew Roman','FontSize',SizeFont); shadinginterp; disp('Plotdone.') m文件:
Matlab绘制的y方向位移矢量图:
Matlab绘制的y方向位移云图:
|