Моделирование гидравлической системы

#modelica

#modelica

Вопрос:

Я пытаюсь смоделировать гидравлическую машину в Ansys Twinbuilder 2021 R1 с помощью языка Modelica.

Вся система представлена на следующем изображении;

Сначала я попытался разделить всю систему на подсистемы. И я смоделировал подсистемы pumpraum-1, pumpraum-2, pumpraum-3, компоненты на выходе. И подсистемы работают индивидуально без каких-либо проблем. Затем я попытался скомпилировать подсистемы во всю систему. Тогда моделирование не проходит гладко. Он останавливается в любой момент времени и не продолжается до конца моделирования. Что может быть причиной этого? Как я могу понять, в чем проблема во всей моей системе?

Код моей модели выглядит следующим образом;

 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_CV_HD_1 (
        length = 0.005,
        diameter = 0.002,
        redeclare package Medium = medium,
        roughness = 2.5E-5);
    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.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.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.Vessels.ClosedVolume volume2 (
        V = 3.13e-6,
        nPorts = 4,
        redeclare package Medium = medium,
        use_portsData = false);
    Modelica.Fluid.Pipes.StaticPipe pipe (length = 0.001, diameter = 0.002, redeclare package Medium = medium);
    Modelica.Fluid.Pipes.StaticPipe pipe6 (length = 0.001, diameter = 0.002, redeclare package Medium = medium);
    Modelica.Fluid.Pipes.StaticPipe pipe7 (length = 0.001, diameter = 0.002, redeclare package Medium = medium);
    Modelica.Fluid.Pipes.DynamicPipe pipe10_steig (
        length = 0.003,
        diameter = 0.002721,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        nNodes = 1,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Pipes.DynamicPipe pipe9_steig (
        length = 0.008,
        diameter = 0.00598,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        nNodes = 1,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Pipes.DynamicPipe pipe8 (
        length = 5,
        diameter = 0.0057,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        nNodes = 1,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Fittings.SimpleGenericOrifice orifice4 (diameter = 0.00452, zeta = 3.5, redeclare package Medium = medium);
    Modelica.Fluid.Pipes.DynamicPipe Duese_2 (
        length = 0.0082,
        diameter = 0.0042,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        nNodes = 1,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Pipes.DynamicPipe Duese_3 (
        length = 0.018,
        diameter = 0.00452,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        nNodes = 1,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Pipes.DynamicPipe Duese_4 (
        length = 0.0002,
        diameter = 0.0005,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        nNodes = 1,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Pipes.DynamicPipe Duese_1 (
        length = 0.393,
        diameter = 0.0074,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        nNodes = 1,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Pipes.DynamicPipe pistole_3 (
        length = 0.02,
        diameter = 0.004,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        nNodes = 1,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Fittings.SimpleGenericOrifice orifice2 (diameter = 0.005, zeta = 0.98, redeclare package Medium = medium);
    Modelica.Fluid.Pipes.DynamicPipe pistole_1 (
        length = 0.041,
        diameter = 0.0057,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        nNodes = 1,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Fittings.SimpleGenericOrifice orifice1 (diameter = 0.005, zeta = 1, redeclare package Medium = medium);
    Modelica.Fluid.Pipes.DynamicPipe pistole_2 (
        length = 0.269,
        diameter = 0.0069,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        nNodes = 1,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b);
    Modelica.Fluid.Pipes.DynamicPipe pipe9 (
        length = 0.24,
        diameter = 0.005,
        redeclare package Medium = medium,
        roughness = 2.5E-5,
        modelStructure = Modelica.Fluid.Types.ModelStructure.av_b,
        nNodes = 1);
    Modelica.Fluid.Sources.FixedBoundary Auslass (p = patm, redeclare package Medium = medium, nPorts = 1);


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_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(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(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_ND_CV_1.port_b, ClosedVolume1.ports[2]);
    connect(pipe_CV_HD_1.port_a, ClosedVolume1.ports[3]);
    connect(pipe_ND_CV_2.port_b, ClosedVolume2.ports[2]);
    connect(pipe_CV_HD_2.port_a, ClosedVolume2.ports[3]);
    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(Kolben1.ports[1], pipe.port_a);
    connect(pipe.port_b, ClosedVolume1.ports[1]);
    connect(Kolben2.ports[1], pipe6.port_a);
    connect(pipe6.port_b, ClosedVolume2.ports[1]);
    connect(Kolben3.ports[1], pipe7.port_a);
    connect(pipe7.port_b, ClosedVolume3.ports[1]);
    connect(pipe10_steig.port_a, Duese_3.port_b);
    connect(pipe9_steig.port_b, Duese_2.port_a);
    connect(pipe9_steig.port_a, Duese_1.port_b);
    connect(pipe10_steig.port_b, orifice4.port_a);
    connect(pistole_3.port_a, pistole_2.port_b);
    connect(pistole_1.port_b, pistole_2.port_a);
    connect(pipe8.port_b, pistole_1.port_a);
    connect(pipe8.port_a, orifice2.port_b);
    connect(orifice4.port_b, Duese_4.port_a);
    connect(Duese_2.port_b, Duese_3.port_a);
    connect(Duese_4.port_b, Auslass.ports[1]);
    connect(Duese_1.port_a, orifice1.port_b);
    connect(pistole_3.port_b, orifice1.port_a);
    connect(orifice2.port_a, pipe9.port_b);
    connect(pipe9.port_a, volume2.ports[4]);
end  HD_3Kolben_bsp;
//----------------------------------------------------------------------------
 

Ответ №1:

Используя Dymola и после уменьшения относительного допуска решателя, я получаю это:

Модель с дифференцированной ошибкой if-then-else не была непрерывной: (если время <0,050724637681159424, тогда 0 еще Sine2.амплитуда sin (289,02652413026095 (время-0,050724637681159424) Sine2.фаза)) Значение подскочило с 0 до 0,00556683.

Эту ошибку можно устранить с помощью настройки Posit2.exact = false . Но затем возникает последующая ошибка, вероятно, из-за быстрого изменения или несогласованности всей системы. Об этом трудно судить, не зная модель в деталях. Так что я оставлю это решать кому-нибудь другому.

Кроме того, есть некоторые проблемы с инициализацией, но они кажутся довольно незначительными:

Средняя функция IF97 вызывается при слишком низком давлении p = -35428,5 Па <= 611,657 Па (давление в тройной точке)
Условие сбоя: p> 611,657

Что касается второго комментария:

Проблема инициализации должна быть решена путем установки (важных) переменных из следующего списка. Список фактически содержит переменные, для которых среда моделирования должна угадывать начальные значения, поскольку они не указаны.

 Assuming fixed start value for the continuous states:
ClosedVolume1.medium.h(start = ClosedVolume1.h_start)
ClosedVolume1.medium.p(start = 101325.0)
ClosedVolume2.medium.h(start = ClosedVolume2.h_start)
ClosedVolume2.medium.p(start = 101325.0)
ClosedVolume3.medium.h(start = ClosedVolume3.h_start)
ClosedVolume3.medium.p(start = 101325.0)
Duese_1.mediums[1].h(start = Duese_1.h_start)
Duese_1.mediums[1].p(start = Duese_1.ps_start[1])
Duese_2.mediums[1].h(start = Duese_2.h_start)
Duese_2.mediums[1].p(start = Duese_2.ps_start[1])
Duese_3.mediums[1].h(start = Duese_3.h_start)
Duese_3.mediums[1].p(start = Duese_3.ps_start[1])
Duese_4.mediums[1].h(start = Duese_4.h_start)
Duese_4.mediums[1].p(start = Duese_4.ps_start[1])
Kolben1.medium.h(start = Kolben1.h_start)
Kolben1.medium.p(start = 101325.0)
Kolben2.medium.h(start = Kolben2.h_start)
Kolben2.medium.p(start = 101325.0)
Kolben3.medium.h(start = Kolben3.h_start)
Kolben3.medium.p(start = 101325.0)
pipe1.mediums[1].h(start = pipe1.h_start)
pipe1.mediums[2].h(start = pipe1.h_start)
pipe1.mediums[2].p(start = pipe1.ps_start[2])
pipe2.mediums[1].h(start = pipe2.h_start)
pipe2.mediums[2].h(start = pipe2.h_start)
pipe2.mediums[2].p(start = pipe2.ps_start[2])
pipe3.mediums[1].h(start = pipe3.h_start)
pipe3.mediums[1].p(start = pipe3.ps_start[1])
pipe3.mediums[2].h(start = pipe3.h_start)
pipe3.mediums[2].p(start = pipe3.ps_start[2])
pipe4.mediums[1].h(start = pipe4.h_start)
pipe4.mediums[1].p(start = pipe4.ps_start[1])
pipe4.mediums[2].h(start = pipe4.h_start)
pipe4.mediums[2].p(start = pipe4.ps_start[2])
pipe5.mediums[1].h(start = pipe5.h_start)
pipe5.mediums[1].p(start = pipe5.ps_start[1])
pipe5.mediums[2].h(start = pipe5.h_start)
pipe5.mediums[2].p(start = pipe5.ps_start[2])
pipe8.mediums[1].h(start = pipe8.h_start)
pipe8.mediums[1].p(start = pipe8.ps_start[1])
pipe9.mediums[1].h(start = pipe9.h_start)
pipe9_steig.mediums[1].h(start = pipe9_steig.h_start)
pipe9_steig.mediums[1].p(start = pipe9_steig.ps_start[1])
pipe10_steig.mediums[1].h(start = pipe10_steig.h_start)
pipe10_steig.mediums[1].p(start = pipe10_steig.ps_start[1])
pipe_CV_HD_1.mediums[1].h(start = pipe_CV_HD_1.h_start)
pipe_CV_HD_1.mediums[2].h(start = pipe_CV_HD_1.h_start)
pipe_CV_HD_1.mediums[2].p(start = pipe_CV_HD_1.ps_start[2])
pipe_CV_HD_2.mediums[1].h(start = pipe_CV_HD_2.h_start)
pipe_CV_HD_2.mediums[2].h(start = pipe_CV_HD_2.h_start)
pipe_CV_HD_2.mediums[2].p(start = pipe_CV_HD_2.ps_start[2])
pipe_CV_HD_3.mediums[1].h(start = pipe_CV_HD_3.h_start)
pipe_CV_HD_3.mediums[2].h(start = pipe_CV_HD_3.h_start)
pipe_CV_HD_3.mediums[2].p(start = pipe_CV_HD_3.ps_start[2])
pipe_Ein_ND.mediums[1].h(start = pipe_Ein_ND.h_start)
pipe_Ein_ND.mediums[2].h(start = pipe_Ein_ND.h_start)
pipe_Ein_ND.mediums[2].p(start = pipe_Ein_ND.ps_start[2])
pipe_ND_CV_1.mediums[1].h(start = pipe_ND_CV_1.h_start)
pipe_ND_CV_1.mediums[1].p(start = pipe_ND_CV_1.ps_start[1])
pipe_ND_CV_1.mediums[2].h(start = pipe_ND_CV_1.h_start)
pipe_ND_CV_2.mediums[1].h(start = pipe_ND_CV_2.h_start)
pipe_ND_CV_2.mediums[1].p(start = pipe_ND_CV_2.ps_start[1])
pipe_ND_CV_2.mediums[2].h(start = pipe_ND_CV_2.h_start)
pipe_ND_CV_3.mediums[1].h(start = pipe_ND_CV_3.h_start)
pipe_ND_CV_3.mediums[1].p(start = pipe_ND_CV_3.ps_start[1])
pipe_ND_CV_3.mediums[2].h(start = pipe_ND_CV_3.h_start)
pistole_1.mediums[1].h(start = pistole_1.h_start)
pistole_1.mediums[1].p(start = pistole_1.ps_start[1])
pistole_2.mediums[1].h(start = pistole_2.h_start)
pistole_2.mediums[1].p(start = pistole_2.ps_start[1])
pistole_3.mediums[1].h(start = pistole_3.h_start)
pistole_3.mediums[1].p(start = pistole_3.ps_start[1])
volume2.medium.h(start = volume2.h_start)
volume2.medium.p(start = 101325.0)
 

Комментарии:

1. Большое спасибо за эту информацию. Не могли бы вы предоставить больше информации о проблеме с инициализацией, почему это происходит или как я могу избежать этой ошибки?

2. Кроме того, есть ли способ увидеть эти ошибки также в Twinbuilder? Я не использую Dymola. Поэтому я не вижу таких ошибок.

3. Что касается 1: я отредактировал сообщение, чтобы дать дополнительную информацию. Что касается 2: у меня нет Twinbuilder, поэтому я не могу с этим помочь, извините…

4. Большое спасибо. Я написал эти уравнения в разделе начальных уравнений. Он выдает мне ошибку для каждого состояния. Я получаю такую ошибку: cannot find the declaration for ClosedVolume1.mediumh() . Как я могу определить состояния для этих компонентов?

5. Вам необходимо убедиться, что исходное уравнение помещено на правильный уровень иерархии. Если вы используете ClosedVolume1.mediumh() (я думаю, что так и должно быть ClosedVolume1.medium.h(start=... ), это должно быть на верхнем уровне модели. Дополнительно — специально для ClosedVolume.h — на вкладке инициализации фактически есть параметр h_start .