swarm_simulate — DRIVE swarmflow op

• 数据种类:无 → table(仅由参数决定的算子 —— 不接受图像或数据输入)

• 调用: import fullseye as fs; fs.ledger.swarm_simulate(obstacle=None, speed: 'float' = 1.0, box=(8.0, 5.0), spacing: 'float' = 0.15, h_factor: 'float' = 1.3, tau: 'float' = 0.1, c: 'float' = 10.0, alpha: 'float' = 0.5, t_warm: 'float' = 2.0, n_frames: 'int' = 20, frame_dt: 'float' = 0.06, noise: 'float' = 0.0, seed: 'int' = 0) -> 'dict'(要直接调用实现,import swarmflow; swarmflow.swarm_simulate(obstacle=None, speed: 'float' = 1.0, box=(8.0, 5.0), spacing: 'float' = 0.15, h_factor: 'float' = 1.3, tau: 'float' = 0.1, c: 'float' = 10.0, alpha: 'float' = 0.5, t_warm: 'float' = 2.0, n_frames: 'int' = 20, frame_dt: 'float' = 0.06, noise: 'float' = 0.0, seed: 'int' = 0) -> 'dict';从台账取用则 opsdrive.get("swarm_simulate"))

用法

在带障碍物的周期性流道中流动的群体(个体按 SPH 弱可压缩流体运动)。障碍物对个体只起“会撞上的墙”的作用。

个体 i 的加速度 = (U e_x − v_i)/τ(回到自由流速度)− Σ_j m (p_i/ρ_i² + p_j/ρ_j²) ∇W_ij(压力 = 相互推挤) − Σ_j m Π_ij ∇W_ij(Monaghan 人工粘性,仅对相互接近的配对)+ 扰动(标准差 noise [m/s²] 的白噪声)。

壁: 进入圆内侧的个体被拉回到表面,只消去向内的速度(滑移壁)。周期边界(x 和 y 都是)。积分为 symplectic Euler, 步长为 CFL 0.25 h/(c + U)。当 U τ ≪ R、c ≫ U 时,定常流接近圆柱绕流的势流(推导见 module docstring)。

Args:

obstacle: (xc, yc, R) [m] 或 None(无障碍物)。

speed: 自由流速度 U [m/s]。

box: 流道尺寸 (Lx, Ly) [m],中心为原点。

spacing: 初始格子间距 [m] (个体间距)。

h_factor: h = h_factor × spacing。

tau: 回到速度的时间常数 [s]。

c: 声速 [m/s] (推挤的硬度)。

alpha: 人工粘性系数。

t_warm: 记录前运行的时间 [s] (使其接近定常)。

n_frames: 记录的帧数(≥ 2)。

frame_dt: 帧间隔 [s]。

noise: 加速度的扰动 [m/s²]。

seed: 随机种子。

Returns:

dict: frames (T, N, 2) 位置 [m] (已折回箱内)、velocities (T, N, 2)、t (T,)、box、

obstacle、h、dt、rho0、density_range(记录期间 ρ/ρ₀ 的 1~99 % 分位点)、n_agents、

t_total(运行时间)、t_wake_reenters(障碍物后方的空洞开始从箱子右端绕回左端的时刻

(Lx/2 − x_c − R)/U。运行时间超过此值,空洞的个体会进入上游端,污染自由流)。

★障碍物后方会延伸出一条个体不进入的长空洞(推挤压力弱到不会拉拽,个体只靠阻力回到 U,因此不会从侧面被填满)。在俯视影像中,障碍物处的"洞"以及空洞本身是可见的 —— "仅凭速度估计"的主张, 意思是估计不使用这个洞(作为速度场的缺测而舍弃),而不是说影像中没有障碍物的线索。

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者、年份)与用途见上面的族使用指南。

可运行的示例(实际调用该算子并已验证的样例)

• poc_swarm_obstacle_from_flow — py -3.11 examples/poc_swarm_obstacle_from_flow.py

类型可衔接的下一个算子(可接受 table 作为输入)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

同类别(swarmflow)

sph_kernel · sph_density_pressure · swarm_render_overhead · swarm_field_from_tracks · swarm_field_from_piv · potential_flow_cylinder · velocity_deficit_map · stagnation_from_centerline


*Provenance: swarmflow.py — DRIVE 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.