使用Modelica.Media的模型上的非线性方程组

使用Modelica.Media的模型上的非线性方程组,modelica,openmodelica,Modelica,Openmodelica,我正在尝试使用Modelica.Media软件包模拟自然对流情况,我已经建立了一个6x6固定体积区域的简单网格(附代码),它实现了质量和能量守恒。这些区域连接到无流边界条件模型,并通过流模型进行通信 但在模拟时,在各步骤中得到一组非线性方程,与每个区域的状态P、H、席的计算有关(附图)。 你知道我可以设置它来避免这种情况吗?可能是一组不同的初始条件?非常感谢您的帮助 model Zone replaceable package Medium = Modelica.Media.Inter

我正在尝试使用Modelica.Media软件包模拟自然对流情况,我已经建立了一个6x6固定体积区域的简单网格(附代码),它实现了质量和能量守恒。这些区域连接到无流边界条件模型,并通过流模型进行通信

但在模拟时,在各步骤中得到一组非线性方程,与每个区域的状态P、H、席的计算有关(附图)。 你知道我可以设置它来避免这种情况吗?可能是一组不同的初始条件?非常感谢您的帮助

model Zone

    replaceable package Medium = Modelica.Media.Interfaces.PartialMedium annotation(choicesAllMatching = true);
                        Medium.BaseProperties medium(p(start=101325, fixed=false),
                                                   T(start=293.15, fixed=false));

    Test.Port portT(redeclare package Medium = Medium);
    Test.Port portB(redeclare package Medium = Medium);
    Test.Port portL(redeclare package Medium = Medium);
    Test.Port portR(redeclare package Medium = Medium);

    parameter Medium.AbsolutePressure P_ambient = 101325;
    Medium.Temperature T_ambient = Units.Conversions.from_degC(20);
    Medium.MassFraction X_ambient[Medium.nX] = Medium.X_default;

    ...

initial equation

    medium.p = P_ambient;
    medium.T = T_ambient;
    medium.Xi = X_ambient[1:Medium.nXi];

equation

    ...

    m = V * medium.d;
    U = m * medium.u;
    mXi = m * medium.Xi;

    der(m) = portL.mf + portR.mf + portT.mf + portB.mf;
    der(U) = portL.hf + portR.hf + portT.hf + portB.hf + portL.q + portR.q + portT.q + portB.q;
    der(mXi) = portL.mXif + portR.mXif + portT.mXif + portB.mXif;
在流动模型上,我使用

    portI.mf = mf;
    portI.hf = semiLinear(portI.mf, portI.h, portJ.h);
    portI.mXif = semiLinear(portI.mf, portI.Xi, portJ.Xi);
    portI.q = q;

    portI.mf + portJ.mf = 0;
    portI.hf + portJ.hf = 0;
    portI.q + portJ.q = 0;
    portI.mXif + portJ.mXif = zeros(Medium.nXi);
连接器

    Medium.Temperature T;
    flow Units.HeatFlowRate q;
    Medium.AbsolutePressure p;
    flow Medium.MassFlowRate mf;
    Medium.SpecificEnthalpy h;
    flow Medium.EnthalpyFlowRate hf;
    Medium.MassFraction Xi[Medium.nXi];
    flow Medium.MassFlowRate mXif[Medium.nXi];

我刚刚发现了问题,我的方程组不完整,初始化也没有任何帮助。

你使用的是什么介质?我使用简单空气作为介质。只是一个想法:
Modelica.Media.Air.SimpleAir.temperature\u phX
Modelica.Media.Air.SimpleAir.specificateh焓\u pTX
没有注释。也许添加注释有助于消除非线性迭代?不确定,在这种情况下,工具本身应该能够找到解析逆,因为方程非常简单。