swarm_simulate — DRIVE swarmflow op

• Datenarten: keine → table (ein Operator, der allein durch seine Argumente bestimmt ist — er nimmt kein Bild und keine Daten entgegen)

• Aufruf: 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' (die Implementierung direkt: 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'; aus dem Register: opsdrive.get("swarm_simulate"))

Verwendung

Ein Schwarm (Individuen, die sich als schwach kompressibles SPH-Fluid bewegen), der durch einen periodischen Kanal mit Hindernissen strömt. Hindernisse wirken auf die Individuen nur als "Wände, an die man stößt".

Beschleunigung des Individuums i = (U e_x − v_i)/τ (Rückkehr zur Anströmgeschwindigkeit) − Σ_j m (p_i/ρ_i² + p_j/ρ_j²) ∇W_ij (Druck = gegenseitiges Drängen) − Σ_j m Π_ij ∇W_ij (künstliche Viskosität nach Monaghan, nur für sich nähernde Paare) + Schwankung (weißes Rauschen mit Standardabweichung noise [m/s²]).

Wand: Ein Individuum, das ins Innere des Kreises geraten ist, wird auf die Oberfläche zurückgesetzt, und nur seine nach innen gerichtete Geschwindigkeit wird entfernt (Gleitwand). Periodische Ränder (sowohl x als auch y). Integration ist symplektisches Euler, Schrittweite CFL 0,25 h/(c + U). Für U τ ≪ R und c ≫ U ist die stationäre Strömung nahe der Potentialströmung um einen Zylinder (Herleitung im Modul-Docstring).

Args:

obstacle: (xc, yc, R) [m] oder None (kein Hindernis).

speed: Anströmgeschwindigkeit U [m/s].

box: Kanalgröße (Lx, Ly) [m], Mittelpunkt im Ursprung.

spacing: anfänglicher Gitterabstand [m] (Abstand der Individuen).

h_factor: h = h_factor × spacing.

tau: Zeitkonstante der Rückkehr zur Geschwindigkeit [s].

c: Schallgeschwindigkeit [m/s] (Steifigkeit des Drängens).

alpha: Koeffizient der künstlichen Viskosität.

t_warm: Laufzeit vor der Aufzeichnung [s] (zur Annäherung an den stationären Zustand).

n_frames: Anzahl aufzuzeichnender Frames (≥ 2).

frame_dt: Frame-Intervall [s].

noise: Schwankung der Beschleunigung [m/s²].

seed: Zufallsseed.

Returns:

dict: frames (T, N, 2) Positionen [m] (bereits in die Box zurückgefaltet), velocities (T, N, 2), t (T,), box,

obstacle, h, dt, rho0, density_range (1-99-%-Punkte von ρ/ρ₀ während der Aufzeichnung), n_agents,

t_total (gelaufene Zeit), t_wake_reenters (Zeitpunkt, ab dem der Hohlraum hinter dem Hindernis vom rechten Rand der Box zum linken Rand herumzulaufen beginnt,

(Lx/2 − x_c − R)/U. Läuft man länger, treten Individuen des Hohlraums am stromaufwärtigen Rand ein und verunreinigen die Anströmung).

★Hinter dem Hindernis erstreckt sich ein langer Hohlraum, in den keine Individuen eindringen (der Drängdruck ist so schwach, dass er nicht zieht, und die Individuen kehren nur durch den Widerstand zu U zurück, daher wird er nicht von den Seiten aufgefüllt). Im Video von oben sind das "Loch" am Hindernis und der Hohlraum selbst sichtbar —— die Behauptung, allein aus der Geschwindigkeit zu schätzen, bedeutet, dass die Schätzung dieses Loch nicht verwendet (es wird als Fehlwert im Geschwindigkeitsfeld verworfen), nicht dass das Video keinen Hinweis auf das Hindernis enthält.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• poc_swarm_obstacle_from_flow — py -3.11 examples/poc_swarm_obstacle_from_flow.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

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

Gleiche Kategorie (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 Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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