网格间的插值
2019-03-29 本文已影响0人
马鹏飞_47c5
网格间的插值
这个例子展示了如何在两个不同的有限元空间之间插值。插值暂且不支持并行运算。 见 https://bitbucket.org/fenics-project/dolfin/issues/162 。
首先,导入dolfin
和 matplotlib
这两个包:
from dolfin import *
import matplotlib.pyplot as plt
然后,我们创建两套网格。在这个例子中,被创建的两套网格都是在单位正方形上的:
mesh0 = UnitSquareMesh(16, 16)
mesh1 = UnitSquareMesh(64, 64)
每一套网格上都可以生成一个有限元空间。不妨让粗糙网格上的是线性元,戏网格上的是三次元。
P1 = FunctionSpace(mesh0, "Lagrange", 1)
P3 = FunctionSpace(mesh1, "Lagrange", 3)
我们可以将函数 :
v = Expression("sin(10.0*x[0])*sin(10.0*x[1])", degree=5)
在空间上插值成
:
v3 = Function(P3)
v3.interpolate(v)
接着又把 在
上插值成
:
v1 = Function(P1)
v1.interpolate(v3)
最后我们可以用plot
函数看看被插值出来的和
:
plt.figure()
plot(v3, title='v3')
plt.figure()
plot(v1, title='v1')
plt.show()
2019-03-29