我正在尝试在Fortran中编写一个有效的子例程,以查找数组中所有重复顶点的列表。公差(使用参数paraEps
固定)对应于我在其中寻找重复点的每个点周围的半径。用于有限元分析的顶点和定义以及每个组件的范围将取决于将在其上应用方法的3D几何形状(我可以期望,组件[-10^6,10^6]
中的值可以以{ {1}}。
目前,以下代码在大约15万个顶点上运行,但是将在1-3M个顶点的数组上使用。
示例:
一组顶点。在这里,我只使用一些节点列表。就我而言,节点位于3D空间中,没有特定分布。
10^-6
结果列表(0表示顶点没有重复),公差为 verticesArray =
[ 0 0 0,
0 1 0
1 0 0
1 0 0
1 1 1
0 1 0
1 2 3
1 2 3
0 1.0001 0
0 1.1 0
1 2 4]
。
10^-3
我写的第一个版本工作正常,但仍然很慢,尤其是顶点数很大。
请注意,list = [ 0 1 2 2 0 1 3 3 1 0 0]
是一个整数,我可以指定从数组的开头开始搜索。
MWE:
startItem
其他要求:如果您有关于此类算法的书籍参考,那么它可能会有用。