第 9 章 教程-片剂包衣机

(第一部分)对使用Rocky中默认包含的颗粒内和颗粒间碰撞统计模块的仿真进行设置和处理,并导入自定义的凸颗粒形状。

(第二部分):使用自定义多面体(包线)用户进程形状来定义喷雾区,然后利用该区域的停留时间信息来计算可变性系数(CoV)。分析收集的碰撞统计和接触数据。

9.1. 第一部分:项目设置与处理

9.1.1. 目标

本教程的主要目的是了解如何对使用Rocky中包含的颗粒内和颗粒间碰撞统计模块的仿真进行设置和处理。

  • 我们将在第二部分和第三部分中分析收集的仿真结果和数据。

考虑的场景是对通常用于制药和食品加工行业的片剂包衣操作的性能进行分析。

您将了解如何:

  • 导入自定义颗粒形状

  • 使用原始尺寸比例定义颗粒尺寸

  • 启用收集各种颗粒和接触数据

您将使用这些功能:

  • 模块,包括:

    • Inter-particle Collision Statistics

    • Intra-particle Collision Statistics

  • 自定义多面体导入

9.1.2. 前提条件


重要:  与其他Rocky教程相比,本高级教程包含更少的细节、截图和步骤。

  • 高级教程主要面向的用户不仅更熟悉Rocky用户界面(UI),而且已经非常了解常见设置和后处理任务。

  • 如果您还未达到这种熟悉程度,建议您在开始本教程之前至少先完成教程01~05。


9.1.3. 几何结构

 

本教程中使用的主要几何结构是如上所示的Drum

此外,还将使用另外两种几何结构,包括:

  • Spray_cone(用于创建多面体包线)

  • Tablet(用于创建自定义颗粒形状)

9.1.4. 项目创建

要开始设置本教程,请执行以下操作:

  1. 此处下载dem_tut09_files.zip文件。

  2. dem_tut09_files.zip解压缩至工作目录。

  3. 打开Rocky 2025 R1

  4. 创建新项目。

  5. 将空白项目保存到您选择的位置。

  6. 使用下表中的信息开始设置您的Rocky项目。


    提示:  如果您在这些表格中遇到了不熟悉的设置或过程,请参考Rocky用户手册和/或其他教程(通过入门教程和高级教程),以找到您需要的详细说明。


    步骤数据实体编辑器位置参数或操作设置
    A研究研究Study NameCoater
    BPhysicsPhysics |

    动量

    Numerical Softening Factor0.01 [ - ]

9.1.5. 项目设置

对于Modules步骤,我们将启用收集颗粒的一些附加数据,包括:

  • Inter-particle Collision Statistics | Normal Impact Velocity

    在输出时间步长期间,收集记录的由每个颗粒碰撞产生的,在法线方向上冲击相对速度的meanstandard deviationskewnesskurtosis值。

  • Intra-particle Collision Statistics | Frequency

    收集通过选定颗粒集的代表性颗粒的不同区域测量的collision frequency值。这对于分析颗粒表面上的碰撞非常有用。

  1. 使用下表中的信息来定义您的模块和其他项目设置。

步骤数据实体编辑器位置参数或操作设置
AModulesModulesInter-Particle Collision Statistics(已启用)
Intra-Particle Collision Statistics(已启用)
BModules

﹂Inter-Particle Collision Statistics

Inter-Particle Collision StatisticsNormal Impact Velocity(已启用)
CModules

﹂Intra-Particle Collision Statistics

Intra-Particle Collision Statistics频率(已启用)
DGeometriesImport WallDrum.stlImport Unit设置为“m”
EMotion FramesCreate Motion Frame
FMotion Frames

﹂Frame <01>

FrameNameRotation Motion
Add Motion
开始时间1 [s]
类型旋转
Initial Angular Velocity0, 0, 12 [rev/min]
GGeometries

﹂Drum

壁面Motion FrameRotation Motion⯆
H材料

﹂Default Particles

MaterialUse Bulk Density(已清除)
密度1150 [kg/m3]
I材料Materials Interactions |

Default Particles⯆

Default Boundary⯆

Static Friction0.39 [ - ]
Dynamic Friction0.39 [ - ]
恢复系数0.78 [ - ]
Materials Interactions |

Default Particles⯆

Default Particles⯆

Static Friction0.45 [ - ]
Dynamic Friction0.45 [ - ]
恢复系数0.78 [ - ]
J微粒Create Particle

对于Particles步骤,我们将通过导入一个片剂形状的.stl文件来创建自定义的多面体颗粒集,如下一节所述。

9.1.6. 颗粒组定义

  1. 选择新的<Particle <01>条目,然后从Particle主选项卡中,将Shape定义为Custom Polyhedron

     

  2. Select file to import对话框中,导航到您之前下载的dem_tut09_files文件夹,找到geometry文件夹,选择Tablet.stl文件,然后单击Open

  3. Import File Info对话框中,确保Import Unit被定义为m,然后单击OK

     


注意:  我们刚刚导入的片剂形状是一个完美的凸形。如需了解Rocky如何对导入不完美的凸形形状进行处理,请参考本教程末尾的附录一节。


9.1.7. 原始尺寸比例

对于本教程,因为我们要导入我们自己的自定义形状,所以我们将使用Original Size Scale作为Size Type

Original Size Scale方法允许您使用导入颗粒几何结构的尺寸作为缩放最终颗粒尺寸的基础。

例如:

  • 比例因子为1表示等于原始导入尺寸(100%)。

  • 比例因子为0.5表示等于原始尺寸的一半(50%)。

  • 比例因子为2表示等于原始尺寸的两倍(200%)。

9.1.8. 颗粒组定义

要设置颗粒尺寸,请执行以下操作:

  1. Size子选项卡中,从Size Type列表中选择Original Size Scale

     

  2. 要可视化新创建的颗粒,单击View按钮。出现了一个新的Particles Details窗口,显示了(透明)颗粒几何结构、其几何中心(黄点)和质心(蓝点)。

     

  3. Coloring选项卡中,启用Edges复选框,以在Particle Details视图中查看网格划分。

     


提示:  为了确保对颗粒表面上的属性分布进行良好的分析,请确保使用边旁边具有高分辨率三角形的颗粒。


9.1.9. 入口设置

  1. 使用下表中的信息继续设置您的项目。

    步骤数据实体编辑器位置参数或操作设置
    AInlets和OutletsCreate Volumetric Inlet
    B输入

    ﹂Volumetric Inlet <01>

    Volumetric Inlet | Particles添加行(x1)
    (1) Particle |

    质量

    Particle <01> @ 2.7 [kg]
    Volumetric Region | RegionSeed Coordinates0, -0.1, 0 [m]
    Geometries | Drum(已启用)
    Use Geometries to Compute(已启用)

9.1.10. 接触收集

Rocky中的接触是指在仿真过程中经历了与另一个颗粒碰撞的几何结构或颗粒所在的特定位置。

在处理过程中,Rocky总是计算并利用接触数据。但是为了节省文件空间,您可以选择是否保留它。

对于本教程,我们将启用收集接触数据,以便我们可以在稍后的后处理中分析颗粒的应力分量。

  1. 从Data面板中,选择Contacts,然后从Data Editors面板中,确保选中Contacts选项卡。

  2. 启用Collect Contacts Data复选框。

     

9.1.11. 求解器定义

  1. 现在,使用下表中的信息来定义您的求解器参数。

    步骤数据实体编辑器位置参数或操作设置
    A求解器Solver | TimeSimulation Duration60 [s]
    Solver | GeneralSimulation TargetGPU⯆


注意:  因为本教程中包含凸颗粒,如果您有GPU选项,用它处理会更快。


9.1.12. 设置确认

打开3D View窗口后,您的Data面板和工作区应类似于下图。

 

9.1.13. 仿真摘要

  1. 从Solver实体中,单击Start。

出现Simulation Summary屏幕,然后开始处理。

 


提示:  您可以使用Auto Refresh复选框,以在处理过程中在3D View窗口里查看结果。


 

9.1.14. 结论

这样就完成了本教程的第一部分,其中Rocky可用于设置和处理片剂包衣仿真。

在本教程中,您可以:

  • 启用收集颗粒碰撞统计和接触数据,以供稍后的分析使用。

  • 导入自定义颗粒形状。

  • 使用原始尺寸比例定义颗粒尺寸。

下一步是什么?

  • 如果您成功完成了本教程,那么您就可以进入第二部分,并对该项目进行后处理了。

9.1.15. 附录:凸凹检测

我们在本教程中导入的片剂形状是一个完美的凸形,这意味着它不包含形成凹痕或凹陷的面。

如果检测到哪怕有最小的凹痕或凹陷,Rocky甚至会将大部分凸起的形状归类为凹形。

  • 在凸形形状中,连接任意两个面的任何直线将始终包含在形状之内(a)。

  • 在凹形形状中,连接两个面的类似直线可能有部分落在形状之外(b)。

 

因为Rocky对它归类为凹形的形状使用不同的计算方法,所以十分重要的一点是确保Rocky按照您想要的方式对您的形状进行归类。

如果您想要导入一个不是完美凸形的颗粒形状(但您仍然希望Rocky将它视为凸形),您可以采取以下步骤之一:

  1. 提高您的convex .stl设计然后重新导入Rocky。

    --或者--

  2. 允许Rocky重新绘制形状,以确保它被归类为凸形。

如果Rocky检测到您的凸形形状不完美,它会要求您选择以下选项之一(如图所示):

  1. Keep the shape as is:颗粒将被视为凹形,并将使用基于凹形的计算。

  2. Convert the shape to convex:Rocky将重新绘制不完美的形状,以确保它被归类为凸形,并将使用基于凸形的计算。

9.2. 第二部分:后处理

9.2.1. 目标

本教程的主要目的是分析从我们在第一部分中设置和处理的片剂包衣仿真中收集的结果和数据。

您将了解如何:

  • 导入自定义多面体用户进程形状

  • 使用停留时间信息来计算可变性系数(CoV)

  • 分析收集的碰撞统计和接触数据

您将使用这些功能:

  • 多面体(包线)用户进程

  • 颗粒计算(停留时间)

  • 欧拉统计

  • 时间统计属性

9.2.2. 前提条件


重要:  与其他Rocky教程相比,本高级教程包含更少的细节、截图和步骤。

  • 高级教程主要面向的用户不仅更熟悉Rocky用户界面(UI),而且已经非常了解常见设置和后处理任务。

  • 如果您还未达到这种熟悉程度,建议您在开始本教程之前至少先完成教程01~05。


9.2.3. 打开项目

如果您已完成本教程的第一部分,请确保Rocky项目是打开的。(第二部分将从第一部分终止的地方继续。)

如果您没有完成第一部分,请执行以下所有操作:

  1. 此处下载dem_tut09_files.zip文件。

  2. dem_tut09_files.zip解压缩至工作目录。

  3. 打开Rocky 2025 R1。(在程序菜单中查找Rocky 2025 R1或使用桌面快捷方式)。


    重要:  要使用提供的Rocky项目文件,必须要有Rocky 2025 R1或更高版本。如果您有较早版本的Rocky,请将Rocky升级到最新版本或从头完成第一部分


  4. 在Rocky程序中点击Open Project按钮,找到dem_tut09_files文件夹,然后从tutorial_09_A_pre-processing文件夹打开tutorial_09_A_pre-processing.rocky文件。

  5. 处理仿真。(从Data面板中选择Solver,然后从Data Editors面板中点击Start按钮。)

处理完成后,我们现在可以开始分析仿真结果。

9.2.4. 颗粒停留时间

对于如图所示的包衣过程,非常重要的一点是确保每个颗粒在包衣区域(喷雾区)停留足够长的时间。

Rocky允许创建一个新的Property变量Residence Time,该变量可计算每个颗粒在预定义的用户进程区域(立方体、圆柱体或多面体)内花费的时间。

对于本教程,将使用.stl几何结构导入两个多面体用户进程,以表示两个椭圆形喷雾锥。

带喷嘴和喷雾锥的片剂包衣过程的示意图:

 

显示了新导入的多面体用户进程形状的锅筒:

 

9.2.5. 用户进程–多面体1

要导入第一个多面体:

  1. Data面板中,右键单击Particles,指向Processes,然后选择Polyhedron (Envelope)

  2. Select the STL file for the polyhedron对话框中,导航到您之前下载的dem_tut09_files文件夹,找到geometry文件夹,然后选择Spray_Cone.stl文件,并单击Open

  3. Import File Info对话框中,将Import Unit设置为m,然后单击OK

     

  4. 从Data面板中,在User Processes下方,选择新创建的Polyhedron <01>条目。

  5. Data Editors面板中,在Polyhedron选项卡上设置CenterScale

     

9.2.6. 用户进程–多面体2

要导入第二个多面体:

  1. 重复上一节的过程以创建另一个多面体(包线)用户进程,选择相同的Spray_Cone.stl几何结构,并以mm为单位导入。

  2. 从Data面板的User Processes下选择这个新的Polyhedron <02>条目,然后从Data Editors面板设置CenterScale

     

第二次导入后,您应该有两个代表喷嘴的多面体。

 

9.2.7. 后处理–颗粒停留时间

现在我们已经导入了两个圆锥体,我们可以对它们应用停留时间颗粒计算,以分析每个颗粒在每个圆锥体区域内花费的时间。

  1. Data面板中,右键单击Particles,指向Particles Calculations,指向Residence Time,然后选择Polyhedron <01>(如图所示)。将创建一个名为Residence Time (Polyhedron <01>)的新计算实体。

     

  2. Polyhedron <02>用户进程重复此步骤。

通过合并每个圆锥体的停留时间结果,我们将能够看到整个喷雾区随着时间的推移对颗粒的包衣程度。

我们将通过为颗粒创建一个自定义属性来实现这种合并。

  1. 使用下表中的信息继续设置您的项目。

    步骤位置参数或操作设置
    A微粒属性Add new custom property(按钮)
    B新增(对话框)NameTotal Residence Time
    Output units
    Inputs | Residence Time (Polyhedron <01>)(已启用)
    Inputs | Residence Time (Polyhedron <02>)(已启用)
    CCustom Property (对话框)表达式A+B

一个名为Total Residence Time (Custom)的新属性将出现在颗粒的Properties中。

这可以像任何其他属性一样用于为颗粒着色和/或创建新的图。

  1. Particles主实体的Data Editors面板中,选择Coloring选项卡,然后在Nodes下方,为Property选择Total Residence Time (Custom)

  2. 使用Time滑块查看不同输出时间的变化。


    注意:  您可能需要使用Data面板上的眼睛图标来隐藏Polyhedrons用户进程。


如下图所示,一些颗粒在喷雾区停留的时间比其他颗粒长。在60秒时,包衣仍然相当不均匀,因为存在许多不同颜色的颗粒。

 

9.2.8. 后处理–片剂间可变性(COV)

片剂间可变性系数(CoV)可以定义为包衣质量的标准偏差与包衣质量的平均值之间的比率。

包衣质量主要取决于喷雾区内的停留时间,因此我们可以将CoV定义为:

公式 9–. 


为了创建CoV分析,我们需要从时间图开始。按照接下来几张幻灯片上的说明进行操作。

  1. 创建一个新的时间图(从Window菜单中,单击New Time PlotCtrl+T)。)

  2. 使用下表中的信息定义时间图。

9.2.9. 时间图

步骤位置参数或操作设置
A微粒Properties | Total Residence Time (Custom)拖放至Time Plot窗口
BSelect the Statistics to Plot(对话框)Average(已启用)
Std.偏差(已启用)

  1. 在绘图网格中右键单击,指向Axes Layout,然后单击By Quantity

     

现在,让我们通过在时间图中创建新的公式来计算可变性系数(CoV)。

  1. 使用下表中的信息来定义公式。

    步骤位置参数或操作设置
    ATime PlotTable (tab)Add Formula
    BAdd Expression(对话框)Curve CaptionCoV
    Curve ExpressionB/C


    注意:  为使公式有效,表达式必须表示为Total Residence Time (Custom)属性的Std. Deviation除以Average。如果您的列以不同的顺序出现,请相应地调整公式。


  2. 向下滚动到表格末尾,注意60秒时的CoV仅达到20%。

     

  3. 切换回Plot选项卡。

  4. 在选项卡顶部,单击Std.DeviationAverage的曲线名称,从图中隐藏它们(如图所示)。CoV曲线将是唯一可见的。

     

  5. Plot选项卡中,右键单击Time轴,然后单击Customize轴。

  6. 使用下表中的信息定义轴配置值。

    步骤位置参数或操作设置
    AAxis Configuration (对话框)Axis | Time (s)Values | LimitsUser Defined
    Values | Min0.05 [s]
    Values | Max100 [s]
    Values | Step1 [s]
    Scale Options | Logarithmic Scale(已启用)
    Axis |

    CoV( B/C ) ( - )

    Values | LimitsUser Defined
    Values | Min0.1 [s]
    Values | Max10 [s]
    Values | Step1 [s]
    Scale Options | Logarithmic Scale(已启用)

  7. 单击OK

9.2.10. 后处理–COV

当您使用重对数图中的CoV结果配置图表时(仅右轴和底轴),您将获得所示的图表。

 

常见的分析是推断CoV结果,以估计特定CoV值所需的时间。

使用外推法,您不需要运行完整的扩展仿真(这可能需要很多个小时来处理)。

在10秒仿真时间后,可以看到重对数图末端的线性区域(稳态),并将用作外推的基础。

可以通过使用单独的电子表格程序来推断CoV结果。

我们的做法是通过将图中的数据导出到一个.csv文件中,在一个单独的电子表格程序中打开该文件,然后根据需要使用该程序处理数据。

让我们首先导出曲线数据:

  1. 右键单击绘图中的空白区域,指向Export,然后单击Curves

  2. Export Configuration对话框中,清除AverageStd.Deviation复选框(如图所示),然后单击OK

     

  3. Export Curve(s)对话框中,为生成的.csv文件输入File Name,选择文件夹位置,然后单击Save

  4. 在电子表格程序中打开生成的.csv文件。

  5. 使用电子表格程序,通过使用以下等式拟合CoV结果的曲线:

    公式 9–1. 

    其中:

    • 是CoV

    • 是拟合常数

    • 是时间

  6. 对于外推,使用10 - 60秒之间的稳态时间范围。(结果显示为橙色虚线。)

  7. 使用期望的6.25% CoV的正则化限制(显示为绿色虚线),定位到满足拟合CoV(显示为红点)的时间。

 

根据文献(Boehling et al., 2016 [1]),指数常数的值应该接近-0.5。

根据上一张幻灯片上的图表,可以得出以下结论:

  • 由Rocky CoV结果获得的调整值实现了-0.524的值,接近于期望值。

  • 为了达到期望的6.25% CoV调节限制,您需要大约0.149小时(即536.4秒)的仿真时间。

9.2.11. 欧拉统计

使用Eulerian Statistics用户进程,离散的属性可以通过对离散化区域的值进行平均来转换为连续值。

Eulerian Statistics应为CubeCylinder用户进程创建。

在这个案例中,我们将创建一个圆柱体。

 

9.2.12. 用户进程-圆柱体

  1. 使用下表定义这些进程。

    步骤数据实体编辑器位置参数或操作设置
    A微粒创建一个Cylinder User Process
    BUser Processes

    ﹂Cylinder <01>

    CylinderSize0.365, 0.2, 0.365 [m]
    Center0, 0, 0 [m]
    … | Orientation方法Angles⯆
    旋转90, 0, 0 [dega]
    CUser Processes

    ﹂Cylinder <01>

    创建Eulerian Statistics用户进程
    DUser Processes

    ﹂Eulerian Statistics <01>

    Eulerian StatisticsRadial Divisions20 [ - ]
    Tangential Divisions72 [ - ]
    Axial Divisions1 [ - ]

这将把圆柱体离散成72个扇形,每个扇形沿径向有20个分区。在轴向上定义了单个Bin。

9.2.13. 欧拉统计

专门用于欧拉统计的新属性将在欧拉Bin的绘图上可用,包括应力分量、转换速度等。

创建Eulerian Statistics后,可在Coloring选项卡上修改TransparencyEdgesColor

  1. 打开3D视图后,使用下表中的信息来定义这些值。

    步骤数据实体编辑器位置参数或操作设置
    AUser Processes

    ﹂Eulerian Statistics <01>

    着色Faces | PropertyLocal T-Velocity⯆
    Faces | Show on Node?(已启用)
    Edges(已清除)


    提示:  当您启用面的属性时,选项Show on Node?允许连续显示绘制的属性。



    提示:  确保启用了Visible复选框。


  2. Data面板中,单击Particles的眼睛图标,以隐藏之前的颗粒计算。

    更新的结果如图所示。

 

9.2.14. 时间统计属性

Rocky还可以创建这些属性的时间统计,提供AverageMaximumMinimumSum值。

要评估床循环期间的最大剪切应力,请执行以下操作:

  1. Data Editors面板中,选择欧拉统计的Properties选项卡。

  2. 从选定选项卡的右上方,单击Add and edit time statistics properties图标(如图所示)。

     

  3. Edit time statistics properties对话框中,单击Add按钮(绿色加号)。

  4. Add time statistics properties窗口,指定分析的StartStop时间、要评估的OperationsProperties(如图所示),然后单击OK

     

  5. Edit time statistics properties窗口中再次点击OK。

  6. Properties选项卡的Time Analysis下方,选择新创建的Average of Stress Component [40 s, 60 s]属性,然后将其拖放到Eulerian Statistics的3D视图上。(结果如下所示。)

 

这种平均分析有助于确定颗粒在包衣机中承受较高应力值的位置。


重要:  为了能够分析应力组件,您必须在处理仿真之前,从Data面板上的Contacts实体中启用Collect Contacts Data复选框。


提醒一下,我们已经在第一部分中采取了这一步骤,所以现在应该可以分析这些数据了。

9.2.15. 颗粒内碰撞统计

之前在本教程的设置部分(第一部分),您已经启用了收集Intra-particle Collision Statistics

颗粒内碰撞统计表示在单个代表性颗粒上显示的域中所有颗粒的完整瞬态分析。

在仿真期间,相关碰撞数据存储在两个连续的输出时间水平之间。

值得注意的是,每个结果代表当前输出和前一个输出之间的时间平均值。

因此,如果您想要进行跨越整个仿真时间的分析,您需要加入一个新的表达式来计算所有的输出。

另一个要点是颗粒的几何结构分辨率。要实现良好的分析,请确保使用边旁边具有高分辨率三角形的颗粒。

  1. 使用下表中的信息来创建这个新的颗粒时间统计属性。

    步骤数据实体编辑器位置参数或操作设置
    A微粒

    ﹂Particles <01>

    属性Add and edit time statistics properties(按钮)
    BEdit time statistics properties(对话框)Add property(按钮)
    CAdd time statistics properties(对话框)Start time40 [s]
    Stop time60 [s]
    Operations | Average(已启用)
    Properties | Frequency(已启用)

  2. Data面板中,在Particles下方选择Particle <01>

  3. Data Editors面板中,在Particle选项卡上单击View

    一个新的Particles Details窗口打开了。

  4. Properties选项卡的Time Analysis下方,选择新创建的Average of Frequency [40s, 60s]属性,然后将其拖放到Particles Details窗口。(结果如下所示。)

  5. Particle <01>实体的Coloring选项卡上,清除Transparency复选框。

这显示了在颗粒形状的不同区域(三角形)中记录的每个颗粒的平均碰撞频率。

  • 我们可以看到,颗粒的角和边的碰撞次数最多,而平面的碰撞次数最少。

  • 因此,我们可以得出结论,当这种形状的颗粒与其他颗粒和锅筒壁发生碰撞时,最常在边和角上发生碰撞。

 

9.2.16. 颗粒间碰撞统计

之前在本教程的设置部分(第一部分),我们已经启用了收集Inter-particle Collision Statistics

当需要提取关于说明在两个连续输出时间的间隔内某个颗粒发生的所有碰撞的数据时,这些统计数据会很有用。

例如,使用冲击速度,您可以将该数据与颗粒破碎或导致其解聚的可能性相关联。利用持续时间,您可以将该数据与某个质量或热传递过程、或者某个化学反应相关联。

值得注意的是,每个结果代表在两个连续输出时间的间隔内收集的数据的时间平均值。

在接下来的幻灯片中,我们将分析冲击速度,以显示潜在的高能量力矩(以及可能的断裂)。

  1. Data面板中,选择Particles

  2. Data Editors面板中,选择Properties选项卡。

  3. Translational Velocity下方,右键单击Velocity : Impact : Normal : Mean,指向3D View,然后单击Show in new 3D View。(结果如图所示。)

 


提示:  要查看颗粒,您可能需要将Drum几何结构设置为透明。


9.2.17. 结论

这样就完成了本教程的第二部分,其中Rocky可用于片剂包衣仿真的后处理。

在本教程中,您可以:

  • 导入两个自定义多面体用户进程形状来分析停留时间。

  • 计算,绘图,然后外推可变性系数(CoV)。

  • 分析收集的颗粒内和颗粒间碰撞统计数据。

  • 使用欧拉统计和时间统计来评估应力分量。

下一步是什么?

  • 如果您成功完成了本教程,那么您可以进入第三部分并进一步分析喷雾区。

9.3. 第三部分:喷雾区评估

9.3.1. 目标

本教程的目的是对我们在第一部分设置和处理的片剂包衣仿真使用Coating Visibility Wizard,以进一步研究颗粒上的包衣可变性。

该方法使用3D视图窗口的摄像头位置来定义喷雾区。然后,该向导会计算每个颗粒(或颗粒区域)的曝光量,这种方法比我们在第二部分中使用的过程更准确。

您将了解如何:

  • 在PrePost Scripts面板中导入并运行保存的PrePost脚本

  • 使用向导结果来分析可变性系数(CoV)

  • 使用向导结果分析颗粒形状本身的可见性

您将使用这些功能:

  • PrePost Scripts面板

9.3.2. 前提条件


重要:  与其他Rocky教程相比,本高级教程包含更少的细节、截图和步骤。

  • 高级教程主要面向的用户不仅更熟悉Rocky用户界面(UI),而且已经非常了解常见设置和后处理任务。

  • 如果您还未达到这种熟悉程度,建议您在开始本教程之前至少先完成教程01~05。


9.3.3. 打开项目

如果您完成了本教程的第一部分(和/或第二部分),请确保Rocky项目是打开的。(第三部分将从第一部分和/或第二部分结束的地方继续。)

如果您没有完成第一部分(和第二部分),请执行以下所有操作:

  1. 此处下载dem_tut09_files.zip文件。

  2. dem_tut09_files.zip解压缩到您的工作目录。

  3. 打开Rocky 2025 R1。


    重要:  要使用提供的Rocky项目文件,必须要有Rocky 2025 R1或更高版本。如果您有较早版本的Rocky,请将Rocky升级到最新版本或从头完成第一部分


  4. 在Rocky程序中点击Open Project按钮,找到dem_tut09_files文件夹,然后从tutorial_09_A_pre-processing文件夹打开tutorial_09_A_pre-processing.rocky文件。

  5. 处理仿真。(从Data面板中选择Solver,然后从Data Editors面板中点击Start按钮。)

处理完成后,我们现在可以开始分析仿真结果。

9.3.4. 颗粒可见性

包衣操作的喷雾区将由摄像头位置、方向和3D视图窗口的缩放水平决定。

窗口的焦点将像一个喷嘴,可见的颗粒将暴露于包衣中。

带喷嘴和喷雾区的片剂包衣过程的示意图:

 

3D视图窗口应聚焦的目标区域(黄色):

 

Visibility是给定时间内颗粒(或颗粒区域)在摄像头视图中占据的百分比,通过逐个像素验证来计算。

 

颗粒可见性(摄像头视图)

 

颗粒可见性(另一个角度)

可见性计算仅通过Coating Visibility Wizard可用。

9.3.5. 包衣可见性向导

Coating Visibility Wizard是一个在Rocky内部运行的完整应用,可帮助您便捷为包衣应用定义喷嘴参数。

  • 向导中提供了预览功能,使您能够在运行向导之前可视化Spray MaskNozzle参数。

  • 该向导包括嵌入式后处理功能,使您能够分析包衣可见性结果。

该向导计算每个输出时间的包衣可见性,然后根据这些计算自动创建新属性。

 

  1. 首先,从Tools菜单中选择PrePost Scripts,以显示该面板。

  2. 单击此处下载Coating Visibility Wizard,然后将coating_visibility_wizard文件夹从zip文件夹提取到您的计算机。

  3. coating_visibility_wizard文件夹中,将script_coating_visibility_wizard.py脚本和script_coating_visibility_wizard.py.files文件夹复制到剪贴板。

     

  4. 从Rocky PrePost Scripts面板中,在选定的第一个Scripts shared across projects选项卡上,单击Open Scripts Directory按钮。

  5. 在打开的%HOMEPATH%\Documents\Rocky\Scripts文件夹中,粘贴您复制的脚本和文件夹。

  6. 新脚本将出现在PrePost Scripts面板的Scripts shared across projects选项卡中。

要运行Coating Visibility Wizard,请执行以下操作:

  1. 单击Playback Script按钮。

     


注意:  该向导计算每个单独输出的可见性。因此,完成计算可能需要一些时间。

因为Coating Visibility Wizard是一个在Rocky内部运行的完整应用,所以在向导运行时,您不能在Rocky中操作。


Coating Visibility Wizard将作为一个显示Setup选项卡的新窗口出现。

该向导使您能够轻松定义喷嘴参数。您可以根据需要添加任意数量的喷嘴,然后进行配置。


注意:  当使用多个喷嘴时,向导将在每个输出时间改变摄像头位置,以便分析每个喷嘴的区域。


按照以下步骤定义您的设置(如图所示)。

  1. Nozzle Injection子选项卡上,从Axis Direction字段中,将Drum rotation direction定义为+Z

  2. Nozzles字段中,单击Add按钮(绿色加号)创建一个喷嘴条目。

  3. 对于1个和2个喷嘴,定义Y coordinateZ coordinateOrientation angle

 


注意:  Axis Direction选项将用于定位喷嘴。确保正确定义,并在Nozzles Preview字段中进行检查。


如果您要计算矩形、椭圆形和自定义区域的可见性,此向导支持用于可见性计算的掩膜。

  • 掩膜可以仿真喷嘴的喷雾形状。

  1. 选择Spray Mask子选项卡,然后定义以下所有选项(如图所示):

    • Spray mask type

    • White core horizontal length

    • White core vertical length

 


注意:  Mask Preview将帮助您正确定义掩膜(如图所示)。


像素越暗,不透明度越高。因此,摄像头会忽略图像的黑边。下图说明了如何结合摄像头视图和掩膜来计算可见性:

 

 

 

General子选项卡上,您可以定义Spray TimePost Processing的选项。

按照下面的步骤继续定义您的向导设置。

  1. 选择General子选项卡,将Spray start time定义为3.0(如图所示),并根据屏幕截图检查其他选项。

     

有关此向导及其参数的更多信息,请从Help菜单选项卡访问Scripts Manual(如图所示)。

 

  1. 现在,您的Coating Visibility Wizard设置完成。从Setup选项卡,单击Calculate按钮:

     


注意:  该向导计算每个单独输出的可见性。因此,完成计算可能需要一些时间。


向导完成计算后,将出现一条确认消息(如图所示)。

 


注意:  您可以留在向导中进行某些类型的可见性后处理(如下一节所示)。在向导之外,您还拥有了Rocky中Particles实体的新属性以及位于项目仿真文件夹中的新文件。


9.3.6. 包衣可见性向导–片剂间可变性(CoV)

向导完成计算后,将指向新的Results选项卡。

该向导自动生成片剂间包衣可变性(CoV)分析。它还对可用数据进行外推。

您可以轻松找到与特定CoV值相关的时间量。

此外,向导还为您提供了更改外推参数的选项。在Results选项卡的Power Law Extrapolation部分,您有以下选项(如图所示):

  • Initial time(用于定义插值范围的开始)

  • CoV limit

 

要生成上一页的CoV图,首先向导需要估计一个颗粒在给定输出间隔内获得的包衣质量:

公式 9–2. 

其中:

  • 是当时间等于时第个颗粒的包衣质量。

  • 是喷雾质量流率。

  • 是当时间等于时第个颗粒的颗粒可见性。

  • 是输出间隔。

要估计总包衣质量:

公式 9–3. 

其中:

  • 是当时间等于时第个颗粒的累积可见性。

片剂间包衣可变性()可定义为给定时间内包衣质量的标准偏差与包衣质量的平均值之比。

公式 9–4. 

它可以重写为:

公式 9–5. 

乘积是常数,因此:

公式 9–6. 

因此,可以通过总累积可见性的标准偏差与总累积可见性的平均值之间的比率来计算

公式 9–7. 

Coating Visibility Wizard在重对数图中显示了CoV结果(显示垂直和水平比例尺)。

 

常见的分析是推断CoV结果,以便能够估计特定CoV值所需的时间。

使用外推法,您不需要运行完整的扩展仿真(这可能需要很多个小时来处理)。

向导本身定义了线性区域,该区域位于30秒仿真时间后的重对数图(稳态)的末端,并用作外推的基础。

线性区域可以用幂律方程拟合:

公式 9–8. 

其中:

  • 是CoV。

  • 是拟合常数。

  • 是时间。

根据文献(Boehling et al., 2016 [1]),指数常数的值应该接近-0.5。

根据上一张幻灯片上的图表,可以得出以下结论:

  • 通过Coating Visibility Wizard的CoV结果获得的调整值为-0.486,接近期望值。

  • 为了达到期望的6.25% CoV调节限制,您需要大约0.7小时(即2520秒)的仿真时间,这比本教程第二部分中估计的仿真时间要长得多。

9.3.7. 后处理–可见性

Coating Visibility Wizard中完成分析后,您可以关闭向导并返回到Rocky UI。

向导为每个喷嘴创建了两个新的颗粒属性:


注意:  如果您有一个成形的颗粒,每个颗粒组也有这些属性。在这个案例中,这些属性与颗粒表面的每个三角形相关。


  • Instantaneous Visibility:返回在当前选定的输出时间每个颗粒暴露的3D视图区域的分数。如果使用多面体颗粒,这将返回每个颗粒组中所有颗粒在当前输出的平均三角形可见性。

  • Cumulative Visibility:返回从初始输出时间到当前选定输出时间的累积可见性。如果使用多面体颗粒,这将返回每个颗粒组中所有颗粒从初始输出时间到当前选定输出时间的累积三角形可见性。

此外,对于之前的每个属性,向导都创建了一个新属性来评估每个喷嘴的贡献。以下等式适用于每个属性:

公式 9–9. 

其中:

  • 是包衣机的总可见性属性。

  • 是每个喷嘴的可见性属性。

向导为总可见性创建了两个新的颗粒属性:


注意:  如果您有一个成形的颗粒,每个颗粒组也有这些属性。在这个案例中,这些属性与颗粒表面的每个三角形相关。


  • Instantaneous Visibility Coater

  • Cumulative Visibility Coater

9.3.8. 后处理–颗粒可见性

要访问Particles Visibility属性:

  1. Data面板中,选择Particles

  2. Data Editors面板中,选择Properties选项卡。

  3. 要可视化Particles Visibility,请将Instantaneous Visibility Coater拖放到3D View窗口上(结果如图所示)。

 

要可视化Cumulative Visibility

  1. Data面板中,选择Particles

  2. Data Editors面板中,选择Properties选项卡,然后将Cumulative Visibility Coater拖放到3D View窗口。(结果如图所示。)

 

对于本教程,我们主要对累积可见性感兴趣,它与注入质量成正比。


注意:  使用Time滑块查看属性随时间变化的情况。


如下图所示,一些颗粒在喷雾区停留的时间比其他颗粒长。在60秒时,包衣仍然相当不均匀,因为存在不同颜色的颗粒。

 

9.3.9. 后处理–三角形可见性

要可视化颗粒组上的Cumulative Visibility

  1. Data面板中,在Particles下方选择Particle <01>

  2. Data Editors面板中,在Particle主选项卡上,单击View按钮。出现了新的Particles Details窗口。

  3. Data Editors面板中,选择Properties选项卡,然后将Cumulative Visibility Coater拖放到Particles Details窗口。

  4. Time工具栏中,选择最后的输出时间。

  5. Coloring选项卡中,清除Transparency复选框(结果如图所示)。

     

  6. Data Editors面板中,在Coloring选项卡的Faces下方,启用Show on Node?复选框(如图所示)。

     

     

结果表明,在仿真进行到60秒时,颗粒的大部分区域实现了一定量的包衣覆盖,最高值集中在颗粒的角上以及上部和下部的平坦区域。

9.3.10. 结论

这样就完成了本教程的第三部分,其中Rocky用于对我们在第一部分设置和处理的片剂包衣仿真的喷雾区和颗粒包衣结果进行分析。

在本教程中,您可以:

  • 导入并运行Coating Visibility Wizard

  • 分析Coating Visibility Wizard生成的CoV结果,以及颗粒可见性。

下一步是什么?

  • 如果您已成功完成本教程,即可进入下一个教程。

9.3.11. 参考文献

参考书目

[1] Boehling et al.. Analysis of large-scale tablet coating: Modeling, simulation and experiments. European Journal of Pharmaceutical Sciences. 90. 14–24. 2016.