声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

声振论坛 展示 声学噪声 Virtual.Lab 查看内容

Ansys计算结果(比如加速度值)写成fre文件的命令流

2015-10-28 07:55| 发布者: aspen| 查看: 3310| 评论: 24|原作者: haohaosir|来自: 声振论坛

摘要: 将Ansys计算结果(比如加速度值)写成fre文件的命令流。位移值更简单。/POST26 NSOL,2,10,U,Y,UY_2 ! 定义第二个变量为UY_2,值为10号节点Y方向的位移,节点可任选,但要保证其值非0 XVAR,1 ! 定义时间变量为坐标横 ...
将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的一部分,谢谢

12下一页
发表评论

最新评论

引用 yiby 2006-4-19 09:40
haohaosir能否提供更多的有关fre文件格式?
引用 frogfish 2006-4-19 14:02
ansys版也提供了一个程序http://forum.vibunion.com/thread-10631-1-1.html
引用 haohaosir 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种方法是变量一次计算完毕,然后将结果保存在数组里,需要写时再提取。但其缺点是当时间步很多、而且模型节点数庞大时需要非常大的数据存储空间。
引用 frogfish 2006-4-19 14:44
哇,好厉害,多谢多谢
引用 haohaosir 2006-4-19 15:05
将Ansys瞬态计算的加速度值写为fre文件后,在Sysnoise里通过FEA可以加上加速度边界条件,然后进行时域计算。
但Sysnoise时域计算好象不能求解场点声压值?不知为何?
引用 suibianba 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不是可识别的后处理命令?怎么会出现这种情况,困扰很久了!
引用 whyingpost 2008-2-2 12:26
请问这种方法导出的fre文件,可以直接作为sysnoise的边界条件文件输入么?
引用 w89986581 2008-2-2 12:45
你可以试试,不过在计算之前,抽取一些节点出来,检查边界条件是否加载正确。
引用 whyingpost 2008-2-2 12:49

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

[ 本帖最后由 w89986581 于 2008-2-2 15:55 编辑 ]
引用 whyingpost 2008-2-2 23:08
计算辐射声场时可以自己写程序算啊,

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

[ 本帖最后由 whyingpost 于 2008-2-3 00:01 编辑 ]
引用 whyingpost 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 编辑 ]
引用 whyingpost 2008-2-3 01:34
a
明白了

是按照                    Ux实    Ux虚   Uy实
                                                    Uy虚    Uz实    Uz虚
                                                      Rx实    Rx实    Ry实
                                                    Ry虚    Rz实     Rz虚
    的顺序排列的 。
引用 w89986581 2008-2-3 08:42
呵呵,pengweicai的帖子中有介绍.注意字符数(包括空格),好象是20.

[ 本帖最后由 w89986581 于 2008-2-3 09:26 编辑 ]
引用 whyingpost 2008-2-18 13:59
多谢:handshake
引用 wyxing 2008-10-30 16:37
主任大侠做过ABAQUS频变振动速度结果做边界条件导入到SYSnoise中计算场点声压吗?
要读ABAQUS的速度边界条件是不是也要个程序转换?
谢谢!
引用 qyu0635 2009-4-3 16:59
“*VWRITE,SYSNOISE_TITLE(1,1) ,SYSNOISE_TITLE(1,2) ,SYSNOISE_TITLE(1,3) ,SYSNOISE_TITLE(1,4)
%C%C%C%C”
我觉得可能是和上面命令类似。
但把(1,i)改为(j,i)。j=2~5.

[ 本帖最后由 qyu0635 于 2009-4-3 17:00 编辑 ]

查看全部评论(24)

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

GMT+8, 2024-11-25 17:29 , Processed in 0.076596 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部