Closed Volume - 初始化错误 - Modelica

Closed Volume - Initialization Error - Modelica

我尝试对一个由 SweptVolume 和 ClosedVolume 组成的简化案例进行建模。当活塞向下运动时,封闭体积应充满水,当活塞向上运动时,流体将流入活塞。但是我收到初始化错误。你能帮我处理这个错误吗?提前致谢!

Residual function evaluation failed at initial point for "1" From Hochdruckreiniger4_1: Jacobian evaluation failed at initial point for "1" From Hochdruckreiniger4_1: Failed to find a consistent solution in event iteration in "1", 0 at 0.0000000000000000E+000 From Hochdruckreiniger4_1: Residual function evaluation failed at initial point for "2" "#r108#" From Hochdruckreiniger4_1: Initialization failed.

model Hochdruckreiniger4
    //Declaration(s)
    Real V_max = 0.000003;
    Real V_tod = 0.000002;
    Real N = 2800;
    replaceable package medium = Modelica.Media.Water.StandardWater( );
    //Component(s)
    inner Modelica.Fluid.System system;
    Modelica.Fluid.Vessels.ClosedVolume volume (nPorts = 1, redeclare package Medium = medium, V = 0.05);
    Modelica.Fluid.Machines.SweptVolume Swept1 (
        pistonCrossArea = 0.0001131,
        clearance = 0.00000250621,
        redeclare package Medium = Modelica.Media.Water.StandardWater,
        nPorts = 1,
        use_portsData = false,
        massDynamics = Modelica.Fluid.Types.Dynamics.DynamicFreeInitial,
        energyDynamics = Modelica.Fluid.Types.Dynamics.DynamicFreeInitial,
        p_start = 1e5,
        use_T_start = true,
        T_start = 293.15,
        V(start = 0.005),
        m(start = 0.005));
    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);


equation
    //Connection(s)
    connect(Sine1.y, Posit1.s_ref);
    connect(Posit1.flange, Swept1.flange);
    connect(Swept1.ports, volume.ports);
end  Hochdruckreiniger4;

更改体积参数(向端口添加直径)后,模型似乎可以正常工作。这导致 volume 模型的以下代码:

Modelica.Fluid.Vessels.ClosedVolume volume(nPorts = 1, redeclare package Medium = medium, V = 0.05, portsData={Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=0.001)}); 

模拟仍然给出一些关于压力的警告(可能是因为 1mm 的估计直径没有多大意义),但体积中的压力看起来并没有完全消失。

一些背景知识(虽然我对 Fluid 包不是很有经验): 对于 use_portsData = true,需要指定直径,因为它没有任何起始值或默认值。在 Dymola 中,模拟甚至不会在没有值的情况下启动。实际上,如果没有设置值,至少应该有一个警告。假设将 0 作为直径值,模型制动是合理的,因为不会有任何流量进入体积。

作为替代方案,可以将 use_portsData 设置为 false。我认为这将导致卷连接器没有阻力。不直接连接体积型模型仍然是一个好习惯,但在两者之间总是有一个电阻型模型。其实体积型和阻力型最好交替排列。