moire_align op• Data kinds: कोई नहीं → table (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)
• Call: import fullseye as fs; fs.ledger.moire_talbot_gap(p_mask_um=2.0, wavelength_um=0.55, gap_um=10.0, duty=0.5, samples=512) (implementation को सीधे call करना हो तो import moirealign; moirealign.moire_talbot_gap(p_mask_um=2.0, wavelength_um=0.55, gap_um=10.0, duty=0.5, samples=512), registry से लेना हो तो opsoptics.get("moire_talbot_gap"))
proximity gap का Talbot प्रभाव: mask grating का प्रतिबिंब gap के पार कितना और किस चिह्न के साथ बचता है।
> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।
近接露光ではマスクとウェハの間にギャップ g があり、マスクの格子を通った光はウェハに届くまでに回折する。縞の振幅はマスクの像の基本波(1/p の成分)に比例するので、その振幅の gap = 0 に対する比を返す。対称な格子ではこの比は実数で、ギャップによって符号が反転する(反転 = 縞が半周期ずれる = 読みが p/2 跳ぶ)。Talbot 長 z_T = 2p²/λ(近軸)で像は元に戻り、z_T/2 で半周期ずれた像になる。伝搬は optics.angular_spectrum_propagate(近軸近似を使わない)なので、z_T は近軸の値からわずかにずれる。
返り値: dict(contrast_ratio(符号つき)、phase_rad(0 か π)、talbot_length_um(近軸 2p²/λ)、fundamental(複素の基本波係数)、fundamental_at_contact)。Raises ValueError: 正でないピッチ・波長、負のギャップ、duty が (0, 1) の外、p < λ(伝搬する回折次数が無い)。
optics के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):
• Unit argument के नाम में ही लिखी होती है — _mm / _um / _deg / _mrad। mm और µm की गड़बड़ी crash नहीं करती, बल्कि "सही दिखने वाला पर गलत उत्तर" देती है, इसलिए नाम से इसे रोका जाता है। मान के आकार से unit का अनुमान बिल्कुल नहीं लगाया जाता।
• String से ValueError — float('50') सफल हो जाता है, इसलिए बिना parse किया config value length के रूप में निकल जाता (मापा गया: thin_lens('50', '200') सही दिखने वाला 66.667 mm लौटा रहा था)। bool को भी True == 1 वाले implicit promotion के रूप में अस्वीकार किया जाता है।
• complex / masked array से ValueError (केवल real-valued slots; imaginary part को चुपचाप छोड़ना या mask हटाना अस्वीकार)। हर input पर NaN/Inf से ValueError।
• शून्य से भाग और उससे जुड़े मामलों को नाम लेकर अस्वीकार किया जाता है: focal length 0, radius of curvature 0, refractive index <= 0, पूरी तरह opaque aperture (सब 0, इसलिए normalisation 0/0), ऐसा PSF जिसका योग <= 0 हो, S0 = 0 वाला Stokes vector, और front focal point पर रखा object (image अनंत पर)।
• केवल 2 ops non-finite value लौटाते हैं, और वह भी contract के रूप में लिखा हुआ: depth_of_field hyperfocal distance से आगे far_mm = inf (hyperfocal distance की परिभाषा यही है) और gaussian_beam waist पर wavefront_radius_mm = inf (plane wavefront की radius of curvature)। दोनों साथ में एक finite साथी (far_is_infinite / curvature_per_mm) भी लौटाते हैं। इसके अलावा कोई भी चुपचाप आया NaN/Inf अंदर ही पकड़ा जाता है और ValueError देता है — "float64 overflow हुआ" और "उत्तर अनंत है" अलग-अलग दावे हैं, इसलिए पहले को दूसरे का चेहरा पहनाकर नहीं लौटाया जाता।
• Size की सीमा: generate होने वाले grid के लिए optics.MAX_GRID (4096), दिए गए field/PSF/aperture के लिए optics.MAX_FIELD_ELEMENTS (2^24), ABCD element chain के लिए optics.MAX_SYSTEM_ELEMENTS (1024), Zernike के लिए MAX_ZERNIKE_TERMS (512) / MAX_ZERNIKE_ORDER (40) / MAX_ZERNIKE_BASIS (2^25)। छोटे argument से बहुत बड़ा internal allocation होने वाले रास्तों (मापा गया: n_max=40 × 4096² पर 108 GB) को fail-closed ढंग से बंद किया गया है।
• भौतिक रूप से असंभव states भी अस्वीकार: degree of polarisation > 1 वाला Stokes vector, ऋणात्मक transmittance, ऋणात्मक intensity, और n-|m| odd जैसे अमान्य Zernike indices।
• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।
• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।
• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।
• poc_moire_alignment — py -3.11 examples/poc_moire_alignment.py
• poc_moire_screen — py -3.11 examples/poc_moire_screen.py
table को input के रूप में लेते हैं)abcd_matrix · wavefront_stats · sfr_from_edge · paraxial_trace · seidel_coefficients · spot_stats · tolerance_analysis · wavefront_from_opd
moire_align)moire_magnification · moire_overlay_image · moire_phase · moire_phase_to_shift · moire_differential_shift · moire_mark_read · moire_phase_crlb
*Provenance: moirealign.py — OPTICS operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.