PDA

查看完整版本 : [MATLAB基础] matlab 如何在有矩形截面的三维弯槽上生成等值线云图切片


guohf
2014-07-30, 15:01
数据是用CFD计算出来的,因要在切片云图中叠加其他的计算结果,不好用TECPLOT等其他画图软件来处理。想用MATLAB编程来画,查看相关算例,都是对立体区域进行切片处理的,而我的计算区域是有矩形截面的三维(直或弯曲)弯槽,想得到下图结果:
3323
用了两种方法,但都有问题,请高手指点迷经,谢谢。

法一:直接加载三维流场(第一列是节点数,第二到4列分别是x,y,z坐标,第5列是相应的z向速度值)
3329 需先解压(压了两次)
3324

3325

3326

3327


clear;clc;
load vzvelo
x=vzvelo(:,2);y=vzvelo(:,3);z=vzvelo(:,4);u=vzvelo(:,5);
mm=[min(x) max(x) min(y) max(y) min(z) max(z)];
del=[(mm(2)-mm(1))/30,(mm(4)-mm(3))/30,(mm(6)-mm(5))/30];
[xi,yi,zi] = meshgrid(mm(1):del(1):mm(2),mm(3):del(2):mm(4),mm(5):del(3):mm(6));
ui=griddata(x,y,z,u,xi,yi,zi,'cubic'); %%这里报错“Too many input arguments.”用TriScatteredInterp也不行,应是弯管的问题。想把直角弯管分成三部分来做,但在相交部分的切片不知怎么生成?另外,对于有弯头的弯管在弯头部分又该怎样处理?
contourslice(xi,yi,zi,ui, [],0,[]); %%%这的表达好象也有问题

法二:将要画的切片数据分别保存出来,画等值线,但不知道怎么生成三维的。

3328
clear all; clc;
x0r1=['D:\fluent\ x0vzre1'];
x2r1=['D:\fluent\ x2vzre1'];
y0r1=['D:\fluent\y0vzre1'];

hold on

data_al=importdata(x0r1);
dat=data_al.data;
x0r1=dat(:,3:5);%% x0r1=dat(:,2:5);
x=x0r1(:,1); y=x0r1(:,2); w=x0r1(:,3);%%z=x0r1(:,3); w=x0r1(:,4);
mm=[min(x) max(x) min(y) max(y)] %% min(z) max(z)];
del=[(mm(2)-mm(1))/50,(mm(4)-mm(3))/50] %%,(mm(6)-mm(5))/50];
[xi,yi]=meshgrid(mm(1):del(1):mm(2),mm(3):del(2):mm(4)) %% mm(5):del(3):mm(6) %用三维网格生成时xi, yi, zi都为空矩阵,因x值不变
wi=griddata(x,y, w,xi,yi,'cubic');
[cs, h]=contourf(xi,yi, wi,200);
set(h,'Color','None'); %colorbar
clear x y w mm del xi yi wi cs h %%不能将云图画在x=0的面上

data_al2=importdata(x2r1);
dat2=data_al2.data;
x2r1=dat2(:,3:5);
x=x2r1(:,1); y=x2r1(:,2); w=x2r1(:,3);
mm=[min(x) max(x) min(y) max(y)];
del=[(mm(2)-mm(1))/50,(mm(4)-mm(3))/50];
[xi,yi]=meshgrid(mm(1):del(1):mm(2),mm(3):del(2):mm(4));
wi=griddata(x,y,w,xi,yi,'cubic');
[cs, h]=contourf(xi,yi,wi,50);
set(h,'Color','None'); %colorbar
clear x y w mm del xi yi wi cs h %%不能将云图画在x=0.0002的面上

data_al3=importdata(y0r1);
dat3=data_al3.data;
y0r1=dat3(:,[2,4:5]);
x=y0r1(:,1); y=y0r1(:,2); w=y0r1(:,3);
mm=[min(x) max(x) min(y) max(y)];
del=[(mm(2)-mm(1))/50,(mm(4)-mm(3))/50];
[xi,yi]=meshgrid(mm(1):del(1):mm(2),mm(3):del(2):mm(4));
wi=griddata(x,y,w,xi,yi,'cubic');
[cs, h]=contourf(xi,yi,wi,50);
%shading interp
set(h,'Color','None'); %colorbar %%不能将云图画在y=0的面上
hold off