所以我在我的硕士论文中使用FEM,并被要求制作一个装配" local"刚度矩阵(每个元素有4个节点,每个节点只有1个自由度)。以下是" local"和"全球"我的分析系统:
因此,假设两个元素的局部刚度矩阵相同,并由下式给出:
我制作了一个脚本,在这个例子中组装了2个元素的刚度矩阵:
def stiff_mat_assemble(mesh, stiff_mat_ele): #stiff_mat_ele is the "local stiffness matrix"
'''
mesh - tuple of the mesh created
mesh[0] is a n*2 array (n - total number of nodes), and stores the coordinates of each node
mesh[1] is a 4*4 array, stores the nodes of each element
'''
global_stiff_mat = np.zeros((mesh[0].shape[0],mesh[0].shape[0])) #Gives a matrix n*n, n being the number of nodes in each direction
for element in mesh[1]: #cycles through all elements
for i in element: #i global
for j in element: #j global
i_index = get_index_int(element, i) #gives the local index of "i"
j_index = get_index_int(element, j) #gives the local index of "j"
global_stiff_mat[i,j] += stiff_mat_ele[i_index, j_index]
return global_stiff_mat
结果是这个全局刚度矩阵:
问题在于我得到了这个矩阵的逆的非常奇怪的值:
Global stiffness matrix Inverse
而且,通过我所读到的,这个矩阵的逆,应该等于原始矩阵:(K ^ -1)^ - 1 = K.这就是为什么我认为我犯了一个错误在那个剧本中,但是我无法弄清楚错误是什么......如果有人可以帮助我,我将非常感激,因为我仍然是一个乞丐! 提前致谢