Ошибка: размеры не совпадают в connection — Sweptvolume и ClosedVolume -Modelica

#modelica #openmodelica

#моделика #openmodelica ( открытая модель )

Вопрос:

Я пробую модель, в которой, когда давление внутри ClosedVolume превышает определенный уровень давления, затем HDVentile открывается, и жидкость поступает в boundary1 компонент. Я определил nports = 1 in sweptvolume и nPorts = 2 in ClosedVolume . В этом случае он выдает сообщение об ошибке со словами

Размеры не совпадают в соединении, размер ‘ClosedVolume.ports’ равен [2], а размер ‘Swept1.ports’ равен

Если я установлю nports=2 в sweptvolume и nPorts =2 в ClosedVolume , то он выдает сообщение об ошибке::

Ошибка утверждения: каждый порт [i] тома может быть подключен не более чем к одному компоненту. Если присутствуют два или более соединений, с этими соединениями происходит идеальное смешивание, что обычно не входит в намерения разработчика моделей. Увеличьте nPorts, чтобы добавить дополнительный порт

Знаете ли вы, как справиться с этой ошибкой? Заранее спасибо!

 model modelmitclosedvolume
    //Declaration(s)
    Real V_max = 0.000003;
    Real V_tod = 0.000002;
    Real N = 2800;
    replaceable package medium = Modelica.Media.Water.StandardWater( );
    //Component(s)
    Modelica.Fluid.Machines.SweptVolume Swept1 (
        pistonCrossArea = 0.0001131,
        clearance = 0.000000250621,
        redeclare package Medium = Modelica.Media.Water.StandardWater,
        nPorts = 2,
        use_portsData = false,
        p_start = 1e5,
        use_T_start = true,
        T_start = 293.15,
        V(start = 0.005),
        m(start = 0.005));
    inner Modelica.Fluid.System system (p_ambient = 101325);
    Modelica.Mechanics.Translational.Sources.Position Posit1 (exact = true, useSupport = false);
    Modelica.Blocks.Sources.Sine Sine1 (
        amplitude = 0.005567,
        freqHz = 46.66,
        offset = 0.005567,
        phase = -Modelica.Constants.pi/4);
    Modelica.Fluid.Pipes.DynamicPipe pipe3 (
        length = 0.5,
        diameter = 0.03,
        redeclare package Medium = Modelica.Media.Water.StandardWater,
        momentumDynamics = system.momentumDynamics,
        massDynamics = Modelica.Fluid.Types.Dynamics.DynamicFreeInitial,
        energyDynamics = system.energyDynamics,
        allowFlowReversal = system.allowFlowReversal,
        modelStructure = Modelica.Fluid.Types.ModelStructure.a_vb);
    Modelica.Fluid.Valves.ValveLinear HDVentile (dp_nominal = 95, m_flow_nominal = 0.05867441, redeclare package Medium = medium);
    Modelica.Fluid.Pipes.DynamicPipe pipe4 (
        length = 0.5,
        diameter = 0.03,
        redeclare package Medium = Modelica.Media.Water.StandardWater,
        momentumDynamics = system.momentumDynamics,
        massDynamics = Modelica.Fluid.Types.Dynamics.DynamicFreeInitial,
        energyDynamics = system.energyDynamics,
        allowFlowReversal = system.allowFlowReversal,
        modelStructure = Modelica.Fluid.Types.ModelStructure.a_vb);
    Modelica.Fluid.Sources.FixedBoundary boundary1 (p = 500e5, redeclare package Medium = Modelica.Media.Water.StandardWater, nPorts = 1);
    Modelica.Fluid.Vessels.ClosedVolume ClosedVolume (
        V = 0.005/6,
        nPorts = 2,
        portsData = {Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.001),Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.001)},
        redeclare package Medium = medium);


equation
    //Connection(s)
    connect(Posit1.flange, Swept1.flange);
    connect(Sine1.y, Posit1.s_ref);
    connect(pipe3.port_b, HDVentile.port_a);
    connect(HDVentile.port_b, pipe4.port_a);
    connect(pipe4.port_b, boundary1.ports[1]);
    connect(ClosedVolume.ports[1], pipe3.port_a);
    connect(ClosedVolume.ports, Swept1.ports);
end  modelmitclosedvolume;
 

введите описание изображения здесь

Ответ №1:

Я думаю, что последнее соединение должно быть

     connect(ClosedVolume.ports[2], Swept1.ports[1]);
 

и для Swept1 этого должно быть nPorts = 1 .

Если затем добавить ввод в HDVentile, например, с помощью

     HDVentile.opening = 0;
 

система должна работать.

Фон: nports соответствует количеству подключений к компоненту. Тогда вы обычно подключаете только одну строку к каждому порту. Поэтому вам нужно два для ClosedVolume и один для Swept1 .