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 로 돌아갈 뿐이므로옆에서 메워지지 않는다). 부감 영상에서는 장애물 자리의 "구멍"과 빈 공간 자체가 보인다 —— 속도만으로 추정한다는 주장은, 추정이 이 구멍을 쓰지 않는다(속도장의 결측으로 버린다)는 의미이지, 영상에 장애물의 단서가 없다는 의미가 아니다.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL 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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.