adjustPhi的作用是检查边界条件?
-
泊松方程如果给定Neumann边界条件,需要给定一个附加条件。在NS方程中,这个附加条件就是就是要保证速度边界条件是守恒的。
例如:我们有1D压力方程:
\begin{equation}
\frac{\partial }{\partial x} \frac{\partial p}{\partial x}=k
\end{equation}
其解为:
\begin{equation}
p=\frac{1}{2}kx^2+C_1 x+C_2
\end{equation}
如果给定Neumann条件,$p'(0)=\alpha$,$p'(1)=\beta$
带入后我们有:
\begin{equation}
C_1=\alpha, C_1=\beta-k
\end{equation}
这个就是附加条件,在此情况下,$C_2$无解,因此在压力均为Neumann边界条件的时候,需要设定参考压力,并且满足公式3. 公式3在NS方程中即为adjustphi()
的目的。从代码看这个函数只修正了边界上的流量,没有碰内部场,这样有什么意义吗?就是为了强制边界上总的通量是守恒的
修正边界条件确保压力泊松方程有解。
它不检查存在给定压力边界(p.needReference()为false)的算例,是默认这种算例能最终达到边界通量的守恒?
如果存在Dirichlet边界条件,则
p.needReference()
为false
,因此不需要满足附加条件。 -
@cfd-china
我觉得你这个问题解释得有问题。pRef是解决双Neumann条件无法确定$C_2$的问题
而adjustPhi解决的是$C_1=\alpha=k-\beta$的问题,因为$\alpha+\beta=k$,所以两个Neumann条件不独立,并不是任意设置$\alpha$和$\beta$都能得到解的。这个关系数学上叫相容性关系。参考http://cfd-china.com/topic/501/%E5%85%B3%E4%BA%8Ecorrectphi-h%E8%BF%99%E4%B8%AA%E5%87%BD%E6%95%B0/9
p.s. 其实不调用adjustPhi应该也能得到线性代数问题的解。只是这个解不对。
CFD中文网2016-2023 | 京ICP备15017992号-2