您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > matlab-调用ansys-(转载)
matlab-调用ansys-1/5问题的提出:我们经常会需要用ansys计算一些东西,之后再用matlab来处理计算的结果。当修改某些参数重复上述过程的时候,就比较容易出现问题——比如ansys模型中的参数和matlab程序中参数的一致性问题等。这时可以考虑采用下面的协同工作的方法。解决的方法:采用matlab作为主控程序,设置好所有的参数与选项传递给ansys(通过文件)并调用ansys计算。ansys计算结束后(默认情况下,matlab会自己等着,这一点很方便,呵呵)再用matlab处理ansys的输出文件。由于所有的设置可以在matlab中统一完成,省去很多参数同步的工作,也顺便实现了计算的自动化。呵呵。。。核心提示:1.如何使用matlab调用ansys,下面是个例子!D:\ProgramFiles\AnsysInc\v100\ANSYS\bin\intel\ansys100.exe-b-id:\inp\vm1.mac-od:\output\1.txt!是由matlab提供的用以执行shell命令的操作符(也可以用system或dos命令)参数-b指定使用batch方式运行ansys,-i指定输入文件,-o指定输出文件。这里有一点值得注意的是,这里的输出文件是指在gui方式运行是outputwindows中的输出内容,通常不是我们想要的结果文件。2.我们想要的ansys结果可以通过*vwrite,*mwrite等命令写入文件,以供matlab使用。3.想要matlab传递给ansys的参数,也通过文件方式传递。(不知哪位大侠有其他的方法,请不吝赐教!)下面给出一个matlab调用ansys求解H2范数的例子:%matlab和ansys协同工作clearall;e_num=25;%杆件总数B=(1:e_num);X=combnk(B,3);N=size(X,1);Gama=zeros(1,N);%分离系数初始化fori=1:4fid=fopen('flag.txt','wt');fprintf(fid,'mmm\n',X(i,1),X(i,2),X(i,3));fclose(fid);!C:\ProgramFiles\AnsysInc\v100\ANSYS\bin\intel\ansys100.exe-b-iC:\hangjia_25_V.mac-oC:\1.txt%调用ansys计算程序%H2范数formatlong;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;matlab-调用ansys-2/5[NrowNcol]=size(K0);Z=zeros(Nrow,Ncol);I=eye(Nrow,Ncol);A=[ZI;-K0/M0-C0/M0];B=[Z;I/M0];C=[IZ];R=B*B';[Dp]=chol(R);ifp0ifreal(eig(A))0Q=lyap(A,R);h22=sqrt(trace(C*Q*C'));h2=3.123592886516603e-006;Gama(i)=(h22-h2)/h2;elseGama(i)=-1;endelseGama(i)=-1;endendfid0=fopen('result.txt','wt');fori=1:Nfprintf(fid0,'mmmm.5f\n',i,X(i,1),X(i,2),X(i,3),Gama(i));endfclose(fid0);matlab-调用ansys-3/5关于matlab调用Ansys的一些问题?本人初学ANSYS,正在研究ansys怎么被matlab调用的问题,用网上流传的:!D:\ANSYS\V100\ANSYS\Bin\Intel\ansys-b-pstrut-iE:\pingmianhangjiashouli.txt-oE:\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,TXTA=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文件发现里面有errorinformat,意思好像是(F6.0)不是mac命令吧,是不是格式问题?问下高手?1.首先你的命令写错了,其中,产品名称‘struct’写错了,另外注意各个参数中间的空格(如-b-p-i-o等),修改后再试试。clear,clcmatlab-调用ansys-4/5cd'D:\ProgramFiles\ANSYSInc\v120\ansys\bin\winx64'!ansys-b-pstruct-iF:\rotor_campbell.txt-oF:\wv.out2.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');%打开数据文件iffid==-1disp(message);%判断文件打开与否end[A,count]=fread(fid,[行数,13],'double');%将数据读入A中,?行,13列fclose(fid);A11=zeros(0,2);%初始化2列空间i=1:13;%n为行数matlab-调用ansys-5/5A11(:,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,1nodes(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,XYnd=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-(转载)
链接地址:https://www.777doc.com/doc-6682365 .html