找回密码
 注册
查看: 7387|回复: 3

请教openfoam下的蒸发模拟

[复制链接]
发表于 2009-7-8 11:19:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我想模拟这样一个物理过程:
一碗放在空气中的水,在较高温度的环境下慢慢开始蒸发,直到蒸发完毕。(其实,只要温度在绝对0度以上,蒸发时时刻刻在进行,这里假设只有在0摄氏度以上才蒸发)

这里有个问题:
Q:我觉得肯定得用VOF模型来计算,但是蒸发应该只是发生在液体和气体接触的面上,而不是整个流体区域。
所以,计算的时候,应该只让 “接触面” 上发生相的转变(水->水蒸汽)。


模型很简单,相信实现也不难吧。
这是su_junwei提供的办法,可是不知道加哪里,bs自己

forAll(gamma,i)
{
   if(gamma<=0 && gamma>=1)
   {
      S=0;
  }
}
S//为蒸发源项场


//*******************这部分代码来自interfoam的 gammaEqn.H*************************//
00001 {
00002     word gammaScheme("div(phi,gamma)");
00003     word gammarScheme("div(phirb,gamma)");
00004
00005     surfaceScalarField phic = mag(phi/mesh.magSf());
00006     phic = min(interface.cGamma()*phic, max(phic));
00007     surfaceScalarField phir = phic*interface.nHatf();
00008
00009     for (int gCorr=0; gCorr<nGammaCorr; gCorr++)
00010     {
00011         surfaceScalarField phiGamma =
00012             fvc::flux
00013             (
00014                 phi,
00015                 gamma,
00016                 gammaScheme
00017             )
00018           + fvc::flux
00019             (
00020                 -fvc::flux(-phir, scalar(1) - gamma, gammarScheme),
00021                 gamma,
00022                 gammarScheme
00023             );
00024
00025         MULES::explicitSolve(gamma, phi, phiGamma, 1, 0);
00026
00027         rhoPhi = phiGamma*(rho1 - rho2) + phi*rho2;
00028     }
00029
00030     Info<< "Liquid phase volume fraction = "
00031         << gamma.weightedAverage(mesh.V()).value()
00032         << "  Min(gamma) = " << min(gamma).value()
00033         << "  Max(gamma) = " << max(gamma).value()
00034         << endl;
00035 }
//************************************************//
第一、我想增加源项,是不是只要在这里修改即可。我感觉通用的标量输运方程就在这里了,我的感觉有问题吗?恳请指点。(我只想加一个质量源项而已)
第二、翻了一下Programing Guider没找到flux的含义,所以问一下flux(通量?)的作用,该不会是积分吧?

质量变化遵从f=f(T)//跟温度有关
发表于 2009-7-8 12:44:03 | 显示全部楼层
Hi
首先你这个问题涉及到温度,和能量方程方程有关。interFoam是基于VOF方法的不可压的求解器,只有求解了动量方程。连续性方程是通过simple方法里那一套东西来保证的。那么你可能需要补充能量方程,比如温度阿焓这类的的输运方程(呵呵,不好意思,我一直在做不可压的东西,对可压的那套,至少是能量方程怎么回事,不清楚。)。当然也可能是个简单的关系式,那样就最好了。那么你就得先确定这个方程然后在interFoam里添加这个方程的求解过程。
其次就是f=f(T)的作用。因为不知道你具体温度是怎么作用的,所以也没法具体的说该如何去做。你应该确定一下你的控制方程这个是必须的而且是首要的。才能进入下一步
第三 军伟兄的却是程序高手。从你给的他的这个建议看,他理解你可能是想在界面上添加作用(从他给的这个,我猜测哦。) 。那么可以通过gamma来找到界面,然后在界面上添加作用。这个我认为也是一种不错的建模的思想,但是这些都要依赖你最终的控制方程。这个是一个建模的过程。我不知道你是否已经有这个方程了。如果有那就好办了。没有的话可能还要整理一下。

呵呵 不过 你最好理解一下VOF方法

对于fvc::flux,他是
    template<class Type>
    tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > flux
    (
        const surfaceScalarField&,
        const GeometricField<Type, fvPatchField, volMesh>&
    );
在这定义的。具体实现的功能我猜测可能使面单元上通量的显示计算。主要是给
MULES::explicitSolve(gamma, phi, phiGamma, 1, 0);
用的。至于MULES是个啥 不好意思,我不太清楚不敢妄言。貌似和自由面重构有关??

当然你如果就是考虑相变你可以参考interPhaseChangeFoam.这个是基于空化机理的。也就是压力导致相变(hoho,空化方面我没看过啥,师弟一直在做空化,和他讨论过皮毛而已)。

希望能有所帮助
 楼主| 发表于 2009-7-8 14:06:07 | 显示全部楼层
原帖由 OpenFOAM 于 2009-7-8 12:44 发表
Hi
首先你这个问题涉及到温度,和能量方程方程有关。interFoam是基于VOF方法的不可压的求解器,只有求解了动量方程。连续性方程是通过simple方法里那一套东西来保证的。那么你可能需要补充能量方程,比如温度阿焓这 ...


很有帮助!
谢谢你给我指明了一个方向!
方向,正式我要的东西!

ps:以后我有问题,再来这里提?以前觉得这里人太少了,就没来了....
 楼主| 发表于 2009-7-8 14:17:46 | 显示全部楼层
另外,我还有几个疑惑。也是我需要确定的新方向:
第一,如果知道了控制方程,加入到那个文件中?
第二,关于InterphaseChangeFoam求解器:我就是想看看水是如何蒸发成气体的,就这么简单,其中的质量和能量改变方式我自己给出公式,InterphaseChangeFoam求解器就ok了吗?

呵呵 我这人没啥优点,问题比较多。费心了~

[ 本帖最后由 OpenFOAM 于 2009-7-8 20:46 编辑 ]

版大:控制方程.rar

14.78 KB, 下载次数: 282

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表