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.