-1

我们是一些工程师学生,他们必须使用有限元来计算模拟 - 我们的项目是找到对象边缘的所有节点,并将它们与定义的线进行比较我们没有 python 经验,一直在阅读关于一周,但没有运气,所以现在我们正在尝试写这篇文章。我们的原始日期看起来像这样

$#   eid     pid      n1      n2      n3      n4      n5      n6      n7      n8
      1       1       1      76      77       2
      2       1       2      77      78       3
      3       1       3      78      79       4
      4       1       4      79      80       5
      5       1       5      80      81       6
      6       1       6      81      82       7
      7       1       7      82      83       8
      8       1       8      83      84       9
      9       1       9      84      85      10
     10       1      10      85      86      11
     11       1      11      86      87      12
     12       1      12      87      88      13
     13       1      13      88      89      14
     14       1      14      89      90      15
     15       1      15      90      91      16
     16       1      16      91      92      17

我们需要做的是搜索在第 3 到第 6 列中出现 2 或 3 次的数字,并将它们打印到单独的文本文档中。然后我们需要在同一个文本文档中找到这些节点的坐标,它们看起来像这样

   4441       1    4381    4400    4529    4530
   4442       1    4394    4393    4536    4536
   4443       1    4393    4407    4535    4536
*NODE (this is the end of the columns with nodes)
$#   nid               x               y               z      tc      rc
      1           0.000           0.000     -35.0448952
      2       1.0216124  -1.0579003e-12     -35.0447197
      3       2.0431936           0.000     -35.0445557
      4       3.0647054  -3.6848050e-13     -35.0442314
      5       4.0861325           0.000     -35.0437469
      6       5.1074324           0.000     -35.0432587
      7       6.1286263           0.000     -35.0426292
      8       7.1495924           0.000     -35.0419121
      9       8.1704435  -4.7529106e-14     -35.0411606
     10       9.1909819           0.000     -35.0402603
     11      10.2113619           0.000     -35.0393677

现在有了所有的边缘坐标,我们可以将模拟的边缘与所需的边缘进行比较。

我们不想要最终的解决方案,因为我们想学习用 python 编程,并且我们必须能够在考试中解释这一点,我们希望有人能指导我们找到正确的文献或我们可以玩的基本脚本周围,​​因为我们在这个论坛上没有找到任何符合我们需求的东西

先感谢您

4

1 回答 1

0

我建议从python 教程开始——它不会花那么长时间。

无论如何,希望这会给您一些如何进行的想法。

这绝不是一个可行的解决方案,也不会进行任何错误检查,但它应该引导您学习 Python 的各个部分。

我正在使用字典来计算每列的数量(我在这里只完成了 column3)。

# open the file
col3_counts = {}
txtfile = open('txtfile', 'r')

# reading 2 types of data from the file: the 'nodes' and the 'coordinates'
end_of_nodes = False

# read each line from the file
for line in txtfile:
    if line.startswith('*NODE'):
        end_of_nodes = True

    if not end_of_nodes:
        # read the node column
        cols = line.split()  #  cols[0] = eid, cols[1] = pid, .... 

        # get the value of column3 
        col3 = cols[4]

        if col3 not in col3_counts:
            col3_counts[col3] = 0
        else:
            col3_counts[col3] += 1

    else:
        # now read the coordinates using .split()
        # ... 

        # determine those in column 3 with a count > 2
        for num, count in col3_counts.items():
            if count > 2:
                # do something here

希望这可以帮助。

于 2013-09-26T10:00:20.457 回答