exponenta event banner

Отображение расхождения с трубками потока

Что могут показать потоковые трубки

Трубы потока аналогичны линиям потока, за исключением того, что трубы имеют ширину, что обеспечивает другой размер, который можно использовать для представления информации.

По умолчанию на графике MATLAB ® отображается расхождение векторного поля по ширине трубки. Можно также определить ширину для каждой вершины трубы и таким образом сопоставить другие данные с шириной.

В этом примере используются следующие методы:

  • Поточные трубки для указания направления потока и расхождения векторного поля в wind набор данных

  • Секущие плоскости, окрашенные для указания скорости ветровых течений, наложенных контурной линией для улучшения видимости

Входные данные включают координаты объема, компоненты векторного поля и начальные местоположения труб потока.

1. Загрузка данных и расчет требуемых значений

Загрузите данные и рассчитайте значения, необходимые для построения графиков. Эти значения включают в себя:

  • Расположение плоскостей среза (не более x, минимум yи значение высоты)

  • Минимум x значение для начала поточных труб

  • Скорость ветра (величина векторного поля)

    load wind
    xmin = min(x(:));
    xmax = max(x(:));
    ymin = min(y(:));
    alt = 7.356; % z value for slice and streamtube plane
    wind_speed = sqrt(u.^2 + v.^2 + w.^2);
    

2. Рисование плоскостей среза

Нарисуйте плоскости среза (slice) и установить surface для создания плавно окрашенного фрагмента. Используйте 16 цветов из hsv colormap.

hslice = slice(x,y,z,wind_speed,xmax,ymin,alt);
set(hslice,'FaceColor','interp','EdgeColor','none')
colormap hsv(16)

3. Добавление горизонталей к плоскостям среза

Добавить горизонтали (contourslice) к плоскостям среза. Отрегулируйте интервал горизонталей таким образом, чтобы линии соответствовали цветовым границам в плоскостях среза:

  • Звонить caxis для получения текущих пределов цвета.

  • Установка метода интерполяции, используемого contourslice кому linear для согласования со значением по умолчанию, используемым slice.

    color_lim = caxis;
    cont_intervals = linspace(color_lim(1),color_lim(2),17);
    hcont = contourslice(x,y,z,wind_speed,xmax,ymin,...
       alt,cont_intervals,'linear');
    set(hcont,'EdgeColor',[.4 .4 .4],'LineWidth',1)
    

4. Создание поточных труб

Использовать meshgrid для создания массивов для начальных точек для труб потока, которые начинаются как минимум x значение, диапазон от 20 до 50 дюймов y, и лежат в одной плоскости в z (соответствует одной из плоскостей среза).

Трубы потока (streamtube) рисуются в указанных местах и масштабируются в 1,25 раза больше ширины по умолчанию, чтобы подчеркнуть изменение дивергенции (ширины). Второй элемент в векторе [1.25 30] указывает количество точек по окружности трубки (по умолчанию 20). Можно увеличить это значение по мере увеличения размера трубки, чтобы сохранить гладкий вид трубки.

Установите пропорции данных (daspect) перед вызовом streamtube.

Поточные трубы являются объектами поверхности, поэтому можно управлять их внешним видом, задав свойства поверхности. В этом примере задаются свойства поверхности для получения ярко освещенной красной поверхности.

[sx,sy,sz] = meshgrid(xmin,20:3:50,alt);
daspect([1,1,1]) % set DAR before calling streamtube
htubes = streamtube(x,y,z,u,v,w,sx,sy,sz,[1.25 30]);
set(htubes,'EdgeColor','none','FaceColor','r',...
   'AmbientStrength',.5)

5. Определение вида

Определите вид и добавьте освещение (view, axis volumebounds, Projection, camlight).

view(-100,30)
axis(volumebounds(x,y,z,wind_speed))
set(gca,'Projection','perspective')
camlight left