exponenta event banner

Сегментированный трубопровод с использованием массива компонентов

В этом примере показано, как можно моделировать сегментированный трубопровод с помощью массива компонентов. Эта сегментированная модель трубопровода является составным компонентом, который состоит из N идентичные сегменты, соединенные последовательно. Отдельные сегменты трубы представлены блоками труб (IL) из библиотеки фундаментов. 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 (количество сегментов) и segm_length (Длина каждого сегмента). Однако можно сделать другие параметры нижележащего блока трубы (IL) доступными из диалогового окна составного блока верхнего уровня, как описано в разделе Параметризация составных компонентов. Параметр N, который определяет размер массива и будет использоваться в качестве верхнего предела для for итератор цикла объявлен как целое число без единиц измерения.

Использовать for loop для объявления массива 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, и два модифицируемых параметра: Количество сегментов и Длина каждого сегмента.

Связанные темы