给定向量值 PDE,我想强制执行边界条件
bcs = DirichletBC(V.sub(0), g, 'on_boundary')
作为狄利克雷条件。但是,对于其他几何形状该怎么办?
给定向量值 PDE,我想强制执行边界条件
bcs = DirichletBC(V.sub(0), g, 'on_boundary')
作为狄利克雷条件。但是,对于其他几何形状该怎么办?
您可以为此使用 Nitsche 类型的方法。请参阅以下参考:
J. Freund,R. 斯坦伯格。关于二阶问题的弱边界条件。第九届国际会议记录。会议。流体中的有限元,威尼斯 1995 年。M. Morandi Cecchi 等人,Eds。第 327-336 页。
不久前,我在一些简单的 FEniCS 代码中实现了这一点,以处理一般二维几何中的自由滑动边界。在此处查找演示代码和此处的网格(使用 FEniCS 1.3 测试)。
更新:同时,其他人也提供了类似的实现。例如,参见这个github 存储库。
这可能引发的问题多于答案,但这是我认为应该做的。
让我们假设在边界点p
,速度u
定义为
在哪里VectorFunctionSpace
。
让
TrialFunction
正常v
分量相对应的将是
我不确定是否FEniCS
允许重新定义TrialFunctions
orTestFunctions
以及相应地调整DirichletBC
s 的处理方式。
如果将组装的算子导出到矩阵,现在可以应用法线和切线边界条件如下。
将k
第 -th 列替换为乘以k
-th加 -times k+1
-st 列(这就像我们有在试验空间而不是)。
将k+1
-st 列替换为乘以k
-th减 -times k+1
-st 列(这就像我们有在试验空间而不是)。
那么第k
-th 自由度v_k
可以固定为边界条件的法向分量或k+1
-st ( v_{k+1}
) 为切向分量。
如果对称性是一个问题,可以对矩阵的列执行相同的操作。
然后将实际坐标中的解建立为