问题描述:该方法适用于流体中静止不动颗粒仿真建模,如多孔介质、过滤等。利用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')
Logo

一站式 AI 云服务平台

更多推荐