TARHAN Layer-0 Doğrulama Kataloğu

July 19, 2026 · View on GitHub

Disiplin: kitaptan öğren → algoritmayı KENDİ kodumuzla yeniden yaz (kaynak kodu asla kopyalanmaz) → basılı sayı/tablolanmış sabitle karşılaştır → sapmayı logla. Tam plan + kitap envanteri: Obsidian wiki, "TARHAN — Textbook Simulation Catalog". Prototipler ../tarhan-validation/ klasöründe geliştirildi; kanonik hali buradaki pytest suite'idir (pytest ile koşar, CI her push'ta işletir).

#VakaKaynakBeklenenDurumTest
0Cottrell kronoamperometri, explicit FDBritz & Strutwolf 4e (2016)G=1/√(πT)✅ maks %0.0155, mertebe p=1.97layer0/electrochem/test_rank00_cottrell_fd.py
1Nafion λ(a), κ(λ,T)Springer et al., JES 138 (1991)λ(1)=14.00; κ(14,80°C)=0.124 S/cm✅ 5/6 basılı rakam birebir; λ(0.3) aktarımı xfail (kaynak teyidi açık)layer0/fuelcell/test_rank01_springer_membrane.py
2P+N step junctionHu, Modern Semiconductor Devices, Örnek 4-1 (açık PDF)φ_bi≈1 V; W=0.12 μm; x_P≈1.2 Å✅ 3/3 basılı değerlayer0/semiconductor/test_rank02_hu_junction.py
31D difüzyon MMS tam çözümLinge & Langtangen §3.6.5 (CC BY 4.0)‖e‖∞ ~1e-14, grid'den bağımsız✅ ≤8e-15 (3 grid)layer0/numerics/test_rank03_mms_exact.py
4Cottrell yarı-integrali M=1Oldham, Myland & Bond (2012)sabit; mertebe 0.5 (tekillik)✅ p=0.4999; Richardson M_ext=1.000000; FD↔analitik <%0.3layer0/electrochem/test_rank04_semiintegral.py
5Hu Örnek 4-2: C-V doping çıkarımı (TERS-problem)Hu Böl. 4 s.99-100 (açık PDF, görsel-okundu)N_l=6e15, N_h=1.8e18 (+duyarlılık 0.78V→1.8e17)✅ üçü de birebir; 2 formül oracle-VERIFIED. 1e8 gizemi çözüldü: kitabın basılı yerine-koyması A² yerine 1e-8 kullanıyor (literal girdiler 5.9e23 verir — fiziksel saçma; öz-tutarlı eğim 2e31). Girdi-tutarsızlığı strict-xfail — muhtemel erratalayer0/semiconductor/test_rank05_hu_cv_extraction.py
6PEMFC kayıp-merdiveniO'Hayre 3e, Böl. 2-5 işlenmiş örnekler (kullanıcı EPUB'undan transkripsiyon)Örn. 2.3/3.3/4.1/5.1 kutulu cevapları✅ E⁰_DMFC=1.199 V; 0.059 V/dekad + 6-dekad 0.36 V; R_ionic 0.01/0.005 Ω → η 0.15/0.10 V; c_O2=5.8, D_eff=0.0506, j_L=2.26, η_conc=0.22 V. 4 formül oracle-VERIFIED. Kitap-içi D=0.1-vs-0.2 tutarsızlığı xfail (muhtemel errata)layer0/fuelcell/test_rank06_ohayre_losses.py
7Gözlenen yakınsama mertebeleriLinge & Langtangen §1.1.4, §3.6.6central/CN→2, FE→1✅ 2.0000 / 1.0000 / 2.0002layer0/numerics/test_rank07_convergence_rates.py
8Reversible CV tepe ψ_pCompton ⊕ Britz ⊕ Bard&Faulkner0.4463 (3 kitap çapraz); θ_p=−1.109; Δθ_yarım=2.20✅ J_p=0.44636 (3 çözünürlükte kararlı); θ_p=−1.109; 2.2023. Boyutlu Randles–Ševčík oracle 2/2 VERIFIEDlayer0/electrochem/test_rank08_cv_peak.py
9Pierret junction + Shockley eğimleriPierret Böl. 5-6V_bi=0.716 V; W=0.972 μm; 60/120 mV/dekad✅ V_bi=0.7156→0.716; W=0.9716→0.972 (ε_r=11.8'i sabitler — katalog aktarımı 11.7 xfail ile belgeli); eğimler 59.64/119.27 (nominal %1 içinde). Shockley oracle 3/3 VERIFIEDlayer0/semiconductor/test_rank09_pierret_shockley.py
10SG vs central-difference akıFarrell (WIAS 2263); SelberherrSG sıfır: U_T·ln10 TAM✅ 8.9e-16; CD 18/11'de yanlış + yanlış işaretlayer0/numerics/test_rank10_sg_flux.py
11Levich RDE limit akımı (İLK konveksiyon terimi)Newman & Thomas-Alyea 3e; Cochran a=0.510230.620 sabiti <%0.5; j_L∝√ω✅ iki bağımsız yol (Γ'sız kuadratür + FD/Thomas) 5e-7 mutabakat → 0.620450; FD mertebe ≈2; √ω ölçeklemesi tam; boyutlu form oracle 2/2 VERIFIED. Rank-11 dersi (physics_learn'de): elle bileşik-sabit hesabı 0.620469 vermişti — çift-yol yakaladı; sabitler makine-değerlendirilirlayer0/electrochem/test_rank11_levich.py
12Tam PEMFC polarizasyon eğrisiParametre seti: Spiegel (2008)/FuelCellStore (ATIF DÜZELTMESİ 2026-07-09 — önceki "Kim/Barbir" yanlıştı). Merdiven standart ders-kitabı biçimi. Kim et al. JES 142(8):2670 (1995, DOI 10.1149/1.2050072) AYRI bir model (m·exp(n·i), i_L yok)Nitel çapalar: ~1.0 V OCV-yakını, ~0.6 V @ ≈1 A/cm², i_L=1.4 roll-off✅ MONTAJ (yeni formül yok — üç kayıp terimi rank-6'da oracle-doğrulamalı): V(1 mA/cm²)=0.997, V(1.0)=0.582, roll-off dikleşmesi ölçülü; Kim-biçimi Tafel+ohmik çekirdeği merdivenle ≤1e-12 özdeş. PROVENANS ÇÖZÜLDÜ (kaynak-araştırması): dolaşımdaki (0.085, 1.1) Kim'in m,n'i DEĞİL — Spiegel'in α₁ (V)/k (boyutsuz) sabitleridir (ayrı i_L ile kullanılır); standalone Kim terimi olarak fiziksel-saçma (i=0'da 85 mV offset). GERÇEK Kim A/cm² sabitleri (m≈3e-5 V, n≈8) fiziksel duvar üretir. Eski strict-xfail → geçen provenans testilayer0/fuelcell/test_rank12_pemfc_polarization.py
12″(kaynak-ikamesi, tarihçe) Uçtan-uca 1D SOFC hücre gerilimi — rank-12 ilk turda Barbir yerine elde-var O'Hayre ile kapatılmıştıO'Hayre 3e §6.2, Tablo 6.4ASR=0.176 Ω·cm²; η_ohm=0.088 V; η_cat=0.158 V; V=0.754 V✅ basılı zincir birebir; 2 formül oracle-VERIFIED; birim reçetesi belgelendilayer0/fuelcell/test_rank12_sofc_1d_cell.py
13Solar hücre FF/V_oc çapaları (çift-yol: Green 1981 vs tam maksimizasyon)Green, Solid-State Electronics 24 (1981); PVEducationFF₀ formülü ~1e-4 doğruluk sınıfı✅ çift-yol mutabakatı ≤1.4e-4 (v_oc 10.5-30); V_oc oracle 2/2 + FF₀ 3/3 VERIFIEDlayer0/semiconductor/test_rank13_solar_ff_voc.py
14Nicholson (1965) ΔEp-ψ çalışma tablosu, quasi-reversible CV (BV Robin sınırı)Nicholson, Anal. Chem. 37, 1351 — birincil-kaynak PDF transkripsiyonuTablo I: 13 (ψ, ΔEp·n) çifti✅ 13/13 çift ±2 mV (TARHAN değerleri grid-yakınsamış; artık fark 1965 tablo granülaritesi); BV(ψ=500)→Nernst limiti 0.08 mVlayer0/electrochem/test_rank14_nicholson.py

Yetenek doğrulamaları (katalog ötesi — motora yeni kabiliyet)

#VakaKaynakBeklenenDurumTest
T1Robertson stiff kinetiği — transient/BDF yeteneği (numerics/transient.py; scipy-delege stiff entegratör, analitik Jacobian, no-silent-degrade)Robertson 1966 / Hairer-Wanner "Solving ODEs II"; çapraz-kod: SUNDIALS CVODE cvRoberts_dns (cv_examples-5.7.0.pdf; RTOL/ATOL kaynak koddan doğrulandı)Korunum y1+y2+y3=1; SUNDIALS basılı tablo (12 dekad)✅ yapısal korunum Σ(RHS)≡0 → invariant makine-hassasiyeti (16 dekad); analitik Jacobian↔FD ~1e-11; 3 bağımsız yöntem (Radau/BDF/LSODA) ~1e-9 mutabık; SUNDIALS çapraz-kod pin: y3 tüm 12 dekad ≤4e-4, y1/y2 t≤4e8 eşiği 2e-3 (ÖLÇÜLEN maks 1.28e-3 — burada eskiden hatalı biçimde "≤1e-3" yazıyordu, ölçülen değer o iddiayı zaten aşıyordu; 2026-07-19 denetim düzeltmesi). Dürüst bulgu: SUNDIALS basılı tablosu gevşek-tol demo'su — t≥4e9'da kendi değerleri ~%1–33 kayar (yüksek-hassasiyet Radau ile teyitli; o rejimde gerçeğe korunum+tight-tol ile bağlanılır). Stiffness gerçekliği: RK45 [0,40]'ta BDF'ten ~740× nfev; y2 zirvesi 3.6487e-5layer0/numerics/test_robertson_stiff.py
T3Transient kronoamperometri (models/chronoamp1d) — transient/BDF primitifinin İLK domain uygulaması: method-of-lines difüzyon + BDFCottrell (rank-0 explicit-FD'nin implicit yolu); yarı-sonsuz erf çözümü + Cottrell akımı i=nFAc*√(D/πt)Akım Cottrell'e uzamsal O(h²); profil erf'e eşleşir✅ yüzey akısı Cottrell analitiğine temiz O(h²) yakınsar (ölçülen mertebe 2.000, 4 grid 100→800); profil erf'e ≤1e-4; akım t≥0.05'te ≤1e-3; implicit avantaj: BDF'in KABUL ETTİĞİ adım sayısı 483, explicit CFL gereksinimi (dt<dx²/2D → 8889 adım) → ölçülen oran 18.4×, sabit Jacobian bir kez değerlendirilir. DÜZELTME 2026-07-19: burada eskiden "≥100×" yazıyordu ve testi de boştu — nsteps alanı çıktı-noktası sayısını (=1) döndürüyordu, assertion 1 < 88.9'a iniyordu. count_steps=True ile gerçek adım ölçülüp eşik ölçüme bağlandılayer0/electrochem/test_chronoamp_transient.py
T2pn1d MMS uzamsal-mertebe — operatör-başına + TAM-KUPLAJLI MMS (Faz-1 "temiz mertebe" açık kalemini KAPATIR)Langtangen MMS disiplini (rank-3 ile aynı ruh); manufactured smooth alan + sürekli-operatör kaynağı; coupled-Newton = scipy.optimize.root (mimari: rezidüel bizim, Newton çözümü scipy'a delege)Her operatör + kuplajlı sistem temiz O(h²)✅ (a) izole _poisson_newton ve _continuity_solveüretim fonksiyonları doğrudan çağrılır — ikisi de 2.000 (6 grid 20→640), makine-hassasiyetine çözülür (Poisson-Newton tol=1e-13; SG doğrudan tridiag); (b) üretim konvansiyonlarını yeniden üreten TEST-YEREL bir (ψ,n,p) ayrıklaştırma, kuplajlı+makine-hassasiyetli çözüldüğünde (coupled-Newton=root) yine 2.000 (4 grid) — kuplaj mertebeyi bozmaz. (Üretimden DOĞRUDAN paylaşılan tek parça bernoulli; Laplacian/diverjans/işaretler test-içinde yeniden ifade edilir — "motorun ayrıklaştırması" demek fazla güçlü olurdu, 2026-07-15 review.) Kaynak-işareti yük-taşıyan (ters işaret yakınsamaz — regresyon bekçili). KAPSAM (2026-07-15 review'da daraltıldı): (b)'nin rezidüeli TEST KURGUSUDUR — solve_bias'ta kuplajlı çözüm yolu YOK, kaynak-enjeksiyonun motorda karşılığı YOK; denge-durumunda ‖F‖~1e-14 eşleşmesi güçlü kanıt ama KİMLİK İSPATI DEĞİL (tek durum). ÖLÇÜLEN: ayrıklaştırma mertebesi. ÖLÇÜLMEYEN: üretimdeki Gummel solve'un mertebesi (gürültü tabanı orada duruyor) → gerçek coupled-Newton MOTOR MODU açık kalemlayer0/semiconductor/test_pn1d_mms_order.py

Kurallar

  • Kod kopyalanmaz — lisans durumu ne olursa olsun (Britz Fortran: lisanssız; nanoHUB: CC BY-NC-SA; Kulikovsky: license:null; Langtangen kitabı CC BY ama repo lisansı doğrulanamadı). Algoritma basılı metinden yeniden yazılır, köken loglanır.

  • Sabitler vaka girdisidir — Hu (ε_r=12, kT/q=0.026) vs Pierret (ε_r=11.8 — katalog aktarımı 11.7 idi, W=0.972 μm çapası 11.8'i sabitledi [rank-9 xfail]; 0.0259, n_i=1e10) vs Sze (n_i=9.65e9): motor hiçbirini hardcode etmez.

  • Tolerans politikası (2026-07-15 review'da MUTLAK İDDİA GERİ ÇEKİLDİ) — eskiden burada "Keyfî tolerans yok" yazıyordu; bu README ile çelişiyordu ve doğru değildi. 2026-07-19 TAM DENETİMİ suite'teki 192 eşiğin tamamını sınıflandırdı:

    SınıfAdetAnlamı
    A basılı-hane32sınır, yayınlanmış sayının basılı son hanesi
    B mertebe/limit13iddia edilen büyüklüğün KENDİSİ ölçülmüş mertebe veya Richardson limiti
    C yapısal76makine-hassasiyeti kimliği, korunum, monotonluk, işaret, ValueError bekçisi — aslında tolerans değil
    D ölçülmüş-marjlı52ölçülen ve KODA YAZILMIŞ bir değere bilinçli marjla konmuş regresyon bekçisi
    E nitel kaynak bandı5kaynağın sözel tarifini kodlayan aralık (ör. "OCV-yakınında ~1.0 V")
    F türetilmemiş14basılı sayı yok, ölçülmüş mertebe yok, kayıtlı ölçüm yok

    Yani 121/192 ya basılı haneye/ölçülmüş mertebeye bağlı ya da hiç tolerans değil; 52'si kayıtlı ölçüm + seçilmiş marj. Geriye 14 türetilmemiş eşik kalır — gizlenmez. 11'i koruduğu değerin 15×–1e11× üstünde gevşektir (güvenli ama sayı hiçbir şeye bağlı değil); 2'si dar paylıdır ve regresyonda kırılgandır (test_rank04_semiintegral.py:43 → 3e-3 vs ölçülen 2.9312e-3, %2.3 pay; test_robertson_stiff.py:135 → 2e-3 vs ölçülen 1.28e-3). Tam liste ve dosya:satır için denetim raporu: ~/malzeme simulasyon/tasks/tolerance-audit-2026-07-19.md. "Hepsi pinlidir" DENMEZ; "disiplinimiz yok" da denmez — her eşik sınıfıyla etiketlenir.

  • Baskı kaydı — her vakanın hangi baskıdan/transkripsiyondan geldiği yazılır; şüpheli aktarım xfail(strict) ile açık kalem yapılır (rank-1 λ(0.3) örneği).

  • xfail İKİ AYRI TÜRDÜR — karıştırılmaz (2026-07-15 bağımsız review düzeltmesi):

    1. Transkripsiyon-içi çelişki (aritmetikle gösterildi): transkribe edilen basılı girdiler transkribe edilen basılı cevabı üretmiyor (O'Hayre D=0.1-vs-0.2; Hu A²-yerine-1e-8). SINIR: kaynak dosyaları repo'da DEĞİL (telif) → çelişki bizim transkripsiyonumuz üzerinden gösterilir; "kitap kanıtlanmış yanlış" demek temiz-checkout'tan doğrulanamaz (2026-07-15 review daraltması).
    2. Teyit edilmemiş provenans: aktarımımız ile hesap uyuşmuyor ama hangisinin yanlış olduğu basılı kaynaktan teyit EDİLMEDİ (Springer λ(0.3); Pierret ε_r). Bu "kaynak yanlış" DEMEK DEĞİLDİR. Emsal: rank-12'nin (0.085, 1.1) sabitleri kaynak hatası sanılıyordu; birincil-kaynak araştırması hatanın BİZDE olduğunu gösterdi (Spiegel α₁/k). Tür-2 xfail'ler birincil-kaynak araştırmasıyla kapatılır — sayı olarak "yakalanan kitap hatası" sayılmaz.