Paraview Vs.Tecplot: LBM三維多孔介質可視化
轉向VTK
前一期Matlab 三維二值化矩陣處理和可視化我寫了關於如何把三維多孔介質的矩陣可視化。導出tecplot文件讀取即可。
然而Tecplot處理的等值面很丑,顏色不好看,功能不夠強大,容易被你的老板diss。
因此我選擇轉向VTK格式,用Paraview作圖。具體的看B站視頻:[paraview]paraview案例(中英字幕)
這里主要說三個問題:
- Matlab的三維矩陣如何寫入vtk文件
- 以前寫的Tecplot dat文件如何轉換成VTK格式
- Paraview如何學習使用
Matlab三維矩陣寫入vtk文件
比如三維的溫度場矩陣Temp = rand(100,100,100);
直接用官網的這個程序寫就行
用法里面有示例,選擇結構化的點,標量格式。如果是速度,矢量格式。例如寫入溫度場文件
vtkwrite('temp.vtk', 'structured_points', 'temperature', temp)
Tecplot dat文件轉VTK格式
先把之前寫的dat格式,轉換為三維矩陣格式
function [temp] = plt2mat3d(filename,hasHeader)
%PLT2MAT3D 轉換plt的數據為三維矩陣
% 此處顯示詳細說明
% 注意刪除前兩行
if nargin==1
hasHeader=0;
end
% filename = 'test.dat';
fidin=fopen(filename,'r');
if hasHeader %如果有頭兩行,跳過頭兩行
for i=1:2
fgetl(fidin);
end
end
% 假設dat文件是四列數據,x y z坐標和 temp
Data=textscan(fidin,'%d%d%d%f','emptyvalue',0);
fclose(fidin);
coord = cell2mat(Data(1,1:3));
sizenode = max(coord);
indall = sub2ind(sizenode,coord(:,1),coord(:,2),coord(:,3));
temp1 = cell2mat(Data(1,4));
temp = zeros(sizenode);
temp(indall)=temp1(:);
end
然后寫入vtk即可
Paraview怎么學習使用
這個軟件功能強大,但是比Tecplot復雜。先看B站視頻,有問題看官方文檔。
歡迎評論交流。