问题描述:该方法适用于流体中静止不动颗粒仿真建模,如多孔介质、过滤等。利用EDEM创建颗粒堆积模型,然后使用Spaceclaim软件进行颗粒模型重建,以及流体域抽取。SpaceClaim重建颗粒脚本代码在文章最后。
第一步:使用三维建模软件如soldiworks或者ansys内的SCDM创建流体域,我在此展示使用的是ANSYS内的Spaceclaim软件。
示例:打开ANSYS Workbench,使用“流体流动(带有Fluent网格划分功能的Fluent)”模块,在几何结构内创建流体域模型。
如图所示,直径为40mm高为100mm的圆柱体,并对上下表面及侧面命名为inlet、outlet及wall。
第二步,为EDEM生成边界网格
示例:对上述模型进行网格划分,然后进入fluent内,将进入口设为壁面,再通过文件>导出>边界网格导出并命名为BC.msh
第三步,在EDEM内创建颗粒
第四步,导出颗粒坐标及直径,编辑为txt文本(文本中四列分别为颗粒坐标x y z以及颗粒半径的0.99,之所以对颗粒半径进行0.99处理是因为颗粒接触会导致网格划分失败,这个0.99也不是确定,需要根据你的网格参数进行调整)
第五步,在Spaceclaim软件脚本窗口,将spaceclaim-particle-apl中的代码复制粘贴并运行,需要注意修改代码中的单位以及文件路径
第六步,将所有颗粒创建为新组建,使用“组合”命令,在圆柱体中对所有颗粒进去去除
网格划分展示
def read_coordinates_from_file(filename):
coordinates = []
with open(filename, 'r') as file:
for line in file:
x, y, z, radius = map(float, line.split())
coordinates.append((x, y, z, radius))
return coordinates
def create_spheres_from_file(filename):
# 读取坐标和半径
coordinates = read_coordinates_from_file(filename)
#注意单位是否正确:毫米MM,微米UM
for coord in coordinates:
x, y, z, radius = coord
# 创建球体的中心点和半径
center = Point.Create(UM(x), UM(y), UM(z))
radius = UM(radius)
# 使用SphereBody.Create方法创建球体
SphereBody.Create(center, radius, ExtrudeType.None)
#颗粒的半径需要在excel进行缩放,避免因颗粒间的接触导致网格无法生成
# 使用指定的TXT文件生成球体,需要核对文件路径是否正确,如果出现报错,将路径放在桌面的一个文件夹中(可能是路径太远了,但是这种方法可以解决)
create_spheres_from_file('C:\Users\dell\Desktop\Thread-Grease-DEDM-fluent\particles-position-diameter.txt')