Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > ANSYS论坛
ANSYS论坛 ANSYS软件是融结构、流体、电磁场、声场和耦合场分析于一体的大型通用有限元分析软件
回复
 
主题工具 显示模式
旧 2008-03-18, 15:40   #1
windows251
版主
 
windows251 的头像
 
注册日期: 2007-05-31
年龄: 39
帖子: 59
声望力: 21
windows251 是一个将要出名的人windows251 是一个将要出名的人
默认 [分享][转帖]MATLAB中曲面转入ANSYS程序(附程序)

前段时间因课题需要,写了个MATLAB程序,把MATLAB中计算的曲面导入ANSYS,以作进一步处理。

稍作修改,使其更有通用性。因水平有限,程序还有很多不足之处,请大家验证讨论。

例:

代码:
t=0:pi/10:2*pi; 
[x,y,z]=cylinder(2+cos(t)); 

mat2ans('cylinder.lgw',x,y,z);
运行ANSYS,在命令窗口输入:/input,cylinder.lgw 得到ansys中的曲面,该过程中ansys提示有几个错误,有些样条线和关键点不能删除,那是需要保留的。
上传的图像
文件类型: jpg 1.jpg (31.1 KB, 47 次查看)
windows251 当前离线   回复时引用此帖
旧 2008-03-18, 15:41   #2
windows251
版主
 
windows251 的头像
 
注册日期: 2007-05-31
年龄: 39
帖子: 59
声望力: 21
windows251 是一个将要出名的人windows251 是一个将要出名的人
默认

源程序:
代码:
function mat2ans(filename,x,y,z) 
% 把MATLAB计算的曲线曲面导入ANSYS 
% author:paradiseboy 
% 2004-7-13 
% Henan Polytechnic University 

% www.dytrol.com 

if(ischar(filename)==0) 
error('Invalid filename'); 
end 

if(ndims(z)~=2) 
error('Variable z must be a 2-dimensional array'); 
end 

if any((size(x)~=size(z))|(size(y)~=size(z))) % size of x or y does not size of z 
if((length(x)==1)&(length(y)==1)) % Must be specifying dx and dy, so make vectors 
dx=x; 
dy=y; 
x=((1:size(z,2))-1)*dx; 
y=((1:size(z,1))-1)*dy; 
end 

if((length(x)==size(z,2))&(length(y)==size(z,1))) % Must be specifying vectors 
xvec=x; 
yvec=y; 
[x,y]=meshgrid(xvec,yvec); 
else 
error('Unable to resolve x and y variables'); 
end 
end 

fid=fopen(filename,'w'); 

if(fid==-1) 
error(sprintf('Unable to write to %s',filename)); 
end 

[m,n]=size(z); 
x=reshape(x',m*n,1); 
y=reshape(y',m*n,1); 
z=reshape(z',m*n,1); 
fprintf(fid,'/prep7\r\n'); % 进入前处理 
% 创建关键点 
for i=1:m*n 
fprintf(fid,'k,%4.d,%.5f,%.5f,%.5f,\r\n',i,x(i),y(i),z(i)); 
end 
% 创建样条线 
for i=1:m 
fprintf(fid,'FLST,3,%3.d,3\r\n',n); 
for j=1:n 
fprintf(fid,'FITEM,3,%4.d,\r\n',j+(i-1)*n); 
end 
fprintf(fid,'BSPLIN, ,P51X\r\n'); 
end 
% 由蒙皮技术创建面 
fprintf(fid,'FLST,2,%2.d,4\r\n',m); 
for i=1:m 
fprintf(fid,'FITEM,2,%d\r\n',i); 
end 
fprintf(fid,'ASKIN,P51X\r\n'); 
fprintf(fid,'ldele,all\r\n'); 
fprintf(fid,'kdele,all\r\n'); 
fprintf(fid,'aplot\r\n'); 
fprintf(fid,'NUMCMP,ALL\r\n'); 
fprintf(fid,'FINISH\r\n'); 

fclose(fid);
windows251 当前离线   回复时引用此帖
旧 2008-03-18, 15:42   #3
windows251
版主
 
windows251 的头像
 
注册日期: 2007-05-31
年龄: 39
帖子: 59
声望力: 21
windows251 是一个将要出名的人windows251 是一个将要出名的人
默认

>> z=x.*exp(-x.^2-y.^2);
>> [u,v,w]=surfnorm(x,y,z);
>> surf(x,y,z); axis equal
>> mat2ans('curve.lgw',x,y,z);
上传的图像
文件类型: jpg 2.jpg (22.2 KB, 48 次查看)
windows251 当前离线   回复时引用此帖
旧 2008-03-18, 15:43   #4
windows251
版主
 
windows251 的头像
 
注册日期: 2007-05-31
年龄: 39
帖子: 59
声望力: 21
windows251 是一个将要出名的人windows251 是一个将要出名的人
默认

>> [x,y]=meshgrid(-3:.5:3,-3:.1:3);
>> z=peaks(x,y);
>> mat2ans('curve.lgw',x,y,z);

这个曲面特性太复杂,在ANSYS中不能由一张曲面构成。
所以导入ansys中会出错,还请高人多指点,谢谢。『以上内容转自振动论坛
上传的图像
文件类型: jpg 3.jpg (29.3 KB, 49 次查看)
windows251 当前离线   回复时引用此帖
旧 2008-03-18, 16:04   #5
dnping
高级会员
 
注册日期: 2007-07-26
年龄: 40
帖子: 268
声望力: 24
dnping 是一个将要出名的人
默认

哈哈,多谢版主分享……
dnping 当前离线   回复时引用此帖
旧 2008-03-18, 16:11   #6
windows251
版主
 
windows251 的头像
 
注册日期: 2007-05-31
年龄: 39
帖子: 59
声望力: 21
windows251 是一个将要出名的人windows251 是一个将要出名的人
默认

共同努力!:tongue: :lol:
windows251 当前离线   回复时引用此帖
旧 2008-11-16, 22:43   #7
cyxsky
初级会员
 
注册日期: 2008-11-02
年龄: 38
帖子: 27
声望力: 17
cyxsky 正向着好的方向发展
默认 回复: [分享][转帖]MATLAB中曲面转入ANSYS程序(附程序)

好牛啊,小弟一定努力学习
cyxsky 当前离线   回复时引用此帖
旧 2009-02-22, 18:04   #8
zsb0206
初级会员
 
注册日期: 2008-08-15
年龄: 42
帖子: 2
声望力: 0
zsb0206 正向着好的方向发展
默认 回复: [分享][转帖]MATLAB中曲面转入ANSYS程序(附程序)

为什么我把原代码运行不出来结果?
zsb0206 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 04:06


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.