声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 13950|回复: 27

[Virtual.Lab] [原创]提供Ansys计算结果(比如加速度值)写成fre文件的命令流

[复制链接]
发表于 2006-4-18 19:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
将Ansys计算结果(比如加速度值)写成fre文件的命令流。位移值更简单。
  1. /POST26

  2. NSOL,2,10,U,Y,UY_2 ! 定义第二个变量为UY_2,值为10号节点Y方向的位移,节点可任选,但要保证其值非0
  3. XVAR,1 ! 定义时间变量为坐标横轴
  4. PLVAR,2
  5. *GET,num_var,VARI,0, NSETS ! 将变量长度值赋给变量num_var
  6. k=num_var

  7. *DIM,SYSNOISE_TITLE,CHAR,5,4
  8. SYSNOISE_TITLE(1,1)='SYSNOISE '
  9. SYSNOISE_TITLE(1,2)=' ACCELER '
  10. SYSNOISE_TITLE(1,3)='ATIONS '
  11. SYSNOISE_TITLE(1,4)=' FILE'

  12. SYSNOISE_TITLE(2,1)='Rev 5.5 '
  13. SYSNOISE_TITLE(2,2)=' IBM P2E '
  14. SYSNOISE_TITLE(2,3)='SSL 11'
  15. SYSNOISE_TITLE(2,4)='-AUG-02 '

  16. SYSNOISE_TITLE(3,1)='ACCELERA'
  17. SYSNOISE_TITLE(3,2)='TION_St'
  18. SYSNOISE_TITLE(3,3)='ructure '
  19. SYSNOISE_TITLE(4,1)='11-AUG-2002 '
  20. SYSNOISE_TITLE(4,2)=' 10:07 '
  21. SYSNOISE_TITLE(4,3)=':13 '

  22. SYSNOISE_TITLE(5,1)='TIME'
  23. *CFOPEN,ACCE,fre ! 定义数据结果文件,ACCE.fre

  24. *VWRITE,SYSNOISE_TITLE(1,1) ,SYSNOISE_TITLE(1,2) ,SYSNOISE_TITLE(1,3) ,SYSNOISE_TITLE(1,4)
  25. %C%C%C%C

  26. *get,nmax,node,,num,max, !得到节点编号的最大数

  27. *DIM,T_U,ARRAY,k,4! 定义保存时间历程结果的矩阵T_U,有num_var行,4列
  28. VGET,T_U(1,1,1),1 ! 矩阵的第一列保存第一个时间历程变量(默认为TIME)

  29. *dim,num_t,,1,5 !定义一个数组

  30. *DIM,SYSNOISE_SUBT1,CHAR,1,4
  31. SYSNOISE_SUBT1(1,1)='NODAL AC'
  32. SYSNOISE_SUBT1(1,2)='CELERATI '
  33. SYSNOISE_SUBT1(1,3)='ON VALU'
  34. SYSNOISE_SUBT1(1,4)='ES'

  35. *do,i,1,k,1
  36. num_t(1,1)=T_U(i,1,1) !按次序取TIME值
  37. *VWRITE,num_t(1,1)
  38. %20.8E

  39. *VWRITE,SYSNOISE_SUBT1(1,1) ,SYSNOISE_SUBT1(1,2) ,SYSNOISE_SUBT1(1,3) ,SYSNOISE_SUBT1(1,4)
  40. %C%C%C%C

  41. *do,j,1,nmax,1

  42. NSOL,2,j,U,X,UX ! 定义第二个变量为UX,值为j号节点X方向的位移
  43. DERIV,3,2,1,,,,,1 ! 将位移对时间求导,得到速度,存为变量3
  44. DERIV,4,3,1,,,,,1 ! 将速度对时间求导,得到加速度,存为变量4

  45. VGET,T_U(1,2,1),4 ! 矩阵的第2列保存第四个时间历程变量,j号节点X方向的加速度时间历程结果
  46. num_t(1,2)=T_U(i,2,1) !将与i对应的j节点的X加速度值赋给num_t的第2列

  47. NSOL,5,j,U,Y,UY ! 定义第5个变量为UY,值为j号节点Y方向的位移
  48. DERIV,6,5,1,,,,,1 ! 将位移对时间求导,得到速度,存为变量6
  49. DERIV,7,6,1,,,,,1 ! 将速度对时间求导,得到加速度,存为变量7

  50. VGET,T_U(1,3,1),7 ! 矩阵的第3列保存第7个时间历程变量,j号节点Y方向的加速度时间历程结果
  51. num_t(1,3)=T_U(i,3,1) !将与i对应的j节点的Y加速度值赋给num_t的第3列

  52. NSOL,8,j,U,Z,UZ ! 定义第8个变量为UZ,值为j号节点Z方向的位移
  53. DERIV,9,8,1,,,,,1 ! 将位移对时间求导,得到速度,存为变量9
  54. DERIV,10,9,1,,,,,1 ! 将速度对时间求导,得到加速度,存为变量10

  55. VGET,T_U(1,4,1),10 ! 矩阵的第4列保存第10个时间历程变量,j号节点Z方向的加速度时间历程结果
  56. num_t(1,4)=T_U(i,4,1) !将与i对应的j节点的Z加速度值赋给num_t的第4列

  57. num_t(1,5)=j

  58. *VWRITE,num_t(1,5),num_t(1,5),num_t(1,2),0,num_t(1,3) ! 将时间历程结果数据写到数据结果文件中,0为虚部及旋转加速度值
  59. %10I%10I%20.8E%20.8E%20.8E

  60. *VWRITE,0,num_t(1,4),0
  61. (20X,E20.8,E20.8,E20.8)

  62. *VWRITE,0,0,0
  63. (20X,E20.8,E20.8,E20.8)

  64. *VWRITE,0,0,0
  65. (20X,E20.8,E20.8,E20.8)

  66. *enddo

  67. *IF,i,EQ,k,THEN
  68. *EXIT
  69. *ENDIF

  70. *VWRITE,SYSNOISE_TITLE(1,1) ,SYSNOISE_TITLE(1,2) ,SYSNOISE_TITLE(1,3) ,SYSNOISE_TITLE(1,4)
  71. %C%C%C%C

  72. *enddo

  73. *CFCLOS

  74. FINISH
复制代码
其中参考了yiby的一部分,谢谢

点评

赞成: 5.0
赞成: 5
不错的帖子!!!  发表于 2014-3-26 17:42

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2006-4-19 09:40 | 显示全部楼层
haohaosir能否提供更多的有关fre文件格式?
发表于 2006-4-19 14:02 | 显示全部楼层
ansys版也提供了一个程序http://forum.vibunion.com/thread-10631-1-1.html
 楼主| 发表于 2006-4-19 14:43 | 显示全部楼层
第2种方法将Ansys计算结果(比如加速度值)写为fre文件的命令流
  1. /POST26

  2. NSOL,2,231,U,Z,UY_2 ! 定义第二个变量为UY_2,值为10号节点Y方向的位移,节点可任选,但要保证其值非0
  3. XVAR,1 ! 定义时间变量为坐标横轴
  4. PLVAR,2
  5. *GET,num_var,VARI,0, NSETS ! 将变量长度值赋给变量num_var
  6. k=num_var

  7. *DIM,SYSNOISE_TITLE,CHAR,5,4
  8. SYSNOISE_TITLE(1,1)='SYSNOISE '
  9. SYSNOISE_TITLE(1,2)=' ACCELER '
  10. SYSNOISE_TITLE(1,3)='ATIONS '
  11. SYSNOISE_TITLE(1,4)=' FILE'

  12. SYSNOISE_TITLE(2,1)='Rev 5.5 '
  13. SYSNOISE_TITLE(2,2)=' IBM P2E '
  14. SYSNOISE_TITLE(2,3)='SSL 11'
  15. SYSNOISE_TITLE(2,4)='-AUG-02 '

  16. SYSNOISE_TITLE(3,1)='ACCELERA'
  17. SYSNOISE_TITLE(3,2)='TION_St'
  18. SYSNOISE_TITLE(3,3)='ructure '
  19. SYSNOISE_TITLE(4,1)='11-AUG-2002 '
  20. SYSNOISE_TITLE(4,2)=' 10:07 '
  21. SYSNOISE_TITLE(4,3)=':13 '

  22. SYSNOISE_TITLE(5,1)='TIME'
  23. *CFOPEN,ACCE1,fre ! 定义数据结果文件,ACCE.fre

  24. *VWRITE,SYSNOISE_TITLE(1,1) ,SYSNOISE_TITLE(1,2) ,SYSNOISE_TITLE(1,3) ,SYSNOISE_TITLE(1,4)
  25. %C%C%C%C

  26. *get,nmax,node,,num,max, !得到节点编号的最大数
  27. kk=nmax*3+1

  28. *DIM,T_U,ARRAY,k,kk! 定义保存时间历程结果的矩阵T_U,有num_var行,kk列
  29. VGET,T_U(1,1,1),1 ! 矩阵的第一列保存第一个时间历程变量(默认为TIME)

  30. *dim,num_t,,1,5 !定义一个数组

  31. *DIM,SYSNOISE_SUBT1,CHAR,1,4
  32. SYSNOISE_SUBT1(1,1)='NODAL AC'
  33. SYSNOISE_SUBT1(1,2)='CELERATI '
  34. SYSNOISE_SUBT1(1,3)='ON VALU'
  35. SYSNOISE_SUBT1(1,4)='ES'
  36. s=1
  37. *do,j,1,nmax,1

  38. NSOL,2,j,U,X,UX ! 定义第二个变量为UX,值为j号节点X方向的位移
  39. DERIV,3,2,1,,,,,1 ! 将位移对时间求导,得到速度,存为变量3
  40. DERIV,4,3,1,,,,,1 ! 将速度对时间求导,得到加速度,存为变量4
  41. s=s+1
  42. VGET,T_U(1,s,1),4 ! 矩阵的第s列保存第四个时间历程变量,j号节点X方向的加速度时间历程结果

  43. NSOL,5,j,U,Y,UY ! 定义第5个变量为UY,值为j号节点Y方向的位移
  44. DERIV,6,5,1,,,,,1 ! 将位移对时间求导,得到速度,存为变量6
  45. DERIV,7,6,1,,,,,1 ! 将速度对时间求导,得到加速度,存为变量7
  46. s=s+1
  47. VGET,T_U(1,s,1),7 ! 矩阵的第s列保存第7个时间历程变量,j号节点Y方向的加速度时间历程结果

  48. NSOL,8,j,U,Z,UZ ! 定义第8个变量为UZ,值为j号节点Z方向的位移
  49. DERIV,9,8,1,,,,,1 ! 将位移对时间求导,得到速度,存为变量9
  50. DERIV,10,9,1,,,,,1 ! 将速度对时间求导,得到加速度,存为变量10
  51. s=s+1
  52. VGET,T_U(1,s,1),10 ! 矩阵的第s列保存第10个时间历程变量,j号节点Z方向的加速度时间历程结果

  53. *enddo

  54. *do,i,1,k,1
  55. num_t(1,1)=T_U(i,1,1) !按次序取TIME值
  56. *VWRITE,num_t(1,1)
  57. %20.8E

  58. *VWRITE,SYSNOISE_SUBT1(1,1) ,SYSNOISE_SUBT1(1,2) ,SYSNOISE_SUBT1(1,3) ,SYSNOISE_SUBT1(1,4)
  59. %C%C%C%C

  60. s=1
  61. *do,j,1,nmax
  62. s=s+1
  63. num_t(1,2)=T_U(i,s,1) !将与i对应的j节点的X加速度值赋给num_t的第2列
  64. s=s+1
  65. num_t(1,3)=T_U(i,s,1) !将与i对应的j节点的Y加速度值赋给num_t的第3列

  66. s=s+1
  67. num_t(1,4)=T_U(i,s,1) !将与i对应的j节点的Z加速度值赋给num_t的第4列

  68. num_t(1,5)=j

  69. *VWRITE,num_t(1,5),num_t(1,5),num_t(1,2),0,num_t(1,3) ! 将时间历程结果数据写到数据结果文件中,0为虚部及旋转加速度值
  70. %10I%10I%20.8E%20.8E%20.8E

  71. *VWRITE,0,num_t(1,4),0
  72. (20X,E20.8,E20.8,E20.8)

  73. *VWRITE,0,0,0
  74. (20X,E20.8,E20.8,E20.8)

  75. *VWRITE,0,0,0
  76. (20X,E20.8,E20.8,E20.8)

  77. *enddo

  78. *IF,i,EQ,k,THEN
  79. *EXIT
  80. *ENDIF

  81. *VWRITE,SYSNOISE_TITLE(1,1) ,SYSNOISE_TITLE(1,2) ,SYSNOISE_TITLE(1,3) ,SYSNOISE_TITLE(1,4)
  82. %C%C%C%C

  83. *enddo

  84. *CFCLOS

  85. FINISH
复制代码


该方法与上次传的相比:计算量大大减少、因此速度要快!
因为第一种方法每写一步数据,变量需要计算一次。第2种方法是变量一次计算完毕,然后将结果保存在数组里,需要写时再提取。但其缺点是当时间步很多、而且模型节点数庞大时需要非常大的数据存储空间。
发表于 2006-4-19 14:44 | 显示全部楼层
哇,好厉害,多谢多谢
 楼主| 发表于 2006-4-19 15:05 | 显示全部楼层
将Ansys瞬态计算的加速度值写为fre文件后,在Sysnoise里通过FEA可以加上加速度边界条件,然后进行时域计算。
但Sysnoise时域计算好象不能求解场点声压值?不知为何?
发表于 2008-1-4 21:19 | 显示全部楼层
请问为什么命令流进行到*VWRITE,SYSNOISE_TITLE(1,1) ,SYSNOISE_TITLE(1,2) ,SYSNOISE_TITLE(1,3) ,SYSNOISE_TITLE(1,4)
%C%C%C%C就提示错误%C%C%C%C不是可识别的后处理命令?怎么会出现这种情况,困扰很久了!
发表于 2008-2-2 12:26 | 显示全部楼层
请问这种方法导出的fre文件,可以直接作为sysnoise的边界条件文件输入么?
发表于 2008-2-2 12:45 | 显示全部楼层
你可以试试,不过在计算之前,抽取一些节点出来,检查边界条件是否加载正确。
发表于 2008-2-2 12:49 | 显示全部楼层

请问sysnoise边界条件文件类型有要求么?
我记得好像在哪见过要用rst文件
发表于 2008-2-2 14:24 | 显示全部楼层
那个是转换程序(论坛上有),一般个人编写的程序通用性比较差,要用的话必须知道他的思路,加以修改以后才能使用.
发表于 2008-2-2 14:56 | 显示全部楼层
sysnoise不能直接import ansys的谐响应结果么?
发表于 2008-2-2 15:50 | 显示全部楼层
不可以的,尤其是不同版本ansys导出的文件格式还不同.
sysnoise计算流固耦合是比较有特点的,对于表面边界条件都已知的情况,计算辐射声场时可以自己写程序算啊,什么内存限制问题都没有拉,呵呵.

[ 本帖最后由 w89986581 于 2008-2-2 15:55 编辑 ]
发表于 2008-2-2 23:08 | 显示全部楼层
计算辐射声场时可以自己写程序算啊,

你是指自己编fortran代码那样的程序嘛?
原以为用sysnoise算,能省力些:@L

[ 本帖最后由 whyingpost 于 2008-2-3 00:01 编辑 ]
发表于 2008-2-2 23:13 | 显示全部楼层
SYSNOISE DISPLACEMENTS FILE                                                      
Rev 5.2 SGI IRIX   21-APR-95                                                     
Set number         4  (Elements)                            18-JUN-1996 09:30:25
18-JUN-1996 10:57:09                                                            
FREQUENCY                                                                        
      0.10000000E+01                                                            
NODAL DISPLACEMENT VALUES                                                        
         1         1     -0.17373156E-05      0.10418802E-05      0.30898480E-05
                         -0.46854776E-05      0.00000000E+00      0.00000000E+00
                          0.00000000E+00      0.00000000E+00      0.00000000E+00
                          0.00000000E+00      0.17498594E-04      0.10095929E-05
         2         2     -0.30714280E-05      0.96336395E-06      0.28785498E-05
                         -0.46979131E-05      0.00000000E+00      0.00000000E+00
                          0.00000000E+00      0.00000000E+00      0.00000000E+00
                          0.00000000E+00      0.17026132E-04      0.10225364E-05
         

这是sysnoise自带的example里面的2Dcar中作为位移边界条件的一个文件
请问你知道它这个矩阵是怎么排列的嘛?
为什么每个节点号后面跟的位移值都有4行3列这么多阿?
这3列是代表xyz三个方向嘛?
如果是的话
那么4行又代表什么呢?

[ 本帖最后由 whyingpost 于 2008-2-2 23:14 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-18 22:36 , Processed in 0.053023 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表