转贴:[原创]用Visual C调用ansys后台运行求解并实时显示计算进度和结果(附源程序)
[font=宋体][size=3][color=black]以下是偶在ANSYS--前后处理里发的贴,是受到下帖的启发:[/color][/size][/font][size=4][color=royalblue][b][url=http://www.simwe.com/forum/thread-179177-1-1.html][size=4][color=royalblue][b]利用C++Builder作前台结合ANSYS批处理方式二次开发[/b][/color][/size][/url][/b][/color][/size]
[font=宋体][size=3][/size][/font]
[size=3][font=宋体]************************************************************************************[/font][/size]
[size=3][font=宋体]呵呵,花了点时间做一个所谓[/font][font=Times New Roman]ANSYS[/font][font=宋体]二次开发的例子,也就是前台用[/font][font=Times New Roman]VC[/font][font=宋体]在后台调用[/font][font=Times New Roman]ANSYS[/font][font=宋体]求解并实时显示计算进度和结果。随贴附上源程序和计算的例子,希望大家一起讨论。[/font]
[font=Times New Roman][/font]
[font=宋体]思路:[/font][/size]
[size=3][font=宋体]([/font][font=Times New Roman]1[/font][font=宋体])首先在[/font][font=Times New Roman]VC[/font][font=宋体]里根据文本框等控件生成参数文件,和[/font][font=Times New Roman]ANSYS[/font][font=宋体]主计算程序合并生成[/font][font=Times New Roman]ANSYS_RUN.mac[/font][font=宋体],在[/font][font=Times New Roman]ANSYS_RUN.mac[/font][font=宋体]最后加上用来生成[/font][font=Times New Roman]flag.txt[/font][font=宋体]文件(内容为[/font][font=Times New Roman]0[/font][font=宋体])的[/font][font=Times New Roman]APDL[/font][font=宋体]代码[/font][font=Times New Roman]. [/font][font=宋体]随后在[/font][font=Times New Roman]VC[/font][font=宋体]里用[/font][font=Times New Roman]WinEXEC[/font][font=宋体]运行[/font][font=Times New Roman]ANSYS batch mode [/font][font=宋体]去调用[/font][font=Times New Roman]ANSYS_RUN.mac[/font][font=宋体],并且把屏幕输出到[/font][font=Times New Roman]output.txt[/font][font=宋体]。同时,建立[/font][font=Times New Roman]flag.txt[/font][font=宋体]文件(内容为[/font][font=Times New Roman]1[/font][font=宋体]).[/font][/size]
[size=3]
[/size]
[size=3][font=宋体]([/font][font=Times New Roman]2[/font][font=宋体])在[/font][font=Times New Roman]VC[/font][font=宋体]里开一个线程,[/font][font=Times New Roman] [/font][font=宋体]循环读[/font][font=Times New Roman]flag.txt[/font][font=宋体],看其是否为[/font][font=Times New Roman]1[/font][font=宋体](运行)或[/font][font=Times New Roman]0[/font][font=宋体](结束)。如果是[/font][font=Times New Roman]1[/font][font=宋体],则读[/font][font=Times New Roman]output.txt[/font][font=宋体]内容,显示在主程序状态文本框里。(当然也可以读[/font][font=Times New Roman]err[/font][font=宋体]文件来判断)。[/font][/size]
[size=3]
[/size]
[size=3][font=宋体]([/font][font=Times New Roman]3[/font][font=宋体])[/font][font=Times New Roman]ANSYS_RUN.mac [/font][font=宋体]里有生成[/font][font=Times New Roman]plots[/font][font=宋体]并保存为[/font][font=Times New Roman]jpg[/font][font=宋体]文件的[/font][font=Times New Roman]APDL[/font][font=宋体]代码。当[/font][font=Times New Roman]ANSYS[/font][font=宋体]运行结束后,在主程序里可以[/font][font=Times New Roman]browse[/font][font=宋体]结果图像文件。[/font][/size]
[size=3]
[/size]
[size=3][font=Times New Roman]ANSYS[/font][font=宋体]主计算程序:[/font][font=Times New Roman] VM28.mac. [/font][font=宋体]这是[/font][font=Times New Roman]ANSYS[/font][font=宋体]的一个例子程序,但是做了一些改动,计算在[/font][font=Times New Roman]Time_Start [/font][font=宋体]到[/font][font=Times New Roman]Time_End[/font][font=宋体]之间,步长为[/font][font=Times New Roman]Time_interval[/font][font=宋体]的温度分布。[/font][/size]
[size=3]
[/size]
[size=3][b][font=Times New Roman]VM28[/font][/b][b][font=宋体]:[/font][/b][font=Times New Roman]Transient Heat Transfer in an Infinite Slab[/font][font=宋体]。[/font][/size]
[size=3]
[/size]
[size=3][font=宋体]在[/font][font=Times New Roman]VC[/font][font=宋体]程序里,[/font][/size]
[size=3][font=Times New Roman]ANSYS EXE File[/font][font=宋体]是[/font][font=Times New Roman]ANSYS[/font][font=宋体]的执行文件的路径名。[/font][/size]
[size=3]
[/size]
[size=3][font=Times New Roman]MAC Batch File [/font][font=宋体]是[/font][font=Times New Roman]ANSYS[/font][font=宋体]主计算程序的路径名。[/font][/size]
[size=3][font=Times New Roman][/font][/size]
[size=3][font=Times New Roman]Working Folder[/font][font=宋体]是工作路径,用来存放结果文件和中间过程文件。[/font][/size]
[size=3][font=Times New Roman][/font][/size]
[size=3][font=Times New Roman]Note: how to export image in batch mode[/font][font=宋体]:[/font][/size]
[size=3][font=宋体]因为在[/font][font=Times New Roman]batch mode[/font][font=宋体],[/font][font=Times New Roman] [/font][font=宋体]没有[/font][font=Times New Roman]graphic window[/font][font=宋体],所以一般的图形输出命令无效。但是可以使用[/font][font=Times New Roman]/show,jpeg[/font][font=宋体]命令。另外,可以用以下命令[/font][/size]
[font=Times New Roman][size=3][/size][/font]
[font=Times New Roman][size=3]!Turn off the automatic increasement of jobnamennn.jpg, so the output file will be jobname.jpg.[/size][/font]
[font=Times New Roman][size=3]/DEV,PSFN,NINC[/size][/font]
[font=Times New Roman][size=3][/size][/font]
[size=3][font=宋体]以上是在[/font][font=Times New Roman]VC[/font][font=宋体]调用[/font][font=Times New Roman]ANSYS[/font][font=宋体]的例子,在[/font][font=Times New Roman]ANSYS[/font][font=宋体]里调用[/font][font=Times New Roman]C, Fortran, Matlab[/font][font=宋体]的例子可在这里找到:[/font][/size]
[font=Times New Roman][size=3][url=http://www.simwe.com/forum/viewthread.php?tid=699880&highlight=%2Biomega][font=Times New Roman][size=3]http://www.simwe.com/forum/viewthread.php?tid=699880&highlight=%2Biomega[/size][/font][/url][/size][/font] 好东西,顶下! 好,学习一下! 好东西!! 谢谢开发者和版主!
好东西
能留个qq吗,大家交流一下 很好很强大!!!!像牛人致敬!!! 太厉害了! 正在学习中:loveliness: :loveliness:
页:
[1]