ATV输出与读取问题
几个站友都问过这个问题,计算时几个细节如下:1.间接边界元和直接边界元(单元类型)可以进行ATV分析,而直接边界元(节点类型)不能进行ATV分析;
2.计算ATV前必须设定场点,因为ATV的物理意义为单元单独振动时指定场点的声压响应,步骤见1,2;
3.输出ATV时,可以选择txt文件格式,读取程序如下(matlab)
%%%读取sysnoise生成的ATV文件,并转存
filename = ['D:\Sysnoise\unitsphere\ATV.txt']; %%% Sysnoise输出的ATV文件
fid= fopen(filename,'r');
if fid == -1, disp('Invalid datafile'); return;end
while 1,
dataline1 = fgetl(fid);
if ~ischar(dataline1), fclose(fid); break; end;
if isequal(dataline1, 'ATV FREQUENCY FIELD POINT'),
dataline1 = fgetl(fid);
temp = str2num(dataline1);
filename1 = ['C:\MATLAB6p5\work\unitsphere\ATV',num2str(temp(2)),'Hz.txt'];%%% 转存的Mat文件
fid1= fopen(filename1,'w');
for ii = 1:length(nodedata(:,1)),
dataline1 = fgetl(fid);
dataline2 = fgetl(fid);
fprintf(fid1,'%s \n',);
end
fclose(fid1);
end
end
%%%load读取指定频率的ATV矩阵,每个节点对应的ATV元素为:
sysnoiseATV = (ATV(:,3)+i*ATV(:,4)).*normvect(:,1)+(ATV(:,5)+i*ATV(:,6)).*normvect(:,2)+(ATV(:,7)+i*ATV(:,8)).*normvect(:,3);
其中normvect为法向量矩阵,N表示节点总数。
谢版主。 还有几个疑问, 请教版主及dlchen同学
1。ATV的格式为(Xreal,Ximag,Yreal,Yimag,Zreal,Zimag),表面速度的格式为(Xreal,Ximag,Yreal,Yimag,Zreal,Zimag),那么如何得到声压?
2。版主为何要自己算出法向ATV和法向速度?
3。版主可曾在复杂一点的模型上(除简单的板子以外)验算过ATV的可靠性?
4。版主的接口程序最后一行没看懂,可否解释一下?
回复 #3 ningxia 的帖子
1.sum(sysnoiseATV.*Vn); 其中sysnoiseATV为程序末给出的结果,Vn为每个节点法向振速。2.计算法向ATV和法向速度的原因是由于我做的工作不是用sysnoise计算结果,只是作为参考结果而已,呵呵。
3.我验证过球的,其他复杂模型多数是没有解析解的,是无法验证的。但是可以这样说,除了局部不光滑区域,ATV的计算结果随着面元数的增大而提高。
4.实质上就是复ATV在法线方向的投影 斑竹已回答:) 太感激您的分享 太好了 解决我的燃眉之急 非常感谢 请教一下版主,数组normvect是如何得到的呢? newshopping 发表于 2012-6-14 10:44
请教一下版主,数组normvect是如何得到的呢?
同问,麻烦版主有时间解释下,谢谢
页:
[1]