管径对模拟速度的影响——Modelica

管径对模拟速度的影响——Modelica,modelica,Modelica,我使用Ansys TwinBuilder R2.4进行Modelica模拟。我在Modelica中对液压系统进行了建模,该系统可以在特定条件下进行模拟,例如,当位于“AuClass”边界条件之前的管道直径为5 mm时,当我将其更改为8 mm时,模拟不会继续进行。这大大减慢了模拟的进度。仅当管道直径改变时,模拟速度差异的原因是什么?我添加了模块图和模型的代码 model HD_3Kolben_bsp //Declaration(s) Real V_max = 0.000003;

我使用Ansys TwinBuilder R2.4进行Modelica模拟。我在Modelica中对液压系统进行了建模,该系统可以在特定条件下进行模拟,例如,当位于“AuClass”边界条件之前的管道直径为5 mm时,当我将其更改为8 mm时,模拟不会继续进行。这大大减慢了模拟的进度。仅当管道直径改变时,模拟速度差异的原因是什么?我添加了模块图和模型的代码

model HD_3Kolben_bsp
    //Declaration(s)
    Real V_max = 0.000003;
    Real V_tod = 0.000002;
    Real N = 2800;
    replaceable package medium = Modelica.Media.Water.StandardWater( );
    Real opening_HP;
    Real opening_LP;
    constant Modelica.SIunits.AbsolutePressure patm = 1e5;
    Real opening_HP_2;
    Real opening_LP_2;
    Real opening_HP_3;
    Real opening_LP_3;
    constant Modelica.SIunits.Frequency freq = 46;
    //Component(s)
    Modelica.Fluid.Machines.SweptVolume Kolben1 (
        pistonCrossArea = 0.0001131,
        clearance = 0.00000250621,
        redeclare package Medium = Modelica.Media.Water.StandardWater,
        nPorts = 1,
        use_portsData = false,
        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 = freq,
        offset = 0.005567,
        phase = +Modelica.Constants.pi/2.01,
        startTime = 0);
    Modelica.Fluid.Vessels.ClosedVolume ClosedVolume1 (
        V = 0.000005/2,
        nPorts = 3,
        redeclare package Medium = medium,
        use_portsData = false);
    Modelica.Fluid.Pipes.DynamicPipe pipe_Swept_CV_1 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Pipes.DynamicPipe pipe_CV_HD_1 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Sources.FixedBoundary Auslass (p = patm, redeclare package Medium = medium, nPorts = 1);
    Modelica.Fluid.Valves.ValveLinear HDVentile1 (
        dp_nominal = 95,
        m_flow_nominal = 0.05867441,
        redeclare package Medium = medium,
        opening = opening_HP);
    Modelica.Fluid.Pipes.DynamicPipe pipe_ND_CV_1 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Valves.ValveLinear NDVentile1 (
        dp_nominal = 94.35,
        m_flow_nominal = 0.05867441,
        redeclare package Medium = medium,
        opening = opening_LP);
    Modelica.Fluid.Pipes.DynamicPipe pipe_Ein_ND (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Sources.FixedBoundary Einlass (p = 4e5, redeclare package Medium = Modelica.Media.Water.StandardWater, nPorts = 1);
    Modelica.Mechanics.Translational.Sensors.PositionSensor Position;
    Modelica.Mechanics.Translational.Sensors.PositionSensor Position2;
    Modelica.Fluid.Valves.ValveLinear NDVentile2 (
        dp_nominal = 94.35,
        m_flow_nominal = 0.05867441,
        redeclare package Medium = medium,
        opening = opening_LP_2);
    Modelica.Fluid.Pipes.DynamicPipe pipe_ND_CV_2 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Valves.ValveLinear HDVentile2 (
        dp_nominal = 95,
        m_flow_nominal = 0.05867441,
        redeclare package Medium = medium,
        opening = opening_HP_2);
    Modelica.Fluid.Pipes.DynamicPipe pipe_CV_HD_2 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Pipes.DynamicPipe pipe_Swept_CV_2 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Vessels.ClosedVolume ClosedVolume2 (
        V = 0.000005/2,
        nPorts = 3,
        redeclare package Medium = medium,
        use_portsData = false);
    Modelica.Blocks.Sources.Sine Sine2 (
        amplitude = 0.005567,
        freqHz = freq,
        offset = 0.005567,
        phase = +Modelica.Constants.pi/2.01,
        startTime = 7/(3*freq));
    Modelica.Mechanics.Translational.Sources.Position Posit2 (exact = true, useSupport = false);
    Modelica.Fluid.Machines.SweptVolume Kolben2 (
        pistonCrossArea = 0.0001131,
        clearance = 0.00000250621,
        redeclare package Medium = Modelica.Media.Water.StandardWater,
        nPorts = 1,
        use_portsData = false,
        use_T_start = true,
        T_start = 293.15,
        V(start = 0.005),
        m(start = 0.005));
    Modelica.Mechanics.Translational.Sensors.PositionSensor Position3;
    Modelica.Fluid.Valves.ValveLinear NDVentile3 (
        dp_nominal = 94.35,
        m_flow_nominal = 0.05867441,
        redeclare package Medium = medium,
        opening = opening_LP_3);
    Modelica.Fluid.Pipes.DynamicPipe pipe_ND_CV_3 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Valves.ValveLinear HDVentile3 (
        dp_nominal = 95,
        m_flow_nominal = 0.05867441,
        redeclare package Medium = medium,
        opening = opening_HP_3);
    Modelica.Fluid.Pipes.DynamicPipe pipe_CV_HD_3 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Pipes.DynamicPipe pipe_Swept_CV_3 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Vessels.ClosedVolume ClosedVolume3 (
        V = 0.000005/2,
        nPorts = 3,
        redeclare package Medium = medium,
        use_portsData = false);
    Modelica.Blocks.Sources.Sine Sine3 (
        amplitude = 0.005567,
        freqHz = freq,
        offset = 0.005567,
        phase = +Modelica.Constants.pi/2.01,
        startTime = 14/(3*freq));
    Modelica.Mechanics.Translational.Sources.Position Posit3 (exact = true, useSupport = false);
    Modelica.Fluid.Machines.SweptVolume Kolben3 (
        pistonCrossArea = 0.0001131,
        clearance = 0.00000250621,
        redeclare package Medium = Modelica.Media.Water.StandardWater,
        nPorts = 1,
        use_portsData = false,
        use_T_start = true,
        T_start = 293.15,
        V(start = 0.005),
        m(start = 0.005));
    Modelica.Fluid.Sources.FixedBoundary boundary1 (p = 4e5, redeclare package Medium = Modelica.Media.Water.StandardWater, nPorts = 1);
    Modelica.Fluid.Pipes.DynamicPipe pipe1 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Sources.FixedBoundary boundary2 (p = 4e5, redeclare package Medium = Modelica.Media.Water.StandardWater, nPorts = 1);
    Modelica.Fluid.Pipes.DynamicPipe pipe2 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    Modelica.Fluid.Pipes.DynamicPipe pipe3 (
        length = 0.005,
        diameter = 0.0055,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Pipes.DynamicPipe pipe4 (
        length = 0.005,
        diameter = 0.0055,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Pipes.DynamicPipe pipe5 (
        length = 0.005,
        diameter = 0.0055,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Pipes.DynamicPipe pipe6 (
        length = 5,
        diameter = 0.005,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        modelStructure = Modelica.Fluid.Types.ModelStructure.a_vb);
    Modelica.Fluid.Vessels.ClosedVolume volume2 (
        V = 3.13e-6,
        nPorts = 4,
        redeclare package Medium = medium,
        use_portsData = false);
    Modelica.Fluid.Fittings.SimpleGenericOrifice orifice (diameter = 0.005, zeta = 5, redeclare package Medium = medium);
    Modelica.Fluid.Pipes.DynamicPipe pipe7 (
        length = 0.005,
        diameter = 0.005,
        redeclare package Medium = medium,
        roughness = 2.5E-5);


equation
    if der(Position.s)>=0 then 
           opening_LP=1;  
           opening_HP=0; 
     else 
           opening_LP=0;
           opening_HP=1;
     end if; 
    if der(Position2.s)>=0 then 
           opening_LP_2=1;  
           opening_HP_2=0; 
     else 
           opening_LP_2=0;
           opening_HP_2=1;
     end if;
     if der(Position3.s)>=0 then 
           opening_LP_3=1;  
           opening_HP_3=0; 
     else 
           opening_LP_3=0;
           opening_HP_3=1;
     end if;
    //Connection(s)
    connect(Posit1.flange, Kolben1.flange);
    connect(Sine1.y, Posit1.s_ref);
    connect(pipe_Swept_CV_1.port_a, Kolben1.ports[1]);
    connect(pipe_CV_HD_1.port_b, HDVentile1.port_a);
    connect(NDVentile1.port_b, pipe_ND_CV_1.port_a);
    connect(Einlass.ports[1], pipe_Ein_ND.port_a);
    connect(Posit1.flange, Position.flange);
    connect(Position2.flange, Posit2.flange);
    connect(NDVentile2.port_b, pipe_ND_CV_2.port_a);
    connect(HDVentile2.port_a, pipe_CV_HD_2.port_b);
    connect(pipe_Swept_CV_2.port_a, Kolben2.ports[1]);
    connect(Sine2.y, Posit2.s_ref);
    connect(Posit2.flange, Kolben2.flange);
    connect(Position3.flange, Posit3.flange);
    connect(NDVentile3.port_b, pipe_ND_CV_3.port_a);
    connect(HDVentile3.port_a, pipe_CV_HD_3.port_b);
    connect(pipe_Swept_CV_3.port_a, Kolben3.ports[1]);
    connect(Sine3.y, Posit3.s_ref);
    connect(Posit3.flange, Kolben3.flange);
    connect(boundary1.ports[1], pipe1.port_a);
    connect(boundary2.ports[1], pipe2.port_a);
    connect(pipe_Ein_ND.port_b, NDVentile1.port_a);
    connect(pipe1.port_b, NDVentile2.port_a);
    connect(pipe2.port_b, NDVentile3.port_a);
    connect(HDVentile1.port_b, pipe3.port_a);
    connect(HDVentile2.port_b, pipe4.port_a);
    connect(HDVentile3.port_b, pipe5.port_a);
    connect(pipe_Swept_CV_1.port_b, ClosedVolume1.ports[1]);
    connect(pipe_ND_CV_1.port_b, ClosedVolume1.ports[2]);
    connect(pipe_CV_HD_1.port_a, ClosedVolume1.ports[3]);
    connect(pipe_Swept_CV_2.port_b, ClosedVolume2.ports[1]);
    connect(pipe_ND_CV_2.port_b, ClosedVolume2.ports[2]);
    connect(pipe_CV_HD_2.port_a, ClosedVolume2.ports[3]);
    connect(pipe_Swept_CV_3.port_b, ClosedVolume3.ports[1]);
    connect(pipe_ND_CV_3.port_b, ClosedVolume3.ports[2]);
    connect(pipe_CV_HD_3.port_a, ClosedVolume3.ports[3]);
    connect(pipe3.port_b, volume2.ports[1]);
    connect(pipe4.port_b, volume2.ports[2]);
    connect(pipe5.port_b, volume2.ports[3]);
    connect(volume2.ports[4], pipe6.port_a);
    connect(orifice.port_a, pipe6.port_b);
    connect(orifice.port_b, pipe7.port_a);
    connect(pipe7.port_b, Auslass.ports[1]);
end  HD_3Kolben_bsp;


致以最诚挚的问候

这可以是很多事情。从截图上看,只能给出非常一般的建议。因为它“只是”一个参数,所以系统的结构不应该改变。因此,它可能与系统的动力学有关。我将首先查看解算器日志,从计算的步数或步长开始。若你们经历了一个数量级的减速,那个么这是一个很好的起点

另一个问题可能是聊天,这可以通过了解所发生事件的数量来判断。这些也应该在解算器日志中可见

一些有帮助的补充信息:

  • 您正在使用哪个Modelica工具
  • 模型本身(使用该模型可以生成以下所有内容)
  • 解算器日志(参数更改前后)
  • 转换日志,包括系统属性,如方程系统的大小(参数更改前后)

我担心没有任何额外的信息,您将无法得到完全有用的建议…

这可能有很多方面。从截图上看,只能给出非常一般的建议。因为它“只是”一个参数,所以系统的结构不应该改变。因此,它可能与系统的动力学有关。我将首先查看解算器日志,从计算的步数或步长开始。若你们经历了一个数量级的减速,那个么这是一个很好的起点

另一个问题可能是聊天,这可以通过了解所发生事件的数量来判断。这些也应该在解算器日志中可见

一些有帮助的补充信息:

  • 您正在使用哪个Modelica工具
  • 模型本身(使用该模型可以生成以下所有内容)
  • 解算器日志(参数更改前后)
  • 转换日志,包括系统属性,如方程系统的大小(参数更改前后)

我担心没有任何附加信息,您将无法获得完全有用的建议…

在我看来,您使用了默认的流量模型来计算压降。该模型取决于管道直径(湍流/层流流型)


要获得更详细的答案,我需要我的同事在上面的答案中要求的信息。

在我看来,您使用了默认的流量模型来计算压降。该模型取决于管道直径(湍流/层流流型)


要获得更详细的回答,我需要我的同事在上面的回答中要求的信息。

您在管道中使用的是哪种压力损失模型?我使用的是modelStructure“modelStructure.av_vb”,nNodes是2。哪种模型用于计算管道模型中的压降?它是Modelica.Fluid中的默认值吗?是的,它是默认值。我没有改变动态管道模型中压力损失计算的模型。您在管道中使用的是哪种压力损失模型?我使用的是modelStructure“modelStructure.av_vb”,nNodes为2。哪种模型用于计算管道模型中的压降?它是Modelica.Fluid中的默认值吗?是的,它是默认值。我没有改变动态管道模型中的压力损失计算模型。我添加了与第一点和第二点相关的信息。我无法生成解算器日志。我无法通过hyperlink添加系统属性。如果pipe7.diameter=0.005(因此,如果我理解正确,该设置应该可以工作),在Dymola 2021中进行模拟后,模拟会直接失败。在更新的版本中-转换为MSL 4.0.0后,它抱怨:
IF97介质功能tsat调用时压力太低
p=-9384.63 Pa 611.657
,因此这似乎是介质工作点的问题。谢谢,实际上,当管道7.diameter=0.005时,我在大约180 ms时收到一个错误。但我并没有立即出现错误。这似乎很奇怪,因为我在任何组件上都没有得到如此奇怪的压力值。当我在TwinBuilder R.2.4中模拟模型时,我还能看到错误的原因吗?如何将错误消息转换为MSL 4.0.0?我添加了与第一点和第二点相关的信息。我无法生成解算器日志。我无法通过hyperlink添加系统属性。如果pipe7.diameter=0.005(因此,如果我理解正确,该设置应该可以工作),在Dymola 2021中进行模拟后,模拟会直接失败。在更新的版本中-转换为MSL 4.0.0后,它抱怨:
IF97介质功能tsat调用时压力太低
p=-9384.63 Pa 611.657
,因此这似乎是介质工作点的问题。谢谢,实际上,当管道7.diameter=0.005时,我在大约180 ms时收到一个错误。但我并没有立即出现错误。这似乎很奇怪,因为我在任何组件上都没有得到如此奇怪的压力值。当我在TwinBuilder R.2.4中模拟模型时,我还能看到错误的原因吗?如何将错误消息转换为MSL 4.0.0?