问题陈述:
我有一个由两个节点有限元组成的有限元网格(因此每个有限元(线)由位于其极值中的两个节点组成)。我在网格中有几种类型的组件(有限元组)。因此,例如,垂直分量由从下到上垂直对齐的几个有限元组成,相邻的有限元共享一个公共节点。
我需要获取一个列表列表,其中每个列表都有每个垂直组件的节点ID(节点号),从下到上排序。
我拥有的:
我有两个列表列表:nodes
和elements
nodes
和elements
具有以下结构:
nodes = [[node_ID1, X1, Y1, Z1],[node_ID2, X2, Y2, Z2], ...]]
elements = [[element_ID1, nodeID_a, nodeID_b],[element_ID2, nodeID_b, nodeID_c], ...]]
我还有另外两个名为nodesV
和elementsV
的列表,它们分别代表节点和元素的子集样本:
nodesV = [[node_IDa, node_IDb, node_IDc],[ ....]]
elementsV = [[element_IDa, element_IDb, element_IDc],[ ....]]
这两个列表分别代表所有垂直组件的节点和元素。
我需要什么: 基于以上数据,我需要构建一个列表列表,其中每个列表包含每个垂直组件的有序节点ID:
desired_list = [[first nodeID of vertical component 1, ...., last nodeID],[first nodeID of vertical component 2, ...., last nodeID], ...]]
实施例: 让我们假设我们在网格中只有两个组件,每个组件只由一个元素组成,一个是垂直的:
nodes = [[1, 0, 0, 0], [2, 1, 0, 0], [3, 1, 0, 1]]
elements = [[1, 1, 2], [2, 1, 3]]
nodesV = [[1,3]] #each list can only contain 16 elements
elementsV = [[2]]
所以desired_list = [[1,3]]
如何为数千个节点网格做到这一点?