Резервное соединение с массивом компонентов - PullRequest
1 голос
/ 14 июня 2019

Предупреждение получено претензий У меня есть «резервные соединения (из-за других соединений)». Я связываю один HeatPort с несколькими компонентами, которые расширяются за счет использования массива. Смотрите сегмент кода ниже.

Использование each не работает, или я не сделал это правильно.

Redundant connection(s) (due to other connections):
connect(topFrontExteriorConvection.solid, module3_PipeComponents[2].port_a);
connect(topFrontExteriorConvection.solid, module3_PipeComponents[3].port_a);
connect(topFrontExteriorConvection.solid, module3_PipeComponents[4].port_a);
connect(topFrontExteriorConvection.solid, module3_PipeComponents[5].port_a);
connect(topFrontExteriorConvection.solid, module3_PipeComponents[6].port_a);
in the connection set.
ecoCeramicRadiation.T =module3_PipeComponents[1].port_a.T =module3_PipeComponents[2].port_a.T =module3_PipeComponents[3].port_a.T =module3_PipeComponents[4].port_a.T =module3_PipeComponents[5].port_a.T =module3_PipeComponents[6].port_a.T =topFrontExteriorConvection.solid.T
Note that this is not an actual error, and the redundancy can be removed in several ways.

Баланс тепла между .solid и .port_a должен быть математически правильным, но я, возможно, неправильно устанавливаю баланс в Modelica. Пожалуйста, дайте мне знать, если есть способ, которым я могу создать эти соединения без их избыточности. Хотя это только предупреждение, я получаю следующую ОШИБКУ на основании этих предупреждений.

Edit 1 Я настроил вторичную модель, в которой компонент больше не массивируется, а несколько раз копируется в модель. Тепловой порт подключен к нескольким другим тепловым портам, но я все еще получаю вышеуказанное сообщение. Соединения выглядят так: Redundant Connection

Что-то не так с типом соединения?

Edit 2 Добавление фрагментов кода. Ниже приведен соответствующий код для предупреждения о избыточном соединении. В этой модели есть больше кода, но он был удален для краткости.

  parameter Integer numPipes=6 "Number of repeating pipes.";

  Buildings.HeatTransfer.Convection.Exterior topFrontExteriorConvection(
    hFixed=exteriorConvectionCoefficientFixed,
    conMod=extMode,
    azi=Azimuth,
    til=ecoCeramicTopPanelTilt,
    A=surfaceAreaTop);

  Components.Module3_PipeComponents module3_PipeComponents[numPipes](
    each segmentLength=segmentLength,
    each thicknessEco=thicknessEco,
    each pipeVolume=pipeVolume,
    each fluidFlow=fluidFlow,
    each initialFluidTemp=initialFluidTemp,
    each fluidDensity=fluidDensity,
    each pipeDiameter=pipeDiameter,
    each pipeLength=pipeLength,
    each surfaceAreaTop=segSurfaceArea);

equation
  connect(fluidInlet, module3_PipeComponents[1].flowPort_a);
  for i in 1:numPipes - 1 loop
    connect(module3_PipeComponents[i].flowPort_b, module3_PipeComponents[i+1].flowPort_a);
  end for;
  for i in 1:numPipes loop
    connect(ecoCeramicRadiation, module3_PipeComponents[i].port_a);
    connect(topFrontExteriorConvection.solid, module3_PipeComponents[i].port_a);
    connect(module3_PipeComponents[i].port_b, topInsulationConduction.port_a);
  end for;
  connect(module3_PipeComponents[numPipes].flowPort_b, fluidOutlet);

1 Ответ

3 голосов
/ 14 июня 2019

Проблема заключается в следующих строках:

for i in 1:numPipes loop
    connect(ecoCeramicRadiation,              module3_PipeComponents[i].port_a);
    connect(topFrontExteriorConvection.solid, module3_PipeComponents[i].port_a);
...
end for;

Это подразумевает numPipes * 2 соединения с использованием numPipes + 2 соединителя, что подразумевает избыточные соединения, если numPipes достаточно велика.

Один из способовизбегая это:

for i in 1:numPipes loop
    connect(ecoCeramicRadiation,              module3_PipeComponents[i].port_a);
...
end for;
connect(ecoCeramicRadiation, topFrontExteriorConvection.solid);
...