📄 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## u(x, y) = 0# du/dn(x, y) = 0## using a discontinuous Galerkin formulation (interior penalty method).__author__ = "Kristian B. Oelgaard (k.b.oelgaard@tudelft.nl)"__date__ = "2007-10-02 -- 2007-10-02"__copyright__ = "Copyright (C) 2007 Kristian B. Oelgaard"__license__ = "GNU LGPL Version 2.1"from dolfin import *# Create mesh and finite elementmesh = UnitSquare(64, 64)element = FiniteElement("Discontinuous 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 problem# Test and trial functionsv = TestFunction(element)u = TrialFunction(element)f = Source(element, mesh)# Normal component, mesh size and right-hand siden = FacetNormal("triangle", mesh)h = AvgMeshSize("triangle", mesh)# Parametersalpha = 4.0gamma = 8.0# Bilinear forma = dot(grad(v), grad(u))*dx \ - dot(avg(grad(v)), jump(u, n))*dS \ - dot(jump(v, n), avg(grad(u)))*dS \ + alpha/h('+')*dot(jump(v, n), jump(u, n))*dS \ - dot(grad(v), mult(u, n))*ds \ - dot(mult(v, n), grad(u))*ds \ + gamma/h*v*u*ds# Linear formL = v*f*dx# Solve PDEpde = LinearPDE(a, L, mesh)u = pde.solve()# Save solution to filefile = File("poisson.pvd")file << u# Plot solutionplot(u, interactive=True)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -