学习ansys时间不长,考虑MATLAB调用ansys的问题。在网上到这条语句,解释下各参数的意思。
system('D:\Ansys\v100\ANSYS\bin\intel\ansys100 -b -p ansys-product-feature -i input file -o out file.bat')
The options are:
-b = batch mode
c语言写入txt文件
-p = product: ANSYS/Mechanical for example
-i = your input file: file.inp for example
-o = the output file of ansys: file.out for example
ansys-product-feature ansys的产品输入代码。例如:ane3fl
other options:
-
j = jobname
-m = memory size
-db = database size
-g = graphic mode
-l = language
...etc
注意:matlab中对空格有限制,所以ANSYS的安装路径中不能有空格。
网上还有很多人问,ansys的产品特征代码在哪?大家可以:
help->>feature names
屏幕左下角“开始”->>“ansys10.0”->>"help"->>installation and licensing。查Product Variable Table。
*****************************************
很多人都关心在matlab里如何调用ansys计算,我也曾经困惑过一段时间,到各个论坛去资料,问大家,但是没有一个非常明确的答案。有很多在c语言和forthan中调用ansys的资料,但是对matlab没有什么可借鉴性经过很多次的实践总结,我把我的经验贴出来,希望能够对大家有所帮助matlab中save('E:\ansys\opt\zs\','dd','-ascii')
!D:\Ansys\v90\ANSYS\bin\intel\ansys90 -b -p ane3fl -i ... E:\ansys\opt\zs\try\yh2.mac -o E:\ansys\opt\zs\try\yh.out load('-ascii','E:\ansys\opt\zs\')第一行是matlab中数据dd保存为ansys可读的形式第二行是调用ansys计算(一共三个路径,第一个是ansys程序的,第二三个分别为输入输出文件的路径)第三行是matlab调用ansys的结果ansys中读matlab数据的命令流:
*dim, xx,, 15,1*VREAD,xx,E:\ansys\opt\zs\try\dam,txt,,ijk,15(15f16.6)
写数据的命令流finish/post1!将模态分析结果写入txt文件*mwrite,zx,E:\ansys\opt\zs\try\zx,txt,,ijk,16(16f16.6)
*vread和*mwrite的具体解释看看帮助吧!
还有一个问题是ansys必须是命令流形式,最好保存为mac格式,这样可以直接运行
1、当matlab调用的时候,可以采用!的方式和system函数两种方式。注意第一个ansys80这个可执行文件目录中不能有空格,否则matlab不能识别。即可以采用如下的调用方式:system('D:\ANSYS\v80\ANSYS\bin\intel\ansys80 -b -p ane3fl -i C:\sibian.dat -o C:\vm5.out')
2、这部分是关于batch的使用的,应尽量避免目录中的空格,减小不必要的麻烦。
下边的batch模式是正确的。
"D:\ANSYS\v80\ANSYS\bin\intel\ansys80" -b -p ane3fl -i C:\sibian.dat -o C:\vm1.out
我的经验是输入文件和输出文件的目录不能太长,且最好不带空格。刚刚开始的时候我的输入文件的目录是C:\Documents and Settings\Administrator\sibian.dat,结果batch不能执行。改为C:\sibian.dat 即可执行了。
3、 *vread的例子,关于这个命令的帖子很多了,这里重复一下,算是方便新手了。
For example, given the following data file named dataval:1.5 7.8 12.315.6 -45.6 42.5
采用如下命令流读入:
*create,ff*DIM,EXAMPLE,,2,3*VREAD,EXAMPLE(1,1),dataval,,,JIK,3,2(3F6.1)*end/input,ff
结果:
EXAMPLE = 1.5 7.8 12.3 15.6 -45.6 42.5
现在的ANSYS的主流版本v110,因此"\Ansys\v90\ANSYS\bin\intel\ansys90"应该改为"\Ansys\v110\ANSYS\bin\intel\ansys11
******************************************
ANSYS虽然比较强大,但是不能象Femlab一样自定义模型方程。在某些情况下,必须用当前step的解作为条件,根据某些物理条件来改变单元的材料属性以及载荷,作为下一个step
的初始条件。 用ANSYS自带的APDL可用于一般的流程控制,如果要实现特定的复杂物理模型就比较困难,而且速度极慢。可行的办法就是在ANSYS运行中把每一个step的结果传给外部程序,用来计算下一步的载荷和单元属性。
A. 和外部程序交换数据,首先要处理好协同问题,一般可用一下两种方法:
(1)ANSYS 和 外部程序同时运行 -- 需要建立一个flag文件。通过在ANSYS和程序中读其内容来判断对方是否在运行。在ANSYS和外部程序运行完一个step,改变flag,告诉对方自己当前运行结束,对方可以继续运行,否则必须等待。
(2)在ANSYS中调用/SYS命令执行外部程序。 此时ANSYS会暂时停止运行,直到外部程序结束运行,把执行权交还给ANSYS。
(1)适用与matlab等非编译语言。 (2)适用与C和Fortran等编译语言。
B. 如何在外部程序中告诉ANSYS改变单元属性和载荷变化:
在从ANSYS中导入数据后,外部程序一般可以根据具体物理模型来创建.mac文件,然后在
此文件中写入MPCHG等APDL命令。例如用C创建一个"MD.mac"文本文件,用fsprintf(fp,"MPCHG %d,%d", element_num, Material_ID). 当程序结束运行,在ANSYS中用*use, MD.mac 来实现加载和单元属性的改变。
C. 如何在ANSYS和外部程序中传递数据。
一般在ANSYS中把当前结果写在数据文件中, 在外部程序中读取。一般常用的命令有*MOPER。*MOPER可以把节点(node)的结果例如T(x,y,z) 自动根据插值计算映射到用户自己定义的网络上。 然后可以用*MWRITE写入数据文件。例如,如果用free mesh, node 的 坐标可能是很混乱的。用MOPER可以把结果映射到特定的有序的网络 (x0->x1,dx;y0->y1,dy;z0->z1,dz).
附上一个例子结果: transient simulation of optical phase change recording.
模拟可擦写光盘的读写过程。用ANSYS模拟激光加热光盘,每一步matlab读取温度场,并用相变模型模拟出写的记录点形状,然后根据记录点形状来修改所对应的单元热属性和加载(激光吸收的能量),反馈给ANSYS做下一部计算。
***************************************
*cfopen,v5dy,dat,!创建并打开一个文件准备写入
*vwrite,sequ,wvx5(1,2),wvx5(1,3),wvx5(1,4)!写入数据
(F5.0,' ',F6.4,' ',F6.4,' ',F6.4)!定义数据长短
*cfclos !关闭文件
上面是ANSYS里的数据怎么倒成MATLAB可读的数据文件的方法。
当然了,条条大路通罗马,方法不只这一种,不过我认为这种最简便!
在matlab中调用ansys的方法 [转,原创:Elvin]
很多人都关心在matlab里如何调用ansys计算,我也曾经困惑过一段时间,到各个论坛去资料,问大家,但是没有一个非常明确的答案。有很多在c语言和forthan中调用ansys的资料,但是对matlab没有什么可借鉴性
经过很多次的实践总结,我把我的经验贴出来,希望能够对大家有所帮助
matlab中
   
    save('E:\ansys\opt\zs\','dd','-ascii')
    !D:\Ansys\v90\ANSYS\bin\intel\ansys90 -b -p ane3fl -i ... E:\ansys\opt\zs\try\yh2.mac -o E:\ansys\opt\zs\try\yh.out
    load('-ascii','E:\ansys\opt\zs\')
第一行是matlab中数据dd保存为ansys可读的形式
第二行是调用ansys计算(一共三个路径,第一个是ansys程序的,第二三个分别为输入输出文件的路径)
第三行是matlab调用ansys的结果
ansys中
读matlab数据的命令流
*dim, xx,, 15,1
*VREAD,xx,E:\ansys\opt\zs\try\dam,txt,,ijk,15
(15f16.6)
写数据的命令流
finish
/post1
!将模态分析结果写入txt文件