Paraview Vs.Tecplot: LBM三維多孔介質可視化


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);

直接用官網的這個程序寫就行

https://www.mathworks.com/matlabcentral/fileexchange/47814-vtkwrite-exports-various-2d-3d-data-to-paraview-in-vtk-file-format?s_tid=srchtitle_vtkwrite_1

用法里面有示例,選擇結構化的點,標量格式。如果是速度,矢量格式。例如寫入溫度場文件

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站視頻,有問題看官方文檔。


歡迎評論交流。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM