В этом примере показано, как можно смоделировать сегментированный трубопровод с помощью массива компонентов. Эта сегментированная модель трубопровода является составным компонентом, который состоит из N идентичные сегменты, соединенные последовательно. Отдельные сегменты трубопровода представлены блоками Pipe (IL) из библиотеки Foundation. N является параметром, который может изменить пользователь блока.
component SegmentedPipeline
parameters
N = 10; % Number of segments
segm_length = { 5, 'm' }; % Length of each segment
end
% Ports at the two ends of the pipeline
nodes
A = foundation.isothermal_liquid.isothermal_liquid; % A:left
B = foundation.isothermal_liquid.isothermal_liquid; % B:right
end
% Declare array of N components
for i=1:N
components (ExternalAccess=none)
pipe(i) = foundation.isothermal_liquid.elements.pipe(length = segm_length);
end
end
% Connect all segments in series
for i=1:(N-1)
connections
connect(pipe(i).B, pipe(i+1).A);
end
end
% Connect two ends of pipeline to first and last segment, respectively
connections
connect(A, pipe(1).A);
connect(B, pipe(N).B);
end
end
В этом примере, ради простоты, SegmentedPipeline компонент имеет только два изменяемых параметра: N (Number of segments) и segm_length (<reservedrangesplaceholder2>). Однако можно сделать другие параметры базового Pipe (IL) блока доступными из диалогового окна составного компонента блока верхнего уровня, как описано в разделе Параметризация составных Компонентах. Параметрический N, который определяет размер массива и будет использоваться в качестве верхнего предела для for Цикл итератора, объявляется как бесчисленное целое число.
Использование for цикл, чтобы объявить массив N Представитель компонентов:
for i=1:N
components (ExternalAccess=none)
pipe(i) = foundation.isothermal_liquid.elements.pipe(length = segm_length);
end
end
В этом примере все сегменты трубопровода имеют одинаковую длину. Для примера компонента массива представителей имеющего различные значения параметров, см. Пример примера - Блок батарей с отказом с использованием массивов.
Использование другого for цикл, чтобы соединить все сегменты последовательно, путем соединения узла B каждого сегмента трубопровода (кроме последнего) к узлу A следующего сегмента:
for i=1:(N-1)
connections
connect(pipe(i).B, pipe(i+1).A);
end
end
Наконец, соедините внутреннюю цепь сегментов с двумя концами трубопровода путем соединения узла A составного компонента в узел A первого сегмента и соединительного узла B составного компонента в узел B последнего сегмента:
connections
connect(A, pipe(1).A);
connect(B, pipe(N).B);
end
end
Полученный блок имеет два изотермических порта жидкости, A и B, и два изменяемых параметра: Number of segments и Length of each segment.

