matlab 调用ansys(转载)
更新时间:2024-01-27 15:52:01 阅读量: 教育文库 文档下载
- matlab安装教程推荐度:
- 相关推荐
问题的提出:我们经常会需要用ansys计算一些东西,之后再用matlab来处理计算的结
果。当修改某些参数重复上述过程的时候,就比较容易出现问题——比如ansys模型中的参数和matlab程序中参数的一致性问题等。这时可以考虑采用下面的协同工作的方法。 解决的方法:采用matlab作为主控程序,设置好所有的参数与选项传递给ansys(通过文件)并调用ansys计算。ansys计算结束后(默认情况下,matlab会自己等着,这一点很方便,呵呵)再用matlab处理ansys的输出文件。由于所有的设置可以在matlab中统一完成,省去很多参数同步的工作,也顺便实现了计算的自动化。呵呵。。。 核心提示:1.如何使用matlab调用ansys,下面是个例子
!\Files\\AnsysInc\\v100\\ANSYS\\bin\\intel\\ansys100.exe\-b -i d:\\inp\\vm1.mac -o \
! 是由matlab提供的用以执行shell命令的操作符(也可以用system或dos命令)
参数 -b指定使用batch方式运行ansys,-i 指定输入文件,-o指定输出文件。这里有一点值得注意的是,这里的输出文件是指在gui方式运行是output windows中的输出内容,通常不是我们想要的结果文件。
2.我们想要的ansys结果可以通过*vwrite,*mwrite等命令写入文件,以供matlab使用。 3.想要matlab传递给ansys的参数,也通过文件方式传递。(不知哪位大侠有其他的方法,请不吝赐教!)
下面给出一个matlab调用ansys求解H2范数的例子: %matlab和ansys协同工作 clear all;
e_num=25; %杆件总数 B=(1:e_num); X=combnk(B,3); N=size(X,1);
Gama=zeros(1,N); %分离系数初始化 for i=1:4
fid = fopen('flag.txt','wt');
fprintf(fid,'m m m\\n',X(i,1),X(i,2),X(i,3)); fclose(fid);
!\Files\\AnsysInc\\v100\\ANSYS\\bin\\intel\\ansys100.exe\-b -i C:\\hangjia_25_V.mac -o \调用ansys计算程序 %H2范数 format long;
K0=load('SMATR.txt'); M0=load('MMATR.txt'); C0=load('CMATR.txt'); E=2.06e11; A=5.48e-3; L=1.0;
K0=E*A/L*K0; C0=1e5*C0;
[NrowNcol]=size(K0);
Z=zeros(Nrow,Ncol); I=eye(Nrow,Ncol);
A=[Z I;-K0/M0 -C0/M0]; B=[Z;I/M0]; C=[I Z]; R=B*B';
[D p]=chol(R); if p>0
if real(eig(A))<0 Q=lyap(A,R);
h22=sqrt(trace(C*Q*C'));
h2=3.123592886516603e-006; Gama(i)=(h22-h2)/h2; else
Gama(i)=-1; end else
Gama(i)=-1; end end
fid0 = fopen('result.txt','wt'); for i=1:N
fprintf(fid0,'m m mm .5f\\n',i,X(i,1),X(i,2),X(i,3),Gama(i)); end
fclose(fid0);
关于matlab调用Ansys的一些问题?
本人初学ANSYS,正在研究ansys怎么被matlab调用的问题,用网上流传的: !D:\\ANSYS\\V100\\ANSYS\\Bin\\Intel\\ansys-b-p strut -i E:\\pingmianhangjiashouli.txt-o E:\\WV.out试了一下,(其中pingmianhangjiashouli.txt是命令流文件,以前在ansys输入窗口中输入\\input,pingmianhangjiashouli,txt能按里面写的命令流运行,)
发现ansys打开后又关闭了,的确输出了WV.out,我用txt格式将wv.out打开查看发现里面只有建模的信息,比如节点一共有几个,桁架的夹角是多少,每次施加的力是多少以及方向
以下是几个问题:
1、ansys打开后又关闭了,到底运行没有?我起初认为应该是ansys打开显示出整个模型,因此我怀疑没有运行,但是wv.out文件中的信息有很多不是pingmianhangjiashouli.txt里面原有的,比如列出了最大单元数和节点数,各个桁架杆件夹角,整个的确是要经过ansys计算才能得出的
2、wv.out文件是不是只是保存建模信息呢?如果运行了,我想看求解的结果文件,去哪里看?
但是网上有的说输入文件是mac格式的,也有的说txt格式也行,我就用个txt格式的,不知道有没有影响?
3、要是想要写文件,让ansys把一些结果输出,是不是在pingmianhangjiashouli.txt编命令流?比如说输出最大单元数,用查询函数,这个怎么编? 回答的详细我会再次追加100分!!!! 我举个例子,查询最大单元数,我编了命令流, *CFOPEN,D:\\MYRES,TXT A = ELMIQR(0,14),*VWRITE,A (F6.0,8X,E15.6,2X,E15.6,2X,E15.6) *CFCLOSE
要是把命令流粘贴在文件pingmianhangjiashouli.txt中,然后用/input,pingmianhangjiashouli,txt在输入窗口中,能运行,生成myres.txt,有13这个数,是最大单元号,但是用matlab调用这个文件却只有myres.txt文件没有13这个信息,我仔细查看了mv.out文件发现里面有error in format ,意思好像是(F6.0)不是mac命令吧,是不是格式问题?问下高手?
1.首先你的命令写错了,其中,产品名称‘struct’写错了,另外注意各个参数中间的空格(如-b -p -i -o等),修改后再试试。 clear,clc
cd 'D:\\Program Files\\ANSYS Inc\\v120\\ansys\\bin\\winx64' !ansys -b -p struct -i F:\\rotor_campbell.txt -o F:\\wv.out
2. wv.out是输出文件所在位置,输出文件保存了程序运行的相关信息,也就是ansys计算时,黑窗口中跳出的那些东西。不是结果文件
3. 如果你想输出结果比如某个节点的位移,则需要在命令流中添加相应语句,将结果写入另外的文件中,至于如何从结果文件中提取你需要的信息,试试*get,命令 如果有疑问请追问
追问
我自己弄好了,哈哈,是命令流),*VWRITE,A (F6.0,8X,E15.6,2X,E15.6,2X,E15.6) 离的太远
回答
A是最大单元数,那么你怎么能用格式控制语句(F6.0,8X,E15.6,2X,E15.6,2X,E15.6)呢?直接在*vwrite后一行用(F6.0)就可以了啊???
%matlab调用文件里的数据
[fid,message]=fopen('文件名.后缀','r');%打开数据文件 if fid==-1
disp(message); %判断文件打开与否 end
[A,count]=fread(fid,[行数,13],'double');%将数据读入A中,?行,13列 fclose(fid);
A11=zeros(0,2); %初始化2列空间 i=1:13; %n为行数 A11(:,i)=A(:,1); %取第一列 A12(:,i)=A(:,2); %取第二列
将ANSYS里的数据导入MATLAB的步骤:
1、在ansys中定义一个矩阵用来存储数据
*get,NodeNum,NODE,0,COUNT !得到模型的所有节点数 *get,nd,NODE,0,NUM,MIN !得到模型的最小节点编号 *dim,nodes,array,NodeNum !定义一个存储节点的数组 *dim,xyz,array,NodeNum,3 !定义一个存储节点坐标的数组 *dim,sxy,array,NodeNum !定义一个存储节点xy剪应力的数组
*do,i,1,NodeNum,1
nodes(i)=nd !将节点编号存储在nodes数组中 xyz(i,1)=NX(nd) !在xyz(i,1)中存储节点的X坐标 xyz(i,2)=NY(nd) !在xyz(i,1)中存储节点的Y坐标 xyz(i,3)=NZ(nd) !在xyz(i,1)中存储节点的Z坐标 *Get,sxy(i),NODE,nodes(i),S,XY
nd=NDNEXT(nd) !取得下一个节点编号
*enddo
上面的代码定义了两个矩阵xyz和sxy,分别存储节点位置和节点的xy方向剪应力。
2、将ansys中的矩阵导出为txt格式:
在ansys的主目录下新建一个txt文档,名字为OUT1(.txt),在此文件中写入:
*cfopen,xyz,txt !打开文件,写入数据 *vwrite,xyz(1,1),xyz(1,2),xyz(1,3) (3e16.8) *cfclos
然后在ansys的命令窗口中输入:
*use,out1.txt
这样ansys中的矩阵xyz就被保存在txt文件xyz中了,放置在ansys主目录下,可打开查看。
正在阅读:
matlab 调用ansys(转载)01-27
我爱你秋作文500字06-21
《两位数加两位数(进位加)》教学设计10-13
家乡的变化作文400字07-16
难忘的经历作文400字04-01
含答案 电测作业09-09
关键施工技术、工艺及工程项目实施的重点难点和解决方案04-25
一场虚惊作文500字06-26
快乐的儿童节作文500字07-12
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 调用
- 转载
- matlab
- ansys