3

テスト済み:

MSL バージョン:

  • 3.2.1、2013-08-14、ビルド 2 (2013-08-14 08:44:41Z)
  • 3.2.1、2013-08-14、ビルド 4 (2015-09-30 09:15:00Z)

以下は、4 つのコンポーネントを持つモデルです。

  1. 質量流量源 (M_bound)
  2. 突然アダプター (abruptAdapter)
  3. 動的パイプ (pipeSmall)
  4. 圧力源 (P_bound)

このセクションには、モデルの 2 つの接続ケースも含まれていequationます。

ケース #1: M_bound -> abruptAdaptor -> pipeSmall -> P_bound

ケース #2: M_bound -> pipeSmall -> abruptAdaptor -> P_bound

要約: ケース #1 は正常にシミュレートされますが、ケース #2 は失敗します。生成されたエラーを以下に示します。

The following error was detected at time: 0

Model error - division by zero: (data.zeta1) / ((if data.zeta1_at_a then rho_a_des*A_a^2 else rho_b_des*A_b^2)) = (0.402964) / (0)

The stack of functions is:
Modelica.Fluid.Fittings.BaseClasses.QuadraticTurbulent.pressureLoss_m_flow_totalPressure
Modelica.Fluid.Fittings.BaseClasses.QuadraticTurbulent.pressureLoss_m_flow_totalPressure(
 -pipeBig.port_b.m_flow, 
abruptAdaptor.state_a.d, 
abruptAdaptor.state_b_des.d, 
abruptAdaptor.state_b.d, 
abruptAdaptor.state_a_nondes.d, 
abruptAdaptor.data, 
abruptAdaptor.m_flow_small)
First evaluation failed for non-linear solver.

質問: ケース #2 が失敗する理由と、その修正方法に関する推奨事項は? どんな洞察も素晴らしいでしょう。コンポーネントのバグである可能性さえありAbruptAdaptorます。

型式コード

model AbruptAdaptor_1Pipe

  replaceable package Medium = Modelica.Media.Water.StandardWater;

  inner Modelica.Fluid.System system;

  Modelica.Fluid.Sources.Boundary_pT P_bound(
    redeclare package Medium = Medium,
    nPorts=1,
    p=system.p_ambient,
    T=M_bound.T);

  Modelica.Fluid.Sources.MassFlowSource_T M_bound(
    redeclare package Medium = Medium,
    m_flow=1,
    T=300,
    nPorts=1);

  Modelica.Fluid.Fittings.AbruptAdaptor abruptAdaptor(
    redeclare package Medium = Medium,
    diameter_a=1,
    diameter_b=0.5,
    m_flow_nominal=M_bound.m_flow,
    m_flow_start=M_bound.m_flow);

  Modelica.Fluid.Pipes.DynamicPipe pipeSmall(
    redeclare package Medium = Medium,
    T_start=M_bound.T,
    m_flow_start=M_bound.m_flow,
    length=1,
    diameter=0.5,
    modelStructure=Modelica.Fluid.Types.ModelStructure.av_b); // switch to av_vb with case #2

equation 

  // Case #1
  connect(M_bound.ports[1],abruptAdaptor.port_a);
  connect(abruptAdaptor.port_b,pipeSmall.port_a);
  connect(pipeSmall.port_b,P_bound.ports[1]);

  // Case #2
  //connect(M_bound.ports[1],pipeSmall.port_b);
  //connect(abruptAdaptor.port_b,pipeSmall.port_a);
  //connect(abruptAdaptor.port_a,P_bound.ports[1]);

  annotation (uses(Modelica(version="3.2.1")));
end AbruptAdaptor_1Pipe;
4

1 に答える 1

1

ずらしたグリッドは問題ありません。必要な場所にボリュームを設定します。心配しないでください、それはあなたのせいではありません、デバッグです、私はそれを数回使用しようとしましたが、常にいずれかの方法で失敗します(アダプターの位置はわかりませんが、それは実際には問題ではありません)。リレーション dp(Areas_rate) を定義するオリフィスをいつでも使用できます。どちらの場合も逆流を回避し、オリフィスの前後に 2 つのボリュームを接続します (2 つのバルブが並列にあるように)。それはうまくいくはずです。

于 2016-04-13T13:22:08.493 に答える