【问题标题】:Plotting the velocity vector field in MATLAB在 MATLAB 中绘制速度矢量场
【发布时间】:2017-08-27 23:38:56
【问题描述】:

我有一个速度向量 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

【问题讨论】:

  • 您可以制作 2D 箭袋图,或者制作 3D 箭袋图并使用 view(2) 从上方查看?

标签: matlab plot


【解决方案1】:

您需要通过保持一维不变来对 3D 数组进行切片。例如,如果您想要 z-y 平面,则选择一个恒定的 x 值。结果数组仍然具有沿 x 的单位长度的三个维度。使用squeeze 函数获取二维数组。现在您可以在平面上绘制场。

参考 Matlab 的 help page 获取 curl 函数,它对于计算涡度和切片 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多