2

问题陈述:

我有一个由两个节点有限元组成的有限元网格(因此每个有限元(线)由位于其末端的两个节点组成)。我在网格中有几种类型的组件(有限元组)。例如,一个垂直组件由几个从下到上垂直排列的有限元组成,相邻的有限元共享一个公共节点。

我需要获取一个列表列表,其中每个列表都有每个垂直组件的节点 ID(节点号),从下到上排序。

我所拥有的:我有两个列表列表:并且nodes具有以下结构:elements nodeselements

nodes = [[node_ID1, X1, Y1, Z1],[node_ID2, X2, Y2, Z2], ...]]
elements = [[element_ID1, nodeID_a, nodeID_b],[element_ID2, nodeID_b, nodeID_c], ...]]

我还有另外两个称为列表的列表nodesVelementsV它们分别代表节点和元素的子集样本:

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

任何想法如何为数千个节点网格执行此操作?

4

0 回答 0