在MATLAB中绘制速度矢量场

时间:2017-08-27 23:38:56

标签: matlab plot

我有一个速度向量 u =(ux,uy,uz)我想在网格中分析(参见下面的代码)。我在MATLAB中使用了quiver3函数,它显示了3-D中的整个流体流动。

问题:我希望看到速度如何仅沿着二维平面变化,这样我就可以看到速度场如何在x-y平面或z-y平面上变化。我该怎么做?我想绘制与此Picture类似的内容。

% Parameters
cLx=4;
cLz=2;
a=2*pi/(cLx*pi);
b=pi/2;
g=2*pi/(cLz*pi);
N8=(2*sqrt(2)/sqrt((a*a+g*g)*(4*a*a+4*g*g+pi*pi)));



%Re309
av_val=[0.268359169835888,0.0415737669588199,0.0373076787266736,0.0207721407214892,0.0624519067613835,0.102761062088787,-0.257139476000576,0.0726058071975180,-0.0812934255737902];

% Domain of mesh
% z=0:cLz*pi/20:cLz*pi;
% x=0:cLx*pi/20:cLx*pi;
% y=-1:0.1:1;


[x,y,z]=meshgrid(0:cLx*pi/20:cLx*pi,-1:0.1:1,0:cLz*pi/20:cLz*pi );

% Velocity Equations
ux=av_val(1)*sqrt(2)*sin(pi*y/2) + av_val(2)*(4/sqrt(3))*cos(pi*y/2).*cos(pi*y/2).*cos(g*z) + av_val(6)*4*sqrt(2)/(sqrt(3*(a^2+g*g)))*(-g)*cos(a*x).*cos(pi*y/2).*cos(pi*y/2).*sin(g*z) + av_val(7)*(2*sqrt(2)/(sqrt(a*a+g*g)))*g*sin(a*x).*sin(pi*y/2).*sin(g*z) + av_val(8)*N8*pi*a*sin(a*x).*sin(pi*y/2).*sin(g*z)+ av_val(9)*sqrt(2)*sin(3*pi*y/2);
uy=av_val(3)*(2/(sqrt(4*g*g+pi*pi)))*2*g*cos(pi*y/2).*cos(g*z)+ av_val(8)*N8*2*(a*a+g*g)*cos(a*x).*cos(pi*y/2).*sin(g*z);

uz=av_val(3)*(2/(sqrt(4*g*g+pi*pi)))*pi*sin(pi*y/2).*sin(g*z) + av_val(4)*(4/sqrt(3))*cos(pi*y/2).*cos(pi*y/2).*cos(a*x) + av_val(5)*2*sin(a*x).*sin(pi*y/2) + av_val(6)*(4*sqrt(2)/(sqrt(3*(a*a+g*g))))*a*sin(a*x).*cos(pi*y/2).*cos(pi*y/2).*cos(g*z) + av_val(7)*(2*sqrt(2)/(sqrt(a*a+g*g)))*a*cos(a*x).*sin(pi*y/2).*cos(g*z)- av_val(8)*N8*pi*g*cos(a*x).*sin(pi*y/2).*cos(g*z);


quiver3(x,y,z,ux,uy,uz)

enter image description here

1 个答案:

答案 0 :(得分:0)

您需要通过保持一个维度不变来切割3D数组。例如,如果你想要z-y平面,那么选择一个常数x值。生成的数组仍然具有三个维度,单位长度沿x。使用squeeze函数获取2D数组。现在,您可以在平面中绘制该字段。

有关curl函数,请参阅Matlab的help page,它是计算涡度和切割3D数组的良好参考。

figure(2)
hold on
x_1d    = 0:cLx*pi/20:cLx*pi;
y_1d    =  -1:0.1:1;
z_1d    = 0:cLz*pi/20:cLz*pi;

slice_x = 11;

uy_yz   = squeeze( uy(slice_x,:,:) );
uz_yz   = squeeze( uz(slice_x,:,:) );

% Compute vorticity - plot as filled contour
vort_yz = curl(y_1d, z_1d, uy_yz, uz_yz);
contourf(y_1d, z_1d, vort_yz)
colorbar()

% Compute 2D-velocity magnitude
% umag_yz = sqrt(uy_yz.^2+uz_yz.^2);
% pcolor(y_1d, z_1d, umag_yz)

% Plot 2D velocity vector
quiver(y_1d, z_1d, uy_yz,uz_yz)
hold off