我正在尝试使用FEM解决对流扩散问题,但出现此错误:
float' object is not subscriptable.
这是代码的一部分。请看一下。谢谢
r_diff = kappa / dx**2
r_adv = 0.5 * U / dx
for i in range(1, N_nodes_CG - 3):
K[i, i - 1] = r_diff + r_adv
K[i, i] = -2 * r_diff
K[i, i + 1] = r_diff - r_adv
RHS[i] = 0
RHS[0] = 0
K[0, 0] = (RHS[0]-x_nodes[0])/(RHS[1]-x_nodes[0])
K[0, 1] = (x_nodes[1]-RHS[0])/(x_nodes[1]-x_nodes[0])
RHS[-1] = CE
K[-1, -2] = (x_nodes[-1] - RHS[-1]) /(x_nodes[-1]-x_nodes[-2])
K[-1, -1] = (RHS[-1] - x_nodes[-2])/(x_nodes[-1]-x_nodes[-2])
Mass_full = mass_matrix(x_nodes)
Mass = Mass_full[1:-3,1:-3]
K = np.diag(1. / dx[:-1] + 1. / dx[1:] , k=0) \
- np.diag(1. / dx[1:-1] , k=-1) \
- np.diag(1. / dx[1:-1] , k=1)
for node in range(1, N_nodes_CG - 1):
phi_i = hat_function(node, x_nodes)
integrand = lambda x : f(x) * phi_i(x)
RHS[node-1] = simpsons_rule(x_nodes[node-1], x_nodes[node+1], integrand, 2 )
RHS[0] = RHS[0] - (uL * 1/dx[0] * (-1/dx[0]))*dx[0]
RHS[-1] = RHS[-1] - (uR * (-1/dx[-1]) * (1/dx[-1]))*dx[-1]
D = -K + Mass
u = sl.solve(D, RHS)
错误:
float' object is not subscriptable