多相流求解器的造波问题
-
可能我这个问题比较奇葩,目标是要在multiphaseInterFoam里引入造波功能,造波功能主要基于waves2Foam。我的思路是这样的:
首先我观察了一下intefoam跟multiphaseInterFoam对于mixture的求解区别。发现主要在于,interfoam是把两相分为主相以及背景相,求解时只求解主相,这样背景相可以简单的进行反向选取,即alpha2=1-alpha1就能获得了。
但是相数超过2,就不存在这个背景相的问题了,在multiphaseMixture里,每一相都单独计算,最后累加出一个总相alphas出来。
对于解速度压力那一套,两者我感觉没有太大区别。
我打算先从两相做起,在multiphaseInterFoam里先实现一般的水-气两相造波,再考虑第三相的问题。也就是打算用multiphaseInterFoam复现interfoam的功能。
我按照以下步骤进行:
1.修改multiphasemixture的代码,提供一个获取各个相的相分数的接口。
2.修改multiphaseInterFoam的代码,将这个接口提供给原先造波消波的松弛区,每一步都对波浪进行修正。
2.修改waves2Foam的代码,对空气设定一个相分数的入射边界(实际上就是波浪相分数边界的反向选取)。
3.在求解器中,每次循环都同时对alpha.water以及alpha.air在边界上进行更新。比如对于水,边界上入射的相分数可能是(假设2D算例,竖直方向共5个网格):
(0 0 0.6 1 1)
那么对于空气,就是
(1 1 0.4 0 0)
这样进行累加计算alphas的时候保证边界气液相分数累加为1,我在每一步的文件夹下观察结果,也的确没有发生越界。但是实际运算的时候,出现了气液相分数越界,总相分数不守恒的现象,最后造出来的波是这种形状的
因为multiphaseInterFoam我想用在化工方面比较多一点,所以我想请问一下我是遗漏了哪些部分吗?
也请@东岳 老师指点。
第二个问题就是,我这个问题其实也类似一个分层流动,从上到下,第一相,第二相,第三相之间,第一相跟第三相是没有任何接触的。有没有划分成两个计算域,在第二相上交换信息的办法?