请教openfoam下的蒸发模拟
我想模拟这样一个物理过程:一碗放在空气中的水,在较高温度的环境下慢慢开始蒸发,直到蒸发完毕。(其实,只要温度在绝对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)//跟温度有关 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,空化方面我没看过啥,师弟一直在做空化,和他讨论过皮毛而已)。
希望能有所帮助 原帖由 OpenFOAM 于 2009-7-8 12:44 发表 http://www.cfluid.com/bbs/images/common/back.gif
Hi
首先你这个问题涉及到温度,和能量方程方程有关。interFoam是基于VOF方法的不可压的求解器,只有求解了动量方程。连续性方程是通过simple方法里那一套东西来保证的。那么你可能需要补充能量方程,比如温度阿焓这 ...
很有帮助!
谢谢你给我指明了一个方向!
方向,正式我要的东西!
ps:以后我有问题,再来这里提?以前觉得这里人太少了,就没来了.... 另外,我还有几个疑惑。也是我需要确定的新方向:
第一,如果知道了控制方程,加入到那个文件中?
第二,关于InterphaseChangeFoam求解器:我就是想看看水是如何蒸发成气体的,就这么简单,其中的质量和能量改变方式我自己给出公式,InterphaseChangeFoam求解器就ok了吗?
呵呵 我这人没啥优点,问题比较多。费心了~
[ 本帖最后由 OpenFOAM 于 2009-7-8 20:46 编辑 ]
页:
[1]