field op• 데이터 종류: flow2d → image2d
• 호출: import 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 成分すべてを返す。
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• piv_flow_from_particles — py -3.11 examples/piv_flow_from_particles.py
image2d 를 입력으로 받는 것)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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.