寒风中暗爽 发表于 2012-2-21 16:54:10

ansys二次开发学习笔记

本帖最后由 寒风中暗爽 于 2012-2-24 13:38 编辑

最近看了iomega版主的精华帖
用Visual C调用ansys后台运行求解并实时显示计算进度和结果(附源程序)我仔细阅读了源程序,发现OnRun响应函数中的重置flag文件的语句语法有点奇怪,开始难以理解,查了一下午资料,并实际实验了多次,写上自己的一点心得,希望得到指正。


[*]   //following code to reset flag file to indicate ANSYS is done
[*]       fprintf(fp,"*cfopen,flag,txt\n");
[*]   fprintf(fp,"*DIM,flagtmp,array,1\n");
[*]       fprintf(fp,"flagm=0\n");
[*]       fprintf(fp,"flagtmp(1)=flagm\n");
[*]       fprintf(fp,"*vwrite,flagtmp(1)\n");
[*]       fprintf(fp,"%%I\n");
[*]       fprintf(fp,"flagtmp=\n");      
[*]       fprintf(fp,"*cfclos\n");
[*]       fclose(fp);

我昨天读到这10行代码的时候,产生了3个疑问。
1.为何使用只有1个元素的一维数组,而不直接使用一个变量。(应该都是可以的)
2.既然使用了一维数组,按照书本和网上找到的资料

删除数组参数与删除变量很类似,也可以用*set或“=“进行赋空值删除,对于字符参数则赋值为‘’,删除时只需删除变量名及第一个元素的名称,或使用utility menu——parameter——array parameter——define/edit。
            举例:删除一个一维数组A(12,1,1)命令如下:
            A(1)=
            或*set,A(1)

删除数组的规范格式应该是
   flagtamp(1)=
既 fprintf(fp,"flagtmp(1)=\n");
不过我后来实验了一下,fprintf(fp,"flagtmp(1)=\n");或者fprintf(fp,"flagtmp=\n"); 都是可以成功编译运行的。
3.对第7行    fprintf(fp,"%%I\n");    我费解了好久。
首先
fprintf(fp,"*cfopen,flag,txt\n");
fprintf(fp,"*vwrite,flagtmp(1)\n")
fprintf(fp,"%%I\n");
fprintf(fp,"*cfclos\n");
执行后是在ANSYS_RUN.mac文件中写入

*cfopen,flag,txt
*DIM,flagtmp,array,1
flagm=1
flagtmp(1)=flagm
*vwrite,flagtmp(1)
%I
flagtmp(1)=
*cfclos
我查看了所以身边的ansys,APDL和网上的资料,对*vwrite用法的解释都是在*vwrite命令行之后必须紧跟写出数据的格式说明,规定*vwrite命令所写出的每项数据的格式描述符。注意:格式行前面不需要FORMAT格式标识符,直接填写一序列的格式描述符,所有的格式描述符必须用一圆括号括起来。
我翻看了FORTAN90的教程,和《APDL参数化有限元分析技术》都没有%I类型的格式描述符,我猜%I应该是像C语言里面的%d表示输入整形。以前都说APDL是类似FORTRAN的语法,这里怎么又有点类似C语言了,真是一头雾水。
我试着写成fortran格式
1.
*vwrite,flagtmp(1)
(I2)
flag文件中输入的是一串*号,这种语法可以执行,但是某种神秘的原因,导致了类似字段宽度太小的错误。
然后我又写成
2.
*vwrite,flagtmp(1)
(%I)
给它加上圆括号,这次是ansys直接提示(%I)语法出错。
3.
然后我又写成《APDL参数化有限元分析技术》里介绍的格式描述
*vwrite,flagtmp(1)
(F2.0)
可以正确执行,并在flag文件中输入了1.
=============================
虽然最终我知道了
*vwrite,flagtmp(1)
%I
其实就是在文件中写入一个整形数据。可是我翻看了 《C语言程序设计》《C++语言程序设计》《Fortran语言程序设计》《APDL参数化有限元分析技术》《ANSYS工程结构数值分析》等等书籍,又百度,谷歌了半天,都没有发现对%I这种格式说明符的介绍。







狼雅 发表于 2012-2-29 17:28:16

感谢原创,辛苦了

jxylxli 发表于 2017-2-27 17:12:24

感谢分享..
页: [1]
查看完整版本: ansys二次开发学习笔记