ANSOFT计算结果提取

  ANSOFT进行计算时为了优化计算精度和网格数量,网格通常都采用软件自带的自适应剖分算法,当然软件也支持外部网格导入,这里针对软件自适应网格划分情况介绍一下结果数据的导出,导出的数据可以用MATLAB等软件进行任意需要的后处理。总体来说,导出数据主要有以下几种常见情况:

(1)导出既定曲线上的结果数据;

    先在model中绘画需要导出数据的曲线,然后用Results – Create Field Report画出曲线上变量的曲线,然后右键Export可将结果导出为EXCEL可打开的.csv文件,之后的操作就简单了。

(2)导出既定体空间的结果数据;

    ANSOFT的Field Calculator(Field Overlays -> Calculator)支持两种数据导出,第一种操作简单,如图1所示,选取需要导出的变量,然后点击output项里的Export弹出Export Solution对话框,输入结果文件的春放位置和文件名,右下角有是否在结果文件里包含坐标值的选项,可根据需要勾选,点选Calculate grid points,然后输入x、y、z的范围和坐标间隔,点击ok,由于所选点并非软件的直接计算值,需要通过插值获得,当输出节点较多时,速度会较慢。另一种方式是通过input grid points file完成,首先需要生成格点文件*.pts,生成方法见helpPostProcessing and Generating Reports – Using the Field Calculator – Output Commands - Export Commands,help中给出了.pts文件的格式,如图2所示,第一行写明单位,后面一次是需要导出结果的格点坐标(x, y, z),采用matlab或其它软件生成格点并保存为.txt文件,然后将txt文件的扩展名直接更改为.pts,这个pts文件就可直接导入到图1中input grid points file处了,其它操作同第一种方式。


0.png


0.png

    导出的结果文件为.fld格式,可以通过记事本打开,为了数据的后处理,用EXCEL打开更加方便,打开时excel会有向导提示如何将文件中的数据识别到表格中,如采用固定间距、标点符号分隔等,ANSOFT生成的结果数据之间都采用了空格隔开,所以这里可选择用空格分隔,另存为.xlsx等matlab容易识别的文件格式。

下一步,用matlab的导入函数xlsread函数将数据读出,操作语句可参考xlsread函数的操作说明(help xlsread)。这样ANSOFT的计算结果就导入到了matlab中。

相比两种方法,第一种操作简单,对目标体空间为六面体时比较使用,当目标体空间由某个曲面围成时,如托卡马克等离子体区域等,通过第一种方法完成往往会导致大量的冗余数据,而第二种数据就具有这方面的优势。

(3)导出特定曲面上的结果数据;

    若曲面可以用多条曲线近似,那么可以连续绘制多条曲线,然后分别导出,当然这样操作起来会显得麻烦,ANSOFT支持编程,具体如何实现需要参考帮助文档,暂时还未试验过。

曲面上的数据理论上也可以通过体空间的数据然后插值获得,但是这样用体数据来获得面数据经常会导致大量冗余数据,操作经济性不好,因为ANSOFT在导出大量数据时速度很慢。

所以,导出曲面数据最好的方法是通过给定的格点文件来提取,方法在导出体空间数据中已经介绍。

 

附:计算程序举例,导出等离子体表面的磁场数据

% creat a .pts(.txt) file for ANSFOT data exporting

% written by RAO B.,2012.05.12

clear all;

R=1.05*1000;

r=0.26*1000;

N_tht=384;N_phi=384;

tht=0:2*pi/N_tht:2*pi-2*pi/N_tht;

phi=-pi/4:2*pi/N_tht:pi/4-2*pi/N_tht;

len_tht=length(tht);len_phi=length(phi);

THT=repmat(tht,len_phi,1);

PHI=repmat(phi',1,len_tht);

xx=(R+r*cos(THT)).*cos(PHI);

yy=(R+r*cos(THT)).*sin(PHI);

zz=r*sin(THT);

cordn=zeros(len_phi*len_tht,3);

for i1=1:1:len_phi

   for j1=1:1:len_tht

      cordn((i1-1)*len_tht+j1,1)=xx(i1,j1);

      cordn((i1-1)*len_tht+j1,2)=yy(i1,j1);

      cordn((i1-1)*len_tht+j1,3)=zz(i1,j1);

   end

end

fid=fopen('B_cordn_a.txt','w');

fprintf(fid,'Unit=mmrn');

fprintf(fid,'%f  %f  %f rn',cordn');

fclose(fid);

 

% open the result file from ANSOFT by excel, and save it as B_cordn_a.xlsx

B_cordn=xlsread('B_cordn_a.xlsx');

THT1=repmat(tht',len_phi,1);

for i1=1:1:len_phi

    PHI1((i1-1)*len_tht+1:i1*len_tht,1)=phi(i1);

end

% Br_cordn1(xx yy zz Bx By Bz)

Br_cordn1=B_cordn(:,4).*cos(THT1).*cos(PHI1)+B_cordn(:,5).*cos(THT1).*sin(PHI1)+B_cordn(:,6).*sin(THT1);

Btht_cordn1=-B_cordn(:,4).*sin(THT1).*cos(PHI1)-B_cordn(:,5).*sin(THT1).*sin(PHI1)+B_cordn(:,6).*cos(THT1);

Bphi_cordn1=-B_cordn(:,4).*sin(PHI1)+B_cordn(:,5).*cos(PHI1);

Br_cordn=(reshape(Br_cordn1,len_tht,len_phi))';

Btht_cordn=(reshape(Btht_cordn1,len_tht,len_phi))';

Bphi_cordn=(reshape(Bphi_cordn1,len_tht,len_phi))';

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

1
3