Отображение дивергенции с потоковыми трубами

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

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

По умолчанию 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