NetDEM Python API 参考文档 - Modifier模块

本文档提供了NetDEM软件中修改器(Modifier)相关的Python API接口说明。修改器用于在模拟过程中修改和控制模拟对象的行为。

目录

Modifier

Modifier是所有修改器的基类,定义了修改器的基本属性和方法。

属性

属性名 类型 描述
label str 修改器的描述性标签
sim Simulation 关联的模拟器实例
scene Scene 关联的场景实例
refresh_with_scene bool 是否随场景一起刷新
enable_logging bool 是否启用日志记录

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的Modifier实例
Clone Modifier 创建当前修改器的副本
Init sim: Simulation - 初始化修改器
Enable - 启用修改器
Disable - 禁用修改器
Execute cycle_point: DEMSolver.CyclePoint - 执行修改器操作
Refresh - 刷新修改器状态
Print prefix: str = "" - 打印修改器信息

ModifierManager

ModifierManager是一个用于管理所有修改器的类。

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的ModifierManager实例
Init - 初始化管理器
Insert modifier: Modifier - 添加一个修改器到管理器中
Remove modifier: Modifier - 移除一个修改器
GetModifier label: str Modifier 根据标签获取修改器
FindModifier label: str Modifier 查找修改器
Enable label: strmodifier: Modifier - 启用修改器
Disable label: strmodifier: Modifier - 禁用修改器
ClearModifierLibrary - 清空修改器库
ClearModifierEnabled - 清空已启用的修改器

DataDumper

DataDumper是一个用于导出模拟数据的修改器。

属性

属性名 类型 默认值 描述
output_dir str "output" 输出目录路径
prefix str "dump" 输出文件名前缀
dump_interval int 100 数据导出间隔(步数)
dump_vtk bool True 是否导出VTK格式文件
dump_contact bool False 是否导出接触信息
dump_wall bool True 是否导出墙体信息

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的DataDumper实例
SetOutputDir dir_path: str - 设置输出目录路径
SetPrefix prefix: str - 设置输出文件名前缀
SetDumpInterval interval: int - 设置数据导出间隔

WallGroup

WallGroup是一个用于管理墙体组的修改器。

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的WallGroup实例
AddWall id: intids: list[int]ids: initializer_list[int] - 添加墙体到组中
RemoveWall id: intids: list[int]ids: initializer_list[int] - 从组中移除墙体
SetWall id: intids: list[int]ids: initializer_list[int] - 设置组中的墙体
GetWalls list[int] 获取组中的所有墙体ID
Clear - 清空墙体组

ParticleGroup

ParticleGroup是一个用于管理颗粒组的修改器。

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的ParticleGroup实例
AddParticle id: intids: list[int]ids: initializer_list[int] - 添加颗粒到组中
RemoveParticle id: intids: list[int]ids: initializer_list[int] - 从组中移除颗粒
SetParticle id: intids: list[int]ids: initializer_list[int] - 设置组中的颗粒
GetParticles list[int] 获取组中的所有颗粒ID
SetParticleFromScene - 从场景中设置颗粒
Clear - 清空颗粒组

ExternalForce

ExternalForce是一个用于施加外力的修改器。

属性

属性名 类型 默认值 描述
force Vec3d (0.0, 0.0, 0.0) 外力向量
moment Vec3d (0.0, 0.0, 0.0) 外力矩向量

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的ExternalForce实例
SetForce id: intids: list[int], fx: float, fy: float, fz: float - 设置外力
SetMoment id: intids: list[int], mx: float, my: float, mz: float - 设置力矩
AddForce id: intids: list[int], fx: float, fy: float, fz: float - 添加外力
AddMoment id: intids: list[int], mx: float, my: float, mz: float - 添加力矩
GetForceAndMoment id: int = None tuple[Vec3d, Vec3d] 获取力和力矩
SyncToAllProcessors - 同步到所有处理器
Clear - 清空外力

Gravity

Gravity是一个用于施加重力的修改器。

属性

属性名 类型 描述
coeffs Vec3d 重力系数
ref_pos Vec3d 参考位置

方法

方法名 参数 返回值 描述
__init__ 无 或 gx: float, gy: float, gz: float - 创建一个新的Gravity实例

BoundaryPeriodic

BoundaryPeriodic是一个用于设置周期性边界条件的修改器。

属性

属性名 类型 默认值 描述
periodic_x bool False x方向是否周期性
periodic_y bool False y方向是否周期性
periodic_z bool False z方向是否周期性

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的BoundaryPeriodic实例
SetPairWalls wall_ids: list[int] - 设置成对的墙体
SetCoordSysFirst coord_sys: CoordSys - 设置第一个坐标系
SetCoordSysSecond coord_sys: CoordSys - 设置第二个坐标系
GetWallGroups list[WallGroup] 获取所有墙体组
GetWallGroupFirst WallGroup 获取第一个墙体组
GetWallGroupSecond WallGroup 获取第二个墙体组
ClearMappedParticles - 清空映射的颗粒
SaveMappedIDsDict - 保存映射的ID字典

WallServoControl

WallServoControl是一个用于控制墙体伺服的修改器。

属性

属性名 类型 描述
kn float 法向刚度
area float 面积
target_pressure float 目标压力
vel_max float 最大速度
study_rate float 研究速率
tol float 容差
enable_warning bool 是否启用警告
enable_auto_area bool 是否启用自动面积
achieved bool 是否达到目标

方法

方法名 参数 返回值 描述
__init__ kn: float, area: float - 创建一个新的WallServoControl实例

WallMotionControl

WallMotionControl是一个用于控制墙体运动的修改器。

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的WallMotionControl实例
SetVelocity vx: float, vy: float, vz: float - 设置速度
SetSpin wx: float, wy: float, wz: float - 设置自旋

ParticleMotionControl

ParticleMotionControl是一个用于控制颗粒运动的修改器。

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的ParticleMotionControl实例
SetFixed fixed: bool - 设置是否固定
SetFixRotation fix_rotation: bool - 设置是否固定旋转
SetLinearSpin wx: float, wy: float, wz: float - 设置线性自旋
SetLinearVelocity vx: float, vy: float, vz: float - 设置线性速度
SetSinVelocity amplitude: float, frequency: float, phase: float - 设置正弦速度
SyncToAllProcessors - 同步到所有处理器
Clear - 清空运动控制

ParticleInjector

ParticleInjector是一个用于注入颗粒的修改器。

属性

属性名 类型 默认值 描述
rate float 1.0 颗粒注入速率(个/秒)
region Box - 注入区域

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的ParticleInjector实例
SetParticles particles: list[Particle] - 设置要注入的颗粒
SetInjectByTime time: float - 设置按时间注入
SetInjectByCycles cycles: int - 设置按周期注入
SetInjectTimes times: int - 设置注入次数
Clear - 清空注入器

MembraneWall

MembraneWall是一个用于模拟膜墙的修改器。

属性

属性名 类型 描述
enable_deformation bool 是否启用变形
dump_info bool 是否导出信息
facing_outside bool 是否朝外
wall_list list[int] 墙体列表

方法

方法名 参数 返回值 描述
__init__ 无 或 radius: float, height: floatradius: float, height: float, thickness: floatx: float, y: float, z: float, rx: float, ry: float, rz: float - 创建一个新的MembraneWall实例
SetRootPath path: str - 设置根路径
SetSaveByTime time: float - 设置按时间保存
SetSaveByCycles cycles: int - 设置按周期保存
Init - 初始化膜墙
SetDimensions dimensions: list[float] - 设置尺寸
SetPressure pressure: float - 设置压力

DeformationAnalysis

DeformationAnalysis是一个用于分析变形的修改器。

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的DeformationAnalysis实例
GetStrain Vec6d 获取应变张量(Voigt记号)
GetStress Vec6d 获取应力张量(Voigt记号)

BreakageAnalysis

BreakageAnalysis是一个用于分析断裂的修改器。

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的BreakageAnalysis实例
GetBreakageRatio float 获取断裂率
GetBrokenBonds list[Bond] 获取已断裂的键

ParticleStressEvaluator

ParticleStressEvaluator是一个用于评估颗粒应力的修改器。

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的ParticleStressEvaluator实例
GetStress list[float] 获取应力

ParticleEnergyEvaluator

ParticleEnergyEvaluator是一个用于评估颗粒能量的修改器。

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的ParticleEnergyEvaluator实例
GetKineticEnergy particle: Particle float 获取指定颗粒的动能
GetPotentialEnergy particle: Particle float 获取指定颗粒的势能
GetTotalEnergy particle: Particle float 获取指定颗粒的总能量

UnbalForceRatioEvaluator

UnbalForceRatioEvaluator是一个用于评估非平衡力比的修改器。

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的UnbalForceRatioEvaluator实例
GetUnbalForceRatio float 获取当前系统的非平衡力比