将 ANSYS 作为子程序调用

对于优化或参数化设计,可以在 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);

2. 在 Fortran 中调用 ANSYS

LOGICAL(4) result
RESULT=SYSTEMQQ(‘d:\ANSYS57\BIN\Intel\ANSYS57 -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 类似的函数,只好加一条循环判断语句。如果谁能找着这样的函数,请告诉我,谢谢!判断方法很简单,只需判断错误文件 file.err 是否可写就可以了。因为当 ANSYS 在运行时,file.err 是不可写的,只有当它运行完毕,此文件才可写。数据文件(假设输出的数据文件名为 opt.out):

*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 opt.out");
图形文件(假设 ANSYS 工作文件名为 test, 输出 jpg 图形文件,具体信息请参考命令 /show):
/SHOW,JPEG
JPEG,QUAL,75,
JPEG,ORIENT,HORIZ
JPEG,COLOR,2
JPEG,TMOD,1
/GFILE,600,
!*
plns,uy
/SHOW,TERM
在 VC 中相应的显示图形文件命令为:
result=system("mspaint test001.jpg");
**************************************************************************************
VC 调用 ANSYS 的示例程序。
//Test.cpp
#include"stdio.h"
#include"process.h"
void main()
{
int result;
printf("Solving……");
result=system("d:/ANSYS57/BIN/Intel/ANSYS57 -b -p ansysul -i test.txt -o test.out");
// 不用::WinExec,就用不着等待语句,可以实现用 Fortran 调用一样的效果。
printf("Solution finished……");
}


怎么还不知道?那个特征表找着没有?

  • 发表于 · 2017.06.25 11:49 · 阅读 · 10535

[版权声明] :本文文字、代码及图片版权归原作者所有,任何媒体、网站或个人未经本网协议授权不得采集、整理、转载或以其他方式复制发表。已经本站协议授权的媒体、网站,在使用时必须注明“稿件来源:学研谷”。

0 条评论

请先 登录 后评论
猜猜我是谁
CSUA -研究生

2
提问
55
回答
27
文章
注册推广