+ -
当前位置:首页 → 问答吧 → 有限元格式数据文件中点的编号错误,如何修正最有效

有限元格式数据文件中点的编号错误,如何修正最有效

时间:2010-08-11

来源:互联网

本帖最后由 hbsld 于 2010-08-11 13:40 编辑

我写了一个程序来实现从一个有限元格式数据文件中读取点和三角单元的信息。但是这个文件的点的编号是乱的,没有任何规律。
有限元数据格式如下:
先是点的信息
p_num x y z

单元的格式如下
e_num p_num1 p_num2 p_num3
这里单元里面记录的是单元编号和组成单元的三个点的编号。点的编号是按逆时针顺序给出的,起点无所谓。

用图形表示如下:
下载 (13.39 KB)
错误编号
2010-08-11 11:26


我想要的结果是:
下载 (12.82 KB)
想要的结果
2010-08-11 11:26


我现在做的思路是用两个循环, 如果单元中点的编号和当前点的编号相等,就把点的编号统一改变。
  1. for(i=0;i<num_node;i++){
  2.      for(j=0;j<num_ele; j++){
  3.           for(k=0;k<3;k++){
  4.                if(eles(j, k) == nodes(i)){
  5.                   eles(j, k) = i
  6.                }
  7.           }
  8.      }
  9.      nodes(i) = i
  10. }
复制代码
但这种做法效率不高,对4万多个点、8万多个单元的网格来说,这一步要花3分钟左右才能完成。

希望各位指点一下,看有没有比较好的方法来提高转换效率。


ps:楼下说没看懂,看来是我没有表述清楚。
我这里在解释一下:
没有圆圈的数字是点的编号,有圆圈是三角单元的编号。
如第一个图里面三角单元1由点:1、3、17组成。
但是我希望把点的编号改变成连续的一个序列,即变成图2里面的编号。
这样,三角单元1的点就是:1、2、5了。
不知道这样解释清不清楚。

作者: hbsld   发布时间: 2010-08-11

我愚钝,看了两遍竟然没看懂。

作者: lenky0401   发布时间: 2010-08-11