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站视频,有问题看官方文档。


欢迎评论交流。

posted on 2021-12-14 16:20  MultiSimOpt  阅读(2903)  评论(0编辑  收藏  举报

导航