📄 demo.py
字号:
"""This demo program solves Poisson's equation - div grad u(x, y) = f(x, y)on the unit square with source f given by f(x, y) = 500*exp(-((x-0.5)^2 + (y-0.5)^2)/0.02)and boundary conditions given by du/dn(x, y) = 0 """from dolfin import *# Create mesh and finite elementmesh = UnitSquare(32, 32)element = FiniteElement("Lagrange", "triangle", 1)# Source termclass Source(Function): def __init__(self, element, mesh): Function.__init__(self, element, mesh) def eval(self, values, x): dx = x[0] - 0.5 dy = x[1] - 0.5 values[0] = 500.0*exp(-(dx*dx + dy*dy)/0.02)# Define variational problemv = TestFunction(element)u = TrialFunction(element)f = Source(element, mesh)a = dot(grad(v), grad(u))*dxm = v*u*dxL = v*f*dx x = Vector() b = assemble(L, mesh) A = assemble(a, mesh) M = assemble(m, mesh) z = b.copy() z.assign(1.0) y = b.copy() y.assign(0.0) #A.mult(b,z)c = z.inner(b)/b.size()y.assign(c)print "type(b) ", type(b)print "type(c) ", type(c)b -= yA.mult(y, z)print "zzzzzzzzzzzzzzz"print z.norm()solve(A, x, b, gmres, amg)b.disp()x.disp()plot(u)u = Function(element, mesh, x)# Save solution to filefile = File("poisson.pvd")file << u# Hold plotplot(u)interactive()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -