网格文件中的 Fenics 子域指示器
Fenics subdomain indicator in mesh file
DirichletBC takes three arguments, the first one is our function space V, the next is the boundary condition value and the third is the subdomain indicator which is information stored in the mesh.
网格文件中的子域指示符在哪里?我如何更改它的值?
上下文:我正在求解一个具有多个边界部分的域,每个部分都有一个恒定的 Dirichlet 条件。
我使用的网格文件是使用 Triangle 和 dolfin-convert
生成的 xml 文件。
据我了解,GMSH 等网格划分工具本身就提供了标记边界的选项,但我宁愿不求助于其他网格划分器,因为我已经习惯了三角形。
我不知道如何修改网格以添加边界标记,但我确实在 page 9 of this document 中找到了部分问题的解决方法。
想法是为每个边界定义一个边界条件
u_1 = Constant(0.0)
def b_1(x, on_boundary):
return on_boundary and \
near(x[0]*x[0]+x[1]*x[1], 1, 1e-2)
然后定义可以传递给 solve
函数的边界条件列表
bcs = [DirichletBC(V, u_1, b_1), ...]
但是,这只有在每个边界都可以用方程描述的情况下才有效。所以这不是问题的通用解决方案
DirichletBC takes three arguments, the first one is our function space V, the next is the boundary condition value and the third is the subdomain indicator which is information stored in the mesh.
网格文件中的子域指示符在哪里?我如何更改它的值?
上下文:我正在求解一个具有多个边界部分的域,每个部分都有一个恒定的 Dirichlet 条件。
我使用的网格文件是使用 Triangle 和 dolfin-convert
生成的 xml 文件。
据我了解,GMSH 等网格划分工具本身就提供了标记边界的选项,但我宁愿不求助于其他网格划分器,因为我已经习惯了三角形。
我不知道如何修改网格以添加边界标记,但我确实在 page 9 of this document 中找到了部分问题的解决方法。
想法是为每个边界定义一个边界条件
u_1 = Constant(0.0)
def b_1(x, on_boundary):
return on_boundary and \
near(x[0]*x[0]+x[1]*x[1], 1, 1e-2)
然后定义可以传递给 solve
函数的边界条件列表
bcs = [DirichletBC(V, u_1, b_1), ...]
但是,这只有在每个边界都可以用方程描述的情况下才有效。所以这不是问题的通用解决方案