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.