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;
    % filename = 'test.dat';
    fidin=fopen(filename,'r');
    if hasHeader %如果有头两行,跳过头两行
        for i=1:2 
            fgetl(fidin); 
    % 假设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(:);
    

    然后写入vtk即可

    Paraview怎么学习使用

    这个软件功能强大,但是比Tecplot复杂。先看B站视频,有问题看官方文档。

    欢迎评论交流。