2024年4月21日发(作者:)

一、关于ansys与VC++/Fortran程序的接

口资料!

可以在VC或FORTRAN中将ANSYS作为子程序调用。具体调用方法如下:

1.在VC中调用ANSYS

::WinExec("d:/ANSYS57/BIN/INTEL/ANSYS57-b-p ansys_product_feature -i

input_file -o output_file",SW_SHOWNORMAL);

VC调用ANSYS的示例程序。

//

#include "stdio.h"

#include"process.h"

void main()

{

int result;

printf("");

result=system("d:/ANSYS57/BIN/INTEL/ANSYS57 -b -p ansysul -i -o

");

//不用::WinExec,就用不着等待语句,可以实现用FORTRAN调用一样的效果。

printf("");

}

2.在FORTRAN中调用ANSYS

LOGICAL(4) result

RESULT=SYSTEMQQ('d:ANSYS57BININTELANSYS57 -b -p

ansys_product_feature -i input_file -o output_file')

3.说明

1和2中,input_file为用APDL语言编写的ANSYS输入文件。

ansys_product_feature为你的ANSYS产品特征代码。

需要注意的是,在VC中调用ANSYS时,需要加一条判断语句,以确定ANSYS

已经执行完毕。在FORTRAN中不需要判断,FORTRAN会等ANSYS执行完毕才

继续执行下一条语句。 在VC中,我没有找到与FORTRAN类似的函数,只好加

一条循环判断语句。 判断方法很简单,只需判断错误文件是否可写就可

以了。 因为当ANSYS在运行时,是不可写的,只有当它运行完毕,此

文件才可写。

在ANSYS中当然也可以以VC或FORTRAN作为子程序调用。可以参看有关

ANSYS二次开发方面的资料。 这个方法应该是与系统无关的。

4、在哪里查ansys_product_feature , vc中的类的成员变量和apdl语言中的

变量进行数据交换

以第一行为例:ANSYS/MULTIPHYSICS ane3fl

ANSYS/MULTIPHYSICS是产品特征名称,ane3fl是与其对应的产品特征代码,把这

个代码填到下面的语句中:

result=system("d:/ANSYS57/BIN/INTEL/ANSYS57 -b -p ane3fl -i -o

");

VC中的变量与APDL语言中的变量可以进行数据交换,不过不能直接互换.我采

用的办法是,在VC中将变量结果写到一个文件中,然后再在ANSYS的APDL语言

文件中读入这个文件的数据,再由ANSYS进行新的计算,计算结束之后,再由后处

理处理结果,并将结果数据输出到一个文件中,然后用VC读入此文件中的数据,进

行下一步处理.

5、数据文件和图形文件获得

.ext是数据文件,ext是指文件扩展名。

数据文件(假设输出的数据文件名为):

*dim,out1,,2,1

out1(1)=dmax !目标函数

out1(2)=1-eymax !约束条件1

*cfopen,opt,out

*vwrite,out1(1),out1(2)

(2f10.6)

*cfclos

在VC中相应的显示数据文件命令为:

result=system("notepad ");