fenics 中组装双线性形式的维数

问题描述

我是 stackoverflow 和 fenics 的新手。我最近使用 env 来计算另一个文件的输入代码

我想计算有限元并保存组合矩阵,比如在矩形域 D=(-1,1)*(-2,2) 上。我设置了 xy 方向的离散点数,设置了 nx,ny=9,即 2*10*10 三角形。

当我计算矩阵并组合它们时,它们的大小为 (nx+1)*(ny+1)*(nx+1)*(ny+1) 而不是 (nx+1)*(ny+1)

MWE:

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])))

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)