field opflow2d → image2dimport fullseye as fs; fs.ledger.piv_divergence(flow, spacing=1.0) (実装を直接呼ぶなら import pivops; pivops.piv_divergence(flow, spacing=1.0)、台帳から引くなら opspiv.get("piv_divergence"))発散 d(dy)/dy + d(dx)/dx。非圧縮なら 0 —— 独立な検算に使える。
式: gradient(flow[0], spacing, axis=0) + gradient(flow[1], spacing, axis=1)
(numpy.gradient: 内部は中央差分、格子の端は片側差分)。
flow[0] が行方向の変位 dy、flow[1] が列方向の変位 dx、
x = 列、y = 行。行が下向きでも発散の符号は座標の向きに依らない
(渦度 piv_vorticity とは違い、反転しない)。正 = 湧き出し、負 = 吸い込み。
flow: (2, h, w)、成分 (dy, dx) [px/frame] (piv_cross_correlate /
piv_multipass の返り値)。h, w >= 2 でないと微分できないので
ValueError(窓が大きすぎて 1 本しかベクトルが無い場合)。
有限性は検査しない ―― piv_replace_outliers(method="nan") の NaN は
隣接 2 セルへ広がる。spacing: ベクトル間隔 [px]、正の有限値。info["step"] を渡す
(既定 1.0 のままだと単位が「1/ベクトル間隔」になる)。(h, w) float64、単位 1/frame(spacing が px のとき)。
piv_to_velocity で m/s にした場と spacing を m にすれば 1/s。2-D PIV で平面外の速度成分があると非零になるので、「非圧縮なのに発散が
大きい」は面外流か外れ値(piv_outlier_mask)の指標。
piv_velocity_gradient は 4 成分すべてを返す。
py -3.11 examples/piv_flow_from_particles.pyimage2d を入力に取れる)piv_cross_correlate · piv_multipass · piv_deform_pass · strain_from_displacement · correlation_quality · speckle_quality
field)piv_vorticity · piv_flow_magnitude · piv_to_velocity · piv_velocity_gradient · piv_q_criterion · piv_swirling_strength · piv_strain_rate
Provenance: pivops.py — PIV operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.