从CalcluliX输入(.inp)文件读取网格。
ccxmeshreader的Python项目详细描述
CCX读卡器
简介
从CalcluliX输入(.inp
)文件读取网格。在
仅支持定义网格的有限关键字集。有关详细信息,请参见Supported Keywords。在
使用
fromccxmeshreaderimportread_meshmesh=read_mesh('path/to/some.inp')
支持的关键字
*节点
节点及其坐标将被解析并添加到由node_coordinates_by_number
键中的read_mesh
返回的字典中。在
node_coordinates_by_number
键包含一个字典,其中key是节点号,value是坐标,作为一个三元素元组,具有浮点值。在
例如,给定以下*NODE
定义:
mesh=read_mesh('example.inp')print(mesh['node_coordinates_by_number'])
{
1: (1.0, 0.0, 0.1),
2: (3.0, 1.0, 2.0),
3: (0.9, 5.0, 7.0)
}
当前不支持节点集,并且忽略可选的NSET
参数。在
*元素
元素及其关联的节点被解析并添加到由element_dict_by_type
键中的read_mesh
返回的字典中。在
element_dict_by_type
键包含一个字典,其中key是元素类型,value是另一个字典,其中key是元素编号,
value是与元素相关联的节点号列表。在
例如,给定以下*ELEMENT
定义:
*ELEMENT, TYPE=C3D20R, ELSET=Eall
1, 1, 2, 3
2, 4, 5, 6
mesh=read_mesh('example.inp')print(mesh['element_dict_by_type'])
{
'C3D20R': {
1: [1, 2, 3]
2: [4, 5, 6]
}
}
支持以逗号,
结尾的连续数据行。例如:
*ELEMENT, TYPE=C3D20R, ELSET=Eall
1, 1, 2, 3,
4, 5, 6
2, 7, 8, 9
mesh=read_mesh('example.inp')print(mesh['element_dict_by_type'])
{
'C3D20R': {
1: [1, 2, 3, 4, 5, 6]
2: [7, 8, 9]
}
}
如果提供了ELSET
参数,那么元素集将被添加到read_mesh
网格中返回的element_set_by_name
字典中,并带有相应的元素编号。在
例如,根据上面的*ELEMENT
定义:
mesh=read_mesh('example.inp')print(mesh['element_set_by_name'])
{
'Eall': {1, 2}
}
*ELSET
元素集定义被解析并添加到read_mesh
在element_set_by_name
键中返回的字典中。在
element_set_by_name
键包含一个字典,其中key是元素集的名称,value是一组元素编号。在
例如,给定以下*ELEMENT
和*ELSET
定义:
*ELEMENT, TYPE=S4, ELSET=E1
1, 1, 2, 3,
4, 5, 6
2, 7, 8, 9
*ELSET, ELSET=E2, GENERATE
1, 4
*ELSET,ELSET=E3
E2, 5, 6
mesh=read_mesh('example.inp')print(mesh['element_set_by_name'])
{
'E1': {1, 2},
'E2': {1, 2, 3, 4}
'E3': {1, 2, 3, 4, 5, 6}
}
可选的GENERATE
参数与start、end和step有关。在
*包括
读取由*INCLUDE
关键字指定的文件,但当前仅限于相对文件路径,并且假定与传递给read_mesh
的路径相关。在
还不支持递归includes(即先前包含的文件中的*INCLUDE
语句)。在
接近
这个库采用的方法是逐行读取while
循环中的.inp
文件,直到没有剩下的行,然后将组成网格的节点和元素收集到字典中。在
它不使用将.inp
文件解析为抽象语法树的中间步骤,因为这样做成本很高,而且可能涉及到解析库。在
因此,ccxmeshreader
可以被视为重量轻、性能优良。在
局限性
不支持关键字行的延续。在
例如,尝试读取以下.inp
文件:
*ELEMENT, TYPE=C3D20R,
ELSET=Eall
引发ccxmeshreader.ParserError
。在
单元测试
单元测试包含在tests/
目录中,可以使用以下命令运行:
python -m unittest discover tests "*_test.py"
- 项目
标签: