edem颗粒替换_EDEM快速填充颗粒的方法

2ff34e647e2e3cdfd8dca593e17d9b0a.png

利用离散元方法做仿真实验的过程中,所用的模型并非都是单一的颗粒体,很多时候要用到颗粒群模型。小体积的模型可以用聚合法将多个颗粒填充在颗粒模板里面,从而组成所需要的非规则模型。然而,大体积的模型通过聚合法逐个布置颗粒位置显然是工作量相当大的一种做法。本文简介两种快速生成颗粒群的方法,以供交流学习。

一种利用fluent中udf库文件进行快速填充的方法,这种方法针对结构化网格适用性很强,可以很方便控制颗粒粒径,而对于非结构化网格就相对很尴尬,粒径不好控制。

一、快速填充模型

基本思路建立模型,划分网格。利用网格前处理软件对模型区域划分网格,另存为“.msh”文件。(网格划分软件Gambit、ICEM CFD、Ansys等)

Fluent加载udf库文件,获取网格坐标信息。将生成的.msh导入fluent,加载udf库文件,编译源文件CalcRadius.c,最后执行CalcRadiusVolume,会在文件夹里面生成point.txt网格坐标文件。

对网格坐标信息进行编辑,准备颗粒工厂dll文件。将point.txt里面的数据粘贴进Block_Factory_Data.txt文件,覆盖原来数据。

进入edem设置模型参数,并在Factory面板加载通过VC++编译好的BlockFactory_x64.dll文件。

Edem中进行快速填充。进行仿真填充。

(如需利用填充好的颗粒模型做类似三轴应力压缩、切割、破碎实验,在后处理面板导出填充好的模型即可使用,此时请务必将时间置0)

操作步骤

下面以一个立方体为例进行操作说明:

本文利用Ansys workbench进行建模,划分网格。26f849509d6be3f6ff95b95387aa4ad9.png关于EDEM中快速填充一定区域的操作步骤简介

建模与网格划分

在Component Systems找到Mesh模块,拖动到右侧区域,然后双击Geometry模块。7c6188474519176a7444fc971fb44dd7.png关于EDEM中快速填充一定区域的操作步骤简介

建立一个40x40x20mm的立方体。之后保存,打开meshing模块。820a1ec13cceff8068c63b35d9d7c756.png关于EDEM中快速填充一定区域的操作步骤简介

Meshing模块中左侧单击mesh,在下方明细表中选择Fluent求解器,CFD特性,并设置最大、最小网格尺寸都为4mm,之后对模型进行自动网格划分,生成结构网格;

导出msh文件

在Geomtry里点击实体,设置模型材料为fluid,导出msh文件。720d0dd0a8d3c314526cdcd58508646e.png关于EDEM中快速填充一定区域的操作步骤简介

编译接口文件

打开GUI_compilation.exe,设置相应版本d427ff821884d19218c5c25f9668be8c.png1551880388956

加载耦合接口文件

打开fluent,依次选择file->Read->Journal..,载入“load_edem_coupling.jou”(耦合2.0接口,耦合1.0接口依次选择Define->User Defined->Fuctions->Complied载入udf库文件路径)44dd396870e528b3175a71cedd67b0a6.png关于EDEM中快速填充一定区域的操作步骤简介

编译udf文件

依次选择file->Read->Mesh,读入msh文件,并对.c的udf文件进行编译。User Defined->Functions->Compiled->add,载入CalcRadius.c文件,点Build,在信息提示窗口无错误提示下最后Load。5ac440f82e03af486e839584684b293f.png155192305598327a52e12d685a72c07b3bfec67c9f8da.png关于EDEM中快速填充一定区域的操作步骤简介

计算坐标信息

在User Defined面板点Execute on Demand,在弹出的窗口里选择CalcRadiusVolume,执行后会在CalcRadius.c文件夹中生成一个point.txt文件,里面便是网格的坐标信息。如下图。4c1fd6dc305ff652c9d222033f848b78.png关于EDEM中快速填充一定区域的操作步骤简介18fd151f9a3c7751a419aac976504bd3.png关于EDEM中快速填充一定区域的操作步骤简介

修改point.txt

对point.txt文件里最后一列数字全部替换为1.(最后一列是颗粒粒径比例)8ddbb69af8780d259881163f5e51d761.png关于EDEM中快速填充一定区域的操作步骤简介

拷贝数据

将point.txt中的坐标信息拷贝在Block_Factory_Data.txt中,其中第一行是颗粒填充开始时间,第二行是总体的颗粒数量,也就是网格坐标信息数量。1fe00998c6fd4a9cdb71ee7551c79f87.png关于EDEM中快速填充一定区域的操作步骤简介

EDEM仿真

新建一个EDEM文件,在几何体面板导入.msh文件,在全局面板设置颗粒材料跟几何体材料参数,在颗粒面板设置粒径大小(半径2 mm),在颗粒工厂面板读入Block_Factory_Data.dll文件。最后设置风格单元大小及时间步长进行计算,填充完成效果如上图。需要特别注意的问题:

1.txt文件里颗粒名称(第一列的字符)要与颗粒面板中设置的颗粒名称相同。

2.需要在EDEM里面设置自定义颗粒插件的文件夹。虽然把dll文件放入项目所在的文件夹也能导入插件,但是在运行的时候会出错,直接退出。

3.注意划分的网格的默认单位是米,因此在导入.msh模型的时候单位应当选择米,这一点与导入CAD模型有所差异(此处巨坑!!)。主要网格尺寸、edem导入尺寸、颗粒尺寸的单位。

4.直接打开Fluent和从Ansys里的Fluent模块打开并不一样,应当直接打开。(此处也巨坑)

5.如果没生成颗粒,或者生成颗粒瞬间炸开了,将仿真的Time Step 改小点!(此处也巨坑)在一定的仿真条件下,粒子的速度可能会变得过大,导致周围粒子的行为不规律:例如,仿真时间步长过大。有两种方法可以帮助解决这个问题。粒子速度可以限制在指定的极限,也可以从模拟中去除超过该极限的粒子。粒子速度和角速度可以分别处理。

制作颗粒模板

导出xml模板文件xml文件是记录仿真配置和状态的文档,之所以要仿真时间归0,因为如果不是0,会包含很多仿真的运算结果,而我们只是单纯的想填充颗粒。

仿真时间归0,切换到分析选型卡,File->Export,选择输出Simulation Deck文件,输出文件的后缀名需为.xml。Export Options 里面只勾选Particle Data,点击OK完成数据导出。

0360ac9962687985e1a5bf608b961a12.pngc4e04ea5d41185b6cb35f38bdacd6554.pngExport Options

导出结果数据文件如果在Tools->Options里面改过单位的话,记得改回国际单位制,引入貌似导入后默认是国际单位制的。

1b94d865c3861432a392d8ececa85212.png

仿真时间归0,切换到分析选型卡,File->Export,选择输出Result Data文件,设置Filename(图中为0512.csv),General选项卡中 Time Steps 选择从1到1(这里1是仿真完成的时间)。

ae7b8816055b9bfdcdf96b79459687f5.png

在Queries选项卡里设置需要导出的内容。点击图中+号增加导出项目;在下方选择导出变量,导出变量有分量的在下方的Component里面选取;右侧Type里面选择particle;选择完成后点击左下角Export导出数据。

dbb850072cec82070e04406492a61419.png

修改.xml文件

在EXCEL里面将数据按照下述格式进行组合,最终效果见图

268291d127352239c38dec772703c0a0.png

将数据复制粘贴到上述的.xml格式文件中,

修改前

cdb76b62f98943489d636bdf639b0908.png

修改后

da52cb508d199584ea00769629832258.png

使用方法

在设置颗粒的时候使用快捷键Ctrl+i,选择上述的.xml文件即可。

二、颗粒替换建立颗粒模板,用颗粒填充,(利用模型体积除单个颗粒体积得到所要生成的颗粒数量)导出位置信息并规整格式。

Api读取颗粒模板数据。

替换原始颗粒为新颗粒群,此时用到ParticleReplacement_v2_x64.dll(已编译完成)文件。

Bonding 模型触发产生粘结。

以上两种方法思路有所同,又有所不同。第一种方法利用Api实现快速填充,适合一些关于大块物料破碎类仿真。 第二种方法利用Api实现单个颗粒快速替换为颗粒群,适合小块物料破碎类仿真。

参考资料

海基杨格

  • 8
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
edem颗粒工厂API静态生成代码是指通过调用edem颗粒工厂API接口并采集数据后,使用静态生成代码的方法将这些数据转化为静态的代码形式。 在edem颗粒工厂API中,用户可以通过调用不同的接口获取颗粒工厂的相关信息,如颗粒工厂的设备状态、产量统计、生产参数等。API接口会返回相应的数据,这些数据可以是JSON、XML等格式。 静态生成代码是指将动态获取的数据生成为静态的代码形式,这样可以方便地在不需要实时更新数据的场景下使用。生成的代码可以是编程语言的代码,如Python、Java等,也可以是HTML、CSS等前端页面的代码。 通过静态生成代码,用户可以在不需要频繁请求API接口的情况下,将颗粒工厂的相关信息应用到自己的项目中。这样可以提高代码的效率和可维护性,同时减轻了API接口的负载压力。 具体来说,生成代码的过程可以分为以下几个步骤: 1. 调用edem颗粒工厂API接口,获取所需的数据。 2. 解析API返回的数据,将其转化为内存中的数据结构。 3. 根据需求,将数据结构转化为静态的代码形式。比如,将数据生成为Python中的类、函数或HTML中的标签、样式等。 4. 将生成的代码保存到文件或直接在程序中使用。 总的来说,edem颗粒工厂API静态生成代码对于将颗粒工厂的数据集成到自己的项目中非常有用。通过这种方式,可以方便地获取并利用颗粒工厂的数据,提升项目的效率和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值