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。我认为这将导致卷连接器没有阻力。不直接连接体积型模型仍然是一个好习惯,但在两者之间总是有一个电阻型模型。其实体积型和阻力型最好交替排列。
我尝试对一个由 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。我认为这将导致卷连接器没有阻力。不直接连接体积型模型仍然是一个好习惯,但在两者之间总是有一个电阻型模型。其实体积型和阻力型最好交替排列。