- 积分
- 47
- 注册时间
- 2003-9-12
- 仿真币
-
- 最后登录
- 1970-1-1
|
大家都想看mulin的关于ansys编程的帖子,我始终没有联系上他/她,如果获得同意,我会开放那篇帖子。如下是我从猎手转载来的,谢谢。本人不会ansys,因此对相关技术问题无法回答。
原作者hunter
将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
已经执行完毕。
在ANSYS中当然也可以以VC或FORTRAN作为子程序调用。可以参看有关ANSYS二次开发方面的资料。 这个方法应该是与系统无关的。
在FORTRAN中不需要判断,FORTRAN会等ANSYS执行完毕才继续执行下一条语句。
在VC中,我没有找到与FORTRAN类似的函数,只好加一条循环判断语句。
如果谁能找着这样的函数,请告诉我,谢谢!
判断方法很简单,只需判断错误文件file.err是否可写就可以了。
因为当ANSYS在运行时,file.err是不可写的,只有当它运行完毕,此文件才可写。
原作者webycn
VC中调用Ansys的方法如下,具体过程就不写了。
: 1 利用Ansys建立一个通用有限元模型,并进行计算求解。注意:根据模型中所有可变
的参数定义相应的参数,利用参数化建模。将生成的log 文件拷贝成另一文件,即宏命
令文件。当然可以直接用APDL编写此文件。
:2 VC编写界面:
(1) 要实现前处理参数输入功能;
(2) 根据用户输入的参数修改刚才得到的ansys宏命令文件中,参数对于的参数值 ;
(3) 将生成的宏命令文件文件提交给Ansys程序进行批处理操作;
在VC++ 中可利用CreateProcess函数创建一个进程,去执行其他程序,并且可以设置改进程的优先级。
Ansys提供了一种批处理方式的格式:"Ansys. bat-I InputName- O OutNam
e. 其中InputName和OutName分别为输入输出文件名。
(4)程序需要判断Ansys的批处理操作何时结束。
在Window NT 操作系统中当一个进程运行完毕后,窗口的标题会有 "已完成"这几个字。如当Ansys批处理完成后,窗口标题会显示 "Ansys已完成”。可以利用这
一个特点来判断进程是否运行完毕。
: 3 利用结果文件(out文件,或者由你在宏命令中指定输出的文件)进行后处理
自评:其实这种方法不能是真正意义上的开发,只不过用vc创建一个进程,vc与ansys并没有真正意义上的结合.如果自己开发程序,你永远都无法脱离ansys这个软件环境.二次开发应该是DLL或ActiveX,或者其它的COM对象形式,可以离开开发软件的运行环境.不过,实现一定的批处理功能也不错.
希望多讨论 |
|