我自愿帮助某人将有限元网格从一种格式转换为另一种格式(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 …Run Code Online (Sandbox Code Playgroud)