我正在寻找由部分施加在边界上的狄利克雷边界条件引起的奇点的数学解释。
例如
在哪里是一个 10 x 4 的矩形。Dirichlet 边界条件施加于
并且在边界处施加通量
绘制通量,可以看到 Dirichlet 边界条件结束的奇点
我用下面的 FEniCS 代码绘制了这个
from fenics import *
mesh = RectangleMesh(Point(0, 0), Point(10, 4), 400, 160, diagonal='crossed')
V = FunctionSpace(mesh, 'CG', 1)
u, v = TrialFunction(V), TestFunction(V)
a = inner(grad(u), grad(v))*dx
def MyDirichlet(x, on_boundary):
return on_boundary and (x[0] < 2.0) and (x[0] > 0.0)
class MyNeumann(SubDomain):
def inside(self, x, on_boundary):
return on_boundary and near(x[0], 10.0)
subdomain = MeshFunction("size_t", mesh, mesh.topology().dim() - 1)
subdomain.set_all(0)
myneumann = MyNeumann()
myneumann.mark(subdomain, 1)
ds = Measure('ds', domain=mesh, subdomain_data=subdomain)
bc = DirichletBC(V, Constant(0.0), MyDirichlet)
L = Constant(1.0)*v*ds(1)
u_sol = Function(V)
solve(a==L, u_sol, bcs=bc)
File("sing_example.pvd") << u_sol
Vflux = VectorFunctionSpace(mesh, 'CG', 1)
File("sing_flux.pvd") << project(grad(u_sol), Vflux)