<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[multiphaseEulerFoam对相变的计算]]></title><description><![CDATA[<p dir="auto">各位老师和学者好，我最近在尝试使用multiphaseEulerFoam来计算水的闪蒸过程。但是遇到了一些问题。对于纯水的两相流动（没有空气），应该是调用ThermalPhaseChangePhaseSystem</p>
<pre><code>type thermalPhaseChangeMultiphaseSystem;

phases (steam water);

phaseChange on;

steam
{
    type            purePhaseModel;
    diameterModel   isothermal;
    isothermalCoeffs
    {
        d0              3e-3;
        p0              1e5;
    }

    residualAlpha   1e-3;
}

water
{
    type            purePhaseModel;
    diameterModel   constant;
    constantCoeffs
    {
        d               1e-4;
    }

    residualAlpha   1e-3;
}
</code></pre>
<p dir="auto">在此基础上，后续的换热模型选用了RanzMarshall，但是我发现根本不会发生闪蒸（我在能量方程里对water相直接补充了热量，保证了温度上升）</p>
<p dir="auto">in EEqns.H</p>
<pre><code>forAll(fluid.anisothermalPhases(), anisothermalPhasei)
    {
        phaseModel&amp; phase = fluid.anisothermalPhases()[anisothermalPhasei];

        const volScalarField&amp; alpha = phase;
        tmp&lt;volScalarField&gt; tRho = phase.rho();
        const volScalarField&amp; rho = tRho();
        tmp&lt;volVectorField&gt; tU = phase.U();
        const volVectorField&amp; U = tU();
        
        volScalarField q = alpha*rho*(U&amp;g)-alpha*rho*(U&amp;g);

        if(phase.name() == "water")
        {
        q[93] = 5.0E8;
        q[94] = 5.0E8;
        q[95] = 5.0E8;
        q[96] = 5.0E8;
        q[97] = 5.0E8;
        }
···········
</code></pre>
<p dir="auto">不会发生相变的原因确定于代码中，对于质量源项的计算有</p>
<p dir="auto">ThermalPhaseChangePhaseSystem.C</p>
<pre><code>        // Interfacial mass transfer update
        {
            volScalarField&amp; dmdtf(*this-&gt;dmdtfs_[pair]);
            volScalarField&amp; Tf(*this-&gt;Tfs_[pair]);

            const volScalarField Tsat(saturationModelIter()-&gt;Tsat(thermo1.p()));

            const volScalarField L
            (
                volatile_ != "none"
              ? this-&gt;Li(pair, volatile_, dmdtf, Tsat, latentHeatScheme::upwind)
              : this-&gt;L(pair, dmdtf, Tsat, latentHeatScheme::upwind)
            );

            volScalarField H1(this-&gt;heatTransferModels_[pair].first()-&gt;K(0));
            volScalarField H2(this-&gt;heatTransferModels_[pair].second()-&gt;K(0));

            volScalarField dmdtfNew((H1*(Tsat - T1) + H2*(Tsat - T2))/L);
</code></pre>
<p dir="auto">其中，换热系数H1与2的计算<br />
RanzMarshall.C</p>
<pre><code>Foam::tmp&lt;Foam::volScalarField&gt;
        
        Foam::heatTransferModels::RanzMarshall::K(const scalar residualAlpha) const
        
        {
        
            volScalarField Nu(2 + 0.6*sqrt(pair_.Re())*cbrt(pair_.Pr()));
        
        
        
            return
        
                6
        
               *max(pair_.dispersed(), residualAlpha)
        
               *pair_.continuous().thermo().kappa()
        
               *Nu
        
               /sqr(pair_.dispersed().d());
        
        }
</code></pre>
<p dir="auto">可以发现，当离散相为水蒸气（初始条件下为0），连续相为水时，输入的残差为0时，</p>
<pre><code>            volScalarField H1(this-&gt;heatTransferModels_[pair].first()-&gt;K(0));
            volScalarField H2(this-&gt;heatTransferModels_[pair].second()-&gt;K(0));
</code></pre>
<p dir="auto">这个H1和H2必然为0，因此计算所得到的相变量dmdtfNew也必然为0，无论液体的温度高过饱和温度多少。</p>
<p dir="auto">请问有老师碰到过这种情况吗，任何点拨都感激不尽<img src="https://cfd-china.com/assets/plugins/nodebb-plugin-emoji/emoji/customizations/91e6dbf3-87c8-45ec-a900-abb26ac18a1c-260a3d2e0d866a32367450455f3340d0.png?v=eedi85amb0g" class="not-responsive emoji emoji-customizations emoji--xinlei" style="height:23px;width:auto;vertical-align:middle" title=":xinlei:" alt=":xinlei:" /></p>
]]></description><link>https://cfd-china.com/topic/6435/multiphaseeulerfoam对相变的计算</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Apr 2026 08:32:38 GMT</lastBuildDate><atom:link href="https://cfd-china.com/topic/6435.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 05 Jun 2023 02:01:28 GMT</pubDate><ttl>60</ttl></channel></rss>