我已经用 neumann 和 dirichlet 边界条件在 3d 域上求解了 Poisson 方程。我得到电势,获取每个元素的梯度并在元素的表面上积分,我对包围电极的表面上的所有元素执行此操作,我有兴趣了解通过的电流。这并不能给出非常准确的结果,误差高达 50%。商业 FEM 软件可以获得非常准确的通量。
有谁知道他们是如何做到的或知道计算通量的更好方法?我找不到关于此的任何参考资料
使用 FEM 计算准确的通量
如果 $\nabla u$ 比 $u$ 本身更有趣,设置 $\mathbb v := -\sigma \, \nabla u$ 并将您的泊松问题 $$ -\nabla \cdot (\ sigma \, \nabla u) = f \quad \text{in }\Omega, \\ u = g_E \quad \text{on }\partial\Omega_E, \\ \sigma \, \nabla u \cdot \hat{ \mathbb n} = g_N \quad \text{on }\partial\Omega_N $$ 到混合的:$$ \frac{1}{\sigma} \, \mathbb v + \nabla u = 0 \quad \text {in }\Omega, \\ \nabla \cdot \mathbb v = f \quad \text{in }\Omega, \\ u = g_E \quad \text{on }\partial\Omega_E, \\ \mathbb v \ cdot \hat{\mathbb n} = -g_N \quad \text{on }\partial\Omega_N。$$(请注意,对于混合问题,基本 BC 是自然的,自然 BC 是必不可少的。) is of more interest than itself, it is reasonable to set and convert your Poisson problem
在这里,您直接建立 $\mathbb v$ 的近似值,因为它是未知数之一。因此,您不会因为数值微分而失去准确性。 directly since it is one of the unknowns. Hence you do not lose accuracy due to numerical differentiation.
这种混合泊松公式在文献中得到了很好的讨论。
如果按照@Bill Greene 的建议对元素通量进行平均,不能产生足够准确的通量,则可以通过后处理来提高通量的准确性。Hughes TJR 在《有限元方法》一书中作为练习提到的一种标准且非常简单的方法如下:
如果您的问题是: \begin{align*} & \nabla^2 u = f \quad \text{in} \quad \Omega \\ & \frac{\partial u}{\partial n} = T \quad \ text{on} \quad \Gamma_T && \text {Neumann data} \\ & \frac{\partial u}{\partial n} = T^* \quad \text{on} \quad \Gamma_g && \text {寻求Dirichlet 边界上的通量} \\ & u = g \quad \text{on} \quad \Gamma_g && \text {Dirichlet 数据} \end{align*}
然后通过求解相应的弱问题找到未知通量: 求 $T^*\in L_2(\Gamma_g)$ 使得对于所有 $w\in H^{\frac{1}{2}}(\Gamma_g) $ 那里持有: such that for all there holds:
其中逗号后跟索引 $i$ 表示相对于坐标的微分(隐含求和约定)。请注意,此处未使用 Dirichlet 数据。 denotes differentiation with respect to the coordinates (the summation convention is implied). Note that the Dirichlet data are not used here.
你继续离散化这个额外的弱问题,就像你对主要问题所做的那样。
提高通量精度的一种简单方法是对每个节点处元素通量的不连续值进行平均。这为您提供了可以积分的表面上的连续节点通量函数。
如果连接到节点的所有元素(大致)大小相同,则简单地平均节点处的元素通量就足够准确了。如果元素大小显着不同,则每个元素通量对节点值的贡献应按元素大小加权。
有更复杂的方法可以提高节点处的通量值,但基本思想是“平滑”跨元素边界的不连续值。在结构分析中,这通常称为“应力平滑”。
当然,通量将不如基本节点未知数准确,因为它们是这些量的导数。如果您使用简单的 4 节点四面体,则元素中的通量是恒定的。特别是当通量计算很重要时,通常使用 10 节点四面体单元来代替。