流管图(`streamtube`)
流管图(streamtube)
05_场与矢量 5 张 MATLAB R2023b 100 mm 宽 @ 300 dpi
这个方法适合什么
流线加粗细表示场强,立体感强于单纯流线。适合:三维流场、油流通道、通风组织,需要强调流速差异时首选。
电气场景
1 棒板间隙电场流管

2 变压器油流流管

3 变电站风场流管

4 开关柜气流流管

5 电缆隧道烟气流管

代码
脚本 p5_field_vector.m 中对应 streamtube 的一段,SEL 用于选择只跑某几个方法。
if any(SEL==8)
% ---- 8.1 棒板间隙电场流管 ----
try
[X,Y,Z,U,V,W] = gen_rod_E(41,31,25);
th = linspace(0,2*pi,12); th = th(1:end-1);
sx = 1.50 + 0.30*cos(th); sy = 1.50 + 0.30*sin(th); sz = 2.00*ones(size(th));
verts = stream3(X,Y,Z,U,V,W,sx,sy,sz,[0.008 20000]);
wid = tube_widths(X,Y,Z,U,V,W,sx,sy,sz,0.016,0.052);
f = ml_fig(PP,100,90);
ax = ax3(f,false);
axes(ax); hold(ax,'on');
for k = 1:numel(verts)
hh = streamtube(verts(k), wid(k));
set(hh,'FaceColor',C(1,:),'EdgeColor','none');
end
camlight('headlight'); lighting(ax,'gouraud');
xlabel(ml_tx('横向距离 <i>x</i> / m'));
ylabel(ml_tx('纵向距离 <i>y</i> / m'));
zlabel(ml_tx('气隙高度 <i>z</i> / m'));
xlim(ax,[0 3]); ylim(ax,[0 3]); zlim(ax,[0 2.4]);
save_png(f,FIGD,'棒板间隙电场流管');
catch ME
fprintf('[FAIL] 8-1 %s\n',ME.message); close all
end
% ---- 8.2 变压器油流流管 ----
try
[X,Y,Z,U,V,W] = gen_oil(29,21,17);
[sy,sz] = meshgrid([0.20 0.60 1.00],[0.15 0.45 0.65]);
sx = 0.04*ones(size(sy));
verts = stream3(X,Y,Z,U,V,W,sx,sy,sz,[0.02 20000]);
wid = tube_widths(X,Y,Z,U,V,W,sx,sy,sz,0.020,0.048);
f = ml_fig(PP,100,90);
ax = ax3(f,false);
axes(ax); hold(ax,'on');
for k = 1:numel(verts)
hh = streamtube(verts(k), wid(k));
set(hh,'FaceColor',C(4,:),'EdgeColor','none');
end
camlight('headlight'); lighting(ax,'gouraud');
xlabel(ml_tx('油道长度 <i>x</i> / m'));
ylabel(ml_tx('油道宽度 <i>y</i> / m'));
zlabel(ml_tx('油道高度 <i>z</i> / m'));
xlim(ax,[0 2]); ylim(ax,[0 1.2]); zlim(ax,[0 0.8]);
save_png(f,FIGD,'变压器油流流管');
catch ME
fprintf('[FAIL] 8-2 %s\n',ME.message); close all
end
% ---- 8.3 变电站风场流管 ----
try
[X,Y,Z,U,V,W] = gen_wind(27,21,15);
[sy,sz] = meshgrid([5 15 25],[3 9 15]);
sx = 1.0*ones(size(sy));
verts = stream3(X,Y,Z,U,V,W,sx,sy,sz,[0.30 20000]);
wid = tube_widths(X,Y,Z,U,V,W,sx,sy,sz,0.26,0.58);
f = ml_fig(PP,100,90);
ax = ax3(f,false);
axes(ax); hold(ax,'on');
for k = 1:numel(verts)
hh = streamtube(verts(k), wid(k));
set(hh,'FaceColor',C(6,:),'EdgeColor','none');
end
camlight('headlight'); lighting(ax,'gouraud');
xlabel(ml_tx('站区长度 <i>x</i> / m'));
ylabel(ml_tx('站区宽度 <i>y</i> / m'));
zlabel(ml_tx('高度 <i>z</i> / m'));
xlim(ax,[0 40]); ylim(ax,[0 30]); zlim(ax,[0 18]);
save_png(f,FIGD,'变电站风场流管');
catch ME
fprintf('[FAIL] 8-3 %s\n',ME.message); close all
end
% ---- 8.4 开关柜气流流管 ----
try
[X,Y,Z,U,V,W] = gen_cab(21,15,27);
[sy,sz] = meshgrid([0.15 0.65],[0.10 0.90 1.70]);
sx = 0.02*ones(size(sy));
verts = stream3(X,Y,Z,U,V,W,sx,sy,sz,[0.006 20000]);
wid = tube_widths(X,Y,Z,U,V,W,sx,sy,sz,0.008,0.022);
f = ml_fig(PP,100,90);
ax = ax3(f,false);
axes(ax); hold(ax,'on');
for k = 1:numel(verts)
hh = streamtube(verts(k), wid(k));
set(hh,'FaceColor',C(3,:),'EdgeColor','none');
end
camlight('headlight'); lighting(ax,'gouraud');
xlabel(ml_tx('柜宽 <i>x</i> / m'));
ylabel(ml_tx('柜深 <i>y</i> / m'));
zlabel(ml_tx('柜高 <i>z</i> / m'));
xlim(ax,[0 1.2]); ylim(ax,[0 0.8]); zlim(ax,[0 1.8]);
save_png(f,FIGD,'开关柜气流流管');
catch ME
fprintf('[FAIL] 8-4 %s\n',ME.message); close all
end
% ---- 8.5 电缆隧道烟气流管 ----
try
[X,Y,Z,U,V,W] = gen_tun(49,17,13);
[sy,sz] = meshgrid([0.30 0.90],[0.20 0.55 0.85]);
sx = 0.5*ones(size(sy));
verts = stream3(X,Y,Z,U,V,W,sx,sy,sz,[0.10 20000]);
wid = tube_widths(X,Y,Z,U,V,W,sx,sy,sz,0.018,0.044);
f = ml_fig(PP,100,90);
ax = ax3(f,false);
axes(ax); hold(ax,'on');
for k = 1:numel(verts)
hh = streamtube(verts(k), wid(k));
set(hh,'FaceColor',C(5,:),'EdgeColor','none');
end
camlight('headlight'); lighting(ax,'gouraud');
xlabel(ml_tx('隧道长度 <i>x</i> / m'));
ylabel(ml_tx('隧道宽度 <i>y</i> / m'));
zlabel(ml_tx('高度 <i>z</i> / m'));
xlim(ax,[0 12]); ylim(ax,[0 1.2]); zlim(ax,[0 1.0]);
save_png(f,FIGD,'电缆隧道烟气流管');
catch ME
fprintf('[FAIL] 8-5 %s\n',ME.message); close all
end
end

浙公网安备 33010602011771号