Python fenics中组合双线性形式的维数
我是stackoverflow和fenics的新手。我最近使用env来计算另一个文件的输入代码 我想计算有限元并保存组合矩阵,比如在矩形域上Python fenics中组合双线性形式的维数,python,assemble,fenics,Python,Assemble,Fenics,我是stackoverflow和fenics的新手。我最近使用env来计算另一个文件的输入代码 我想计算有限元并保存组合矩阵,比如在矩形域上D=(-1,1)*(-2,2)。我在x和y方向上设置离散点的数量,设置nx,ny=9,即2*10*10三角形 当我计算矩阵并组装它们时,它们的大小是(nx+1)*(ny+1)*(nx+1)*(ny+1),而不是(nx+1)*(ny+1) MWE: 谢谢你的帮助,谢谢 啊,我在推理上犯了错误。上面的代码是正确的,并且给出了正确的结果。生成的FE当然是100,没
D=(-1,1)*(-2,2)
。我在x
和y
方向上设置离散点的数量,设置nx,ny=9
,即2*10*10
三角形
当我计算矩阵并组装它们时,它们的大小是(nx+1)*(ny+1)*(nx+1)*(ny+1)
,而不是(nx+1)*(ny+1)
MWE:
谢谢你的帮助,谢谢 啊,我在推理上犯了错误。上面的代码是正确的,并且给出了正确的结果。生成的FE当然是
100
,没错。但是为了计算矩阵,我现在有长度为100
的向量相互相乘,从而得到100*100
from dolfin import *
import numpy as np
# Mesh and function space
# mesh (generates 2*nx*ny number of triangles) and function space
# number of FEM = (nx+1)*(ny+1) = 100
# matrixSize = (nx+1)*(ny+1) * (nx+1)*(ny+1) = 100*100
nx = 9
ny = 9
# mesh dims
x = [-1, 1]
y = [-2, 2]
mesh = RectangleMesh(Point(x[0], y[0]), Point(x[1], y[1]), nx, ny)
V = FunctionSpace(mesh, "CG", 1)
# Time variables
dt = Constant(0.3)
g_expr = 'alpha'
g = Expression(g_expr , alpha=0.0, degree=2)
u0 = interpolate(g, V)
# Variational problem
u = TrialFunction(V)
v = TestFunction(V)
f = Expression('-exp(-(pow(x[0], 2)+pow(x[1], 2)))', degree=2)
a = u*v*dx + dt*inner(grad(u), grad(v))*dx
L = u0*v*dx + dt*f*v*dx
bc = DirichletBC(V, g, "on_boundary")
A = assemble(a)
print(A.array())
# print the sizes of row and col space of assembled matrix A (both = 100)
print((len(A.array()), len(A.array()[0])))