我自愿帮助某人将有限元网格从一种格式转换为另一种格式(i-deas *.unv 到 Alberta)。我已经使用 NumPy 对网格进行了一些额外的整形,但是在将原始文本文件数据读取到 NumPy 数组中时遇到了问题。到目前为止,我已经尝试过 genfromtxt 和 loadtxt 没有成功。
一些细节:
1) 所有组都由各自行的页眉和页脚标志“-1”分隔。
2) NODE 组在其自己的行上有一个标题“2411”。我只想从该组中读取交替行,用 4 个整数跳过每一行,但用 3 个 Fortran 双精度数字读取该行。
3) ELEMENT 连接组在其自己的行上有一个标题“2412”。所有数据都是整数,只需要读取前 4 列。由于缺少 2 和 3 节点元素的值,NumPy 数组中会有一些空槽。
4)“2477”节点组我想我可以使用正则表达式来处理自己,找到要读取的行。
5) 真实的数据文件将有大约 100 万行文本,所以我非常希望尽可能将其矢量化(或者 NumPy 为快速读取内容所做的任何事情)。
对不起,如果我提供了太多信息,谢谢。
下面的行是 *.unv 文本文件格式的部分示例。
-1
2411
146303 1 1 11
6.9849462399269246D-001 8.0008842847097805D-002 6.6360238055630028D-001
146304 1 1 11
4.1854795755893875D-001 9.1256034628308313D-001 3.5725496189239300D-002
146305 1 1 11
7.5541258490349616D-001 3.7870257739063029D-001 2.0504544370783115D-001
146306 1 1 11
2.7637569971086767D-001 9.2829777518336010D-001 1.3757239038663285D-001
-1
-1
2412
9 21 1 0 7 2
0 0 0
1 9
10 21 1 0 7 2
0 0 0
9 10
1550 91 6 0 7 3
761 3685 2027
1551 91 6 0 7 3
761 2380 2067
39720 111 1 0 7 4
71854 59536 40323 73014
39721 111 1 0 7 4
45520 48908 133818 145014
-1
-1
2477
1 0 0 0 0 0 0 3022
PERMANENT GROUP1
7 2 0 0 7 3 0 0
7 8 0 0 7 7 0 0
7 147 0 0 7 148 0 0
2 0 0 0 0 0 0 2915
PERMANENT GROUP2
7 1 0 0 7 5 0 0
7 4 0 0 7 6 0 0
7 9 0 0 7 11 0 0
-1