我提取谐响应位移的命令流
我节点有点多,后来想改小,发现网格到sysnoise后有问题,就还按照原来的9662点做。~9Z H[vJ T下面是提取从10到200Hz,每10hz提取一次的。这样总共有20个频率,这个命令流中是定义了大的数组每个数组有9662个元素,每个频率的值全部读取后再写入文件,这样减少写磁盘,速度可以提高非常多。这个做了之后有60几兆的数据,只用了好像是十几分钟吧
最初我是读一个节点的数据,写一次文件,这样下来单一个9662点就得很多个小时,更不用说20个频率的数据了。
E E@WX-{K
其实写这个主要是注意各种fre文件的格式,在sysnoise的帮助文件中有getting started,里面有位移的fre文件,也有速度的fre文件,参照里面的格式做命令流就可以了。LM [1t K$dV+c
I!k.qJdZn
/Post1z:O+M0W;T,IK
*set,nodenum,9662 !节点数为9662
*Cfopen,homonic_response,fre !创建并打开一个fre文件
*dim,hamopx_real,array,,nodenum !以下定义数组,有xyz的平动位移实部虚部,旋转位移的实部虚部
*dim,hamopy_real,array,,nodenum
*dim,hamopz_real,array,,nodenum2Ojb5I7|&|Vt
*dim,hamoprx_real,array,,nodenum
*dim,hamopry_real,array,,nodenum
*dim,hamoprz_real,array,,nodenum
*dim,hamopx_imag,array,,nodenum
*dim,hamopy_imag,array,,nodenum$oL/M9B%Q^
*dim,hamopz_imag,array,,nodenum#O,M(zv w p
*dim,hamoprx_imag,array,,nodenum
*dim,hamopry_imag,array,,nodenum6N&t2bPQ H`/t
*dim,hamoprz_imag,array,,nodenum
*do,i,1,20,1 !由于在谐响应时做的就是从0到200hz每隔10hz做一个分析的,所以有20个结果
*Vwrite !写sysnoise位移文件的头文件标示,以及下面的标示是要每个频率都要写的所以写在循环里面
('SYSNOISE DISPLACEMENTS FILE') D)D)\Yj,z"tc0Tj
*Vwrite
('Rev 5.5 Windows NT 30NOV2000')-b D Z ]"N
*Vwrite
('structure')
*Vwrite%\:K u:Vg9t5fc
('10-JUN-2008 15:27:44')8UB!B(sMo
set,1,i,,0,,,,, !进入第i个结果
*GET,hamofq,ACTIVE, ,set,FREQ !得到该部分结果的频率
*Vwrite !写频率标示$QN\dl6?y
('FREQUENCY')p:FT.F J
*Vwrite,hamofq !写频率#oc$N+FJFbT/i
(e20.8)
*Vwrite j"U _8KY}9lt
('NODAL DISPLACEMENT VALUES')H;F/O-Z&L@s
!读取实部数据
set,1,i,,0,,,,, !定位到第i个结果的实部
*do,j,1,nodenum !循环读取相应位移的实部
*get,hamopx_real(1,j),node,j,u,x!TR7{Vy~.W
*get,hamopy_real(1,j),node,j,u,y
*get,hamopz_real(1,j),node,j,u,z
*get,hamoprx_real(1,j),node,j,rot,xa"ZCw#h7BJD/dl
*get,hamopry_real(1,j),node,j,rot,y
*get,hamoprz_real(1,j),node,j,rot,z+i.B&z pLd6f|_X
*enddo,Rfd[5M2s8P
!读取虚部数据J9Yu"i}2U+dc
set,1,i,,1,,,,, !定位到第i个结果的虚部
*do,j,1,nodenum !循环读取相应位移的虚部
*get,hamopx_imag(1,j),node,j,u,x
*get,hamopy_imag(1,j),node,j,u,yRTGi4U%`/L(_n~9m
*get,hamopz_imag(1,j),node,j,u,z.P"Sx(M dR[\H+|
*get,hamoprx_imag(1,j),node,j,rot,x,Ip!d.U\4V
*get,hamopry_imag(1,j),node,j,rot,y fCw$L,X#k
*get,hamoprz_imag(1,j),node,j,rot,z
*enddon^3C x9?@Jt3n
!将结果写入文件t{%QM Et*[0a`"I
*do,j,1,nodenum6b2y\1a'N QS)v
xuhao='%j%'
kong=' ' !空格,这个是在fre位移文件中除了每节点的第一行有节点号外,其他行前面是空格b~t0ZYZ
*Vwrite,xuhao,xuhao,hamopx_real(1,j),hamopx_imag(1,j),hamopy_real(1,j)
(2A10,3e20.8)
*Vwrite,kong,hamopy_imag(1,j),hamopz_real(1,j),hamopz_imag(1,j)
(A20,3e20.8) !注意格式控制 iyT/bF)f
*Vwrite,kong,hamoprx_real(1,j),hamoprx_imag(1,j),hamopry_real(1,j)
(A20,3e20.8)
*Vwrite,kong,hamopry_imag(1,j),hamoprz_real(1,j),hamoprz_imag(1,j)2?k8\ Q"BpX] x
(A20,3e20.8)
*enddo
*enddo
*cfclosENv:Pu?Z9}
FINILISH 值得研究一下,不过在post1下,如果是用完全法计算是没有问题的,但是如果使用模态叠加法计算的话,post1下面的载荷步文件是模态的载荷步,不知道楼主怎么处理的这个问题 楼主在matlab中做过吗?
页:
[1]