ProCast导出节点应力数据并格式化

ProCast导出ci_data.csv

打开visual-viewer,加载计算结果文件。

注意导出的数据是当前步数下的计算数据,可以改变步数实现不同步数下数据的导出。

在工具栏右键打开Selection工具条,切换到Node模式。

image-20221031180315074

将导出模型的所有节点选上。节点选中无误后,在视图窗口右键选择PropertiesCtrl+A选中弹出窗口左侧的所有节点后,点击保存图标,将默认的ci_data.txt文件名改为ci_data.csv方便后续操作。

用记事本打开导出的数据,如下所示,

可以看出此时数据很冗余,并不能供我们分析,接下来需要将其format成我们需要的格式。

注意,这种方法每次只能导出10000个节点数据,超过单次上限的情况需要使用Filter分批导出。

Excel格式化

用Excel打开我们导出的ci_data.csv文件,参考格式化思路如下:

  • 选中第一列,数据/分列->分隔符号->空格。

  • 全选后,数据/删除重复值。

  • 选中如下所示行列(第1、4行、第1列),删除。

  • 新建一列,命名为Effective Stress,当列使用公式进行快捷赋值填充。

  • 将生成的列进行复制,只保留值,再删除公式生成的那一列。

    选中第一列,数据/筛选,将单元内容为Effective的行筛选出来后,全选,右键删除行。

  • 删除完成后,将其他数据显示出来,退出筛选。

  • 至此,单个文件格式化完成,内容如下:

如果导出多个文件的话,在完成格式化后,还需将文件进行合并。或者先合并再格式化。

Python脚本格式化

相较于使用Excel表格进行格式化操作,写脚本进行格式化更方便快捷。

procast_ES_format.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import os
import re
import pandas as pd
import numpy as np

filesPath = r"./procast导出应力数据/"
nodeNum = 24154
ESTable = pd.DataFrame(columns = ['x', 'y', 'z', 'Mpa'], index = range(nodeNum))

for fname in os.listdir(filesPath):
with open(filesPath + fname) as f:
content = f.read()
data_txt = re.findall(r'[-+]?\d+(?:\.\d+(?:E[-+]?\d+)?)?', content)
data_list = list(map(float, data_txt))
for i, d in enumerate(data_list):
if i % 5 == 0:
if d % 1 != 0:
print(f"Invalid data in Node {int(d)} !")
ESTable.iloc[int(d) - 1, 0] = data_list[i + 1]
ESTable.iloc[int(d) - 1, 1] = data_list[i + 2]
ESTable.iloc[int(d) - 1, 2] = data_list[i + 3]
ESTable.iloc[int(d) - 1, 3] = data_list[i + 4]
ESTable.to_csv(filesPath + "ES_result.csv")

文件目录结构如下:

导出结果如下:


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!