虽然我不能代表 NS 或 MHD,但我确实发现功能空间的这种“组件化”是 CEM(计算电磁学)中有用的设计原则,特别是对于高阶(以 p 为单位)离散化。
CEM 经常同时使用多个空间:grad-conforming 函数表示电势,curl-conforming 函数表示 E-field,div-conforming 函数表示 B-flux 和 currents 等。这些空间相互关联通过 deRham 图,每个微分算子 (grad/curl/div) 的范围形成下一个的内核(精确序列属性)。
根据我的经验,这可以(应该?)在实现级别一直显示,因为它可以节省您的时间并有助于保证正确性。例如,如果您花费时间和金钱来制表/实现高阶 grad-conforming 空间(基本函数及其梯度,你可以(应该?)重用那些 's 作为 curl-conforming 空间中的基函数,那么您只需要通过添加所需的任何附加函数来丰富它们,将 curl 范围扩展到您想要的顺序。在 curl-conforming 和 div-conforming 空间之间存在类似的结构(符合 curl 的函数的 curl 应该是符合 div 的基础的成员)。ϕ∇ϕ∇ϕ
不幸的是,由于单解性问题(p=0 卷曲已经跨越 p=0 梯度等),这种富集过程在 p=0 时是混乱/中断的。它实际上只在 p >= 1 时发光。在实践中,我使用以下分解:
- hgrad0: p=0 符合梯度的函数
- hgradp: p>0 符合梯度的函数
- hcurl0: p=0 符合 curl 的函数
- hcurlp:“丰富” p>0 的 curl 范围的函数
- hdiv0: p=0 符合 div 的函数
- hdivp:“丰富” p>0 的 div 范围的函数
使用这些构建块,您可以将整个图表制成表格:
- hgrad := hgrad0 + hgradp
- hcurl := hcurl0 + grad(hgradp) + hcurlp
- hdiv := hdiv0 + curl(hcurlp) + hdivp
- L2 := 分段常数 + div(hdivp)
并且这些空间中的每一个 (i) 将内核与相应的微分算子的范围分开,并且 (ii) 将 p=0 空间与 p>0 .. 分开。这两个属性在设计预处理器时都很有用。