@dzw05
不好意思, 刚仔细看了一遍看到了, 谢谢!
kdfluxit
帖子
-
质量源项添加问题,参数rho无效 -
质量源项添加问题,参数rho无效最近也在做添加质量源项的事情, 搜索到了该帖子, 看到
张RP Oct 10, 2019, 8:31 PM , 似乎作者rhoPimpleFoam里面采用scalarSemiImplicitySource添加源项获得了合理的结果.
根据
《dzw05 OPENFOAM教授 Oct 10, 2019, 3:32 PM》的回复, 因为pimpleFoam是不可压缩求解器, 所以没有rho.
所以不能用massSource { type scalarSemiImplicitSource; timeStart 0.2; ... injectionRateSuSp { rho (); H2O (); } }
我不太理解为什么 rhoPimpleFoam里面可以使用这种添加的方法. 因为我查看rhoPimpleFoam里面没有类似于
fvScalarMatrix rhoEqn ( fvm::ddt(rho) + fvc::div(phi) == parcels.Srho(rho) + surfaceFilm.Srho() + fvOptions(rho) ); rhoEqn.solve();
显式地求解continuity equation.
而是采用压力柏松方程, 所以, 我不确定在rhoPimpleFoam里, 采用scalarSemiImplicitySource给rho添加源项是否合理?
希望有人看到能指教一下, 谢谢
-
多孔介质多组分,交界面处真实物理场不连续@l-j刘侃
还想再请教一下, 您再前面的回复中提到的“实际上真实情况介面浓度更接近不连续”, 请问您有相关文献?
从我的直觉上, 这一点实在很难解释, 想要稍微了解一下, 谢谢 -
多孔介质多组分,交界面处真实物理场不连续@l-j刘侃
非常感谢您的解答. 我现在感觉有一些初步的认识了 -
多孔介质多组分,交界面处真实物理场不连续@l-j刘侃
谢谢你的关注. 感谢你的资料, 我会认真了解一下.我目前关注的燃料电池的气体扩散层, 其厚度大概在200微米左右, 一般入口气体的速度与气体扩散层表面平行;
但是仍然有一定的对流; 而且在这个很薄的区域内, 很可能这些对流对物质的输运比扩散更强. 对于目前的研究而言, 即使是 $10^-3$ m/s这个量级的速度都是值得注意的.
因此, 我比较关注速度的计算, 尤其是气流从通道进入气体扩散层那个界面的速度.另外
, 我参看过ANSYS FLUENT 18.2手册中 7.1.1.Species Transport Equations, 这里面说到, 如果计算瞬态, 就在瞬态的项上乘以一个孔隙度 $\epsilon$ , 方程就变成了
$\frac{\partial \epsilon \rho Y_i}{\partial}$=
右边的项与没有孔隙度时没有区别. 我项问一下, 我这样理解对吗?另外2
同样在手册中 6.2.3.8. Modeling Porous Media Based on Physical Velocity
里面谈到, 如果开启物理速度后标量方程的计算就是$\frac{\partial }{\partial t}(\epsilon \rho \phi) + \nabla \cdot (\epsilon \rho \vec{v} \phi) = \nabla \cdot (\epsilon \rho \Gamma \nabla \phi) + \epsilon S_{\phi}$
这样看起来计算的就是物理速度了. 是否会对计算的准确性有一定帮助呢?
---- 这里我想请教一下, 虽然FLUENT计算的结果不对, 但是受压力驱动进入气体扩散层的趋势是否合理呢?
或者FLUENT的这种计算方案, 哪些变量的趋势是比较合理的? -
多孔介质多组分,交界面处真实物理场不连续@东岳
谢谢您的关注;
**表象物理量:**以组分摩尔浓度为例 在多孔介质中, 如果有一个控制体的体积是$V$, 控制体中孔隙的体积是$V_{pore}$, 这个控制体中某个的摩尔数为$n$, 表象浓度(superficial)为$\frac{n}{V}$, 这个浓度在将固体不分考虑进入了体积, 因此不是真实物理的浓度, 孔中的浓度为$\frac{n}{V_{pore}}$;
由于上述方程中的$\rho$,是表象的量(质量除以控制体体积$V$), 因此在交界面处, 也是表象$\rho$连续. 因为求解的是连续方程, 交界面两侧的$\rho$是连续的, 但是将交界面两侧的表象量$\rho$换算成物理量, 就应该用表象量除以孔隙度, 即:
$\frac{\rho}{\epsilon_{zone.1}}$,$\frac{\rho}{\epsilon_{zone.2}}$.
这就会导致, 在交界面处, 表象的量$\rho$连续, 但是真实物理量$\frac{\rho}{\epsilon}$不连续
回复: 多孔介质多组分
谢谢您的关注;
表象物理量以组分质量浓度ρ为例 在多孔介质中, 如果有一个控制体的体积是V, 控制体中孔隙的体积是Vpore, 这个控制体中某个组分的质量为m, 表象浓度(superficial)为ρ=mV, 这个浓度在将固体部分考虑进入了体积, 因此不是真实物理的浓度, 孔中的浓度为$\rho p=\frac{m}{V{pore}}$;由于上述方程中的\rho是表象的量(质量m除以控制体体积V),因此在交界面处,也是表象质量浓度连续.因为求解的是连续方程,交界面两侧的是连续的,但是将交界面两侧的表象量$\rho=\frac{m}{V}$换算成物理量$\rho_p=\frac{m}{V}$,就应该用表象量除以孔隙度,即:$\rho_p=\frac{\rho}{\epsilon}$,$\epsilon = \frac{V_{pore}}{V}$这就会导致,在交界面处,表象的量$\rho$连续,但是真实物理量$\rho _{pore}$不连续 -
多孔介质多组分,交界面处真实物理场不连续@kdfluxit
不好意思, 问题编辑的不合适, 重新编辑一下问题
FLUENT 中计算组分输运的公式为\begin{equation}
\frac{\partial{\rho Y_i}}{\partial t} +\nabla\cdot(\rho \vec{v} Y_i)=\nabla \cdot (\rho D_i\nabla Y_i)) +S_i
\end{equation}如果有三个连续的计算区域(区域之间边界条件为interior), 有两个区域为孔隙度不同的多孔介质.
如图所示
Zone.1为非多孔介质;
Zone.2为孔隙度($\epsilon_2$)为0.5的多孔介质;
Zone.3为孔隙度($\epsilon_3$)为0.1的多孔介质;有两个关注的交界面, Interface.1(Zone.1和Zone.2)和Interface.2(Zone.2和Zone.3)
我同时打开多孔介质模型和组分输运模型.
请问
1.计算的组分浓度场($c_i$)是表象浓度场(superficial)吗?
2.如果表象浓度场在交界面处是连续的, 那么两个区域在交界面处, 将表象浓度场($c_i$)除以孔隙度($\epsilon_2$和$\epsilon_3$)得到的真实浓度场在交界面处就是不连续的, 这似乎不太合理.
请问有人遇到过类似问题吗? -
多孔介质多组分,交界面处真实物理场不连续FLUENT 中计算组分输运的公式为
\begin{equation}
\frac{\partial{\rho Y_i}}{\partial t} +\nabla\cdot(\rho \vec{v} Y_i)=\nabla \cdot (\rho D_i\nabla Y_i)) +S_i
\end{equation}如果有三个连续的计算区域(区域之间边界条件为interior), 有两个区域为孔隙度不同的多孔介质.
我同时打开多孔介质模型和组分输运模型.
计算的组分浓度场($c_i$)是表象浓度场(superficial)吗?
如果表象浓度场在交界面处是连续的, 那么将表象浓度场($c_i$)除以孔隙度得到的真实浓度场在交界面处就是不连续的, 这似乎不太合理.
请问有人遇到过类似问题吗? -
在不同的block中设置不同的物性参数自问自答一波:
我现在感觉好像是检查constant/porosityProperties 文件里面的字典. 只要里面存在字典 cellZone(键) 对应的 name_(值)的block就被当作是多孔介质, 然后通过cellZoneID = mesh.cellZone().indices(name_)
这个函数来确认该区域的ID
上述内容是在
porosityModel.H porosityModel.C中感觉到的.但是没有找到实质的证据. -
在不同的block中设置不同的物性参数我最终的目的是希望在不同的区域设置不同的扩散系数. 为了实现这个, 我觉得首先要识别区域, 因此想要参考已有的求解器中如何识别区域的. 在porousSimpleFoam的算例中有几个angledDuct的例子, 这几个例子里面在blockMeshDict 里面设置了三个区域: 分别命名为“inlet”, “porosity”, “outlet”. 我猜测porousSimpleFoam是通过名称来识别区域, 并确定是否添加多孔介质源项的. 因此, 我又查看了porousSimpleFoam求解器源代码里面: createPorousZones.H, 这里面有一句
IOporosityModelList pZones(mesh);
我又查看了IOporosityModelList的构造函数
Foam::porosityModelList::porosityModelList ( const fvMesh& mesh, const dictionary& dict ) : PtrList<porosityModel>(), mesh_(mesh) { reset(dict); active(true); }
里面用到了 reset()和active()两个函数来构造
这两个函数的代码如下bool Foam::porosityModelList::active(const bool warn) const { bool anyOk = false; forAll(*this, i) { anyOk = anyOk || this->operator[](i).active(); } if (warn && this->size() && !anyOk) { Info<< "No porosity models active" << endl; } return anyOk; } void Foam::porosityModelList::reset(const dictionary& dict) { label count = 0; for (const entry& dEntry : dict) { if (dEntry.isDict()) { ++count; } } this->resize(count); count = 0; for (const entry& dEntry : dict) { if (dEntry.isDict()) { const word& name = dEntry.keyword(); const dictionary& modelDict = dEntry.dict(); this->set ( count++, porosityModel::New(name, mesh_, modelDict) ); } } }
但是我还是没有看出来是如何识别多孔区域的. 求大神给解释一下