This notebook shows some examples for two-dimensional meshes as used in the Finite Element Method (FEM) for spatial discretization. The meshes are generated by FEniCS, an open-source framework for numerical solution of PDEs.
import dolfin
import mshr
import matplotlib.pyplot as plt
%matplotlib inline
def plot_mesh(mesh):
fig = plt.figure(figsize=(10,10))
fig = dolfin.plot(mesh)
plt.xlabel(r'$x$ / m')
plt.ylabel(r'$y$ / m')
mesh = dolfin.RectangleMesh(dolfin.Point(-2,-2), dolfin.Point(2, 2), 20, 20, "right/left")
plot_mesh(mesh);
domain = mshr.Rectangle(dolfin.Point(-4,-4), dolfin.Point(4,4))
mesh = mshr.generate_mesh(domain, 20)
plot_mesh(mesh);
domain = mshr.Rectangle(dolfin.Point(0, 0), dolfin.Point(3,4)) + \
mshr.Rectangle(dolfin.Point(3, 1.5), dolfin.Point(3.5, 2.5)) + \
mshr.Rectangle(dolfin.Point(3.5, 0), dolfin.Point(6, 4))
mesh = mshr.generate_mesh(domain, 20)
plot_mesh(mesh);
domain = mshr.Rectangle(dolfin.Point(-4,-4), dolfin.Point(4,4)) - \
mshr.Rectangle(dolfin.Point(-.75,-.75), dolfin.Point(.75,.75))
mesh = mshr.generate_mesh(domain, 20)
plot_mesh(mesh);
domain = mshr.Rectangle(dolfin.Point(-4,-4), dolfin.Point(4,4)) - \
mshr.Circle(dolfin.Point(0,0), 1)
mesh = mshr.generate_mesh(domain, 20)
plot_mesh(mesh);
domain_vertices = [dolfin.Point(0.0, 0.0),
dolfin.Point(5.0, 0.0),
dolfin.Point(5.0, 0.75),
dolfin.Point(4.5, 0.75),
dolfin.Point(4.0, 1.50),
dolfin.Point(2.0, 1.50),
dolfin.Point(1.0, 0.75),
dolfin.Point(0.0, 0.75),
dolfin.Point(0.0, 0.0)]
domain = mshr.Polygon(domain_vertices)
mesh = mshr.generate_mesh(domain, 20)
plot_mesh(mesh);
Copyright
This notebook is provided as Open Educational Resource. Feel free to use the notebook for your own purposes. The text is licensed under Creative Commons Attribution 4.0, the code of the IPython examples under the MIT license.