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