-- ============================================================================ -- SEFERBERLİK KABUL TESTİ (21.07.2026) — tüm yeni yığını TEK senaryoda sınar. -- Makro Paleti'nden ya da MCP'den çalıştırılır; her adım GEÇTİ/KALDI basar. -- Amaç: birim testlerin göremediği UYGULAMA KATMANI bağlarını (belge verisi, MCP -- köprüleri, kalıcılık) her sürümde tekrar doğrulayabilmek. -- NOT: sahneye geçici gövdeler ekler; sonunda temizler. -- ============================================================================ local gecti, kaldi = 0, 0 local function kontrol(ad, kosul, detay) if kosul then gecti = gecti + 1; fiko.log(string.format(" [GECTI] %s%s", ad, detay and (" — " .. detay) or "")) else kaldi = kaldi + 1; fiko.log(string.format(" [KALDI] %s%s", ad, detay and (" — " .. detay) or "")) end end local function yakin(a, b, tol) return math.abs(a - b) <= tol end fiko.log("=== SEFERBERLİK KABUL TESTİ ===") -- 1) Sahne + toplu tampon yükleme yolu (T42: 1979 ms → 57 ms) -- ÖLÇÜLDÜ 07-21: TAZE süreçte İLK gövde ~2000 ms sürer (yükleme, sunum motoru -- geri-basıncı yüzünden bir kareyi bekler — bkz. T56/T72); sonrakiler 6–7 ms. -- Bu yüzden test SOĞUK maliyeti raporlar ama SICAK maliyeti KONTROL EDER. local t0 = os.clock() local isinma = fiko.sahne.ekle("kutu") fiko.sahne.parametreAyarla(isinma, 10, 10, 10) local soguk = (os.clock() - t0) * 1000 fiko.sahne.sil(isinma) t0 = os.clock() local kiris = fiko.sahne.ekle("kutu") fiko.sahne.parametreAyarla(kiris, 100, 20, 20) fiko.sahne.adAyarla(kiris, "KabulKiris") local eklemeMs = (os.clock() - t0) * 1000 fiko.log(string.format(" (bilgi) SOĞUK ilk gövde: %.0f ms — açılış sonrası ilk işlem", soguk)) kontrol("gövde ekleme (sıcak) hızlı", eklemeMs < 100, string.format("%.0f ms", eklemeMs)) -- 2) FEM: analitik doğrulama (σ = F/A) + kalite ölçüsü + simetri kipi local F = 4000 local r = fiko.cae.coz(kiris, {cozunurluk = 20, sabitYuz = "-x", yukYuz = "+x", fx = F, sabitKip = "simetri"}) kontrol("FEM çözümü döndü", r ~= nil) if r then local A, L = (r.ny * r.h) * (r.nz * r.h), r.nx * r.h kontrol("FEM yakınsadı", r.yakinsadi == true, string.format("adım=%d artık=%.1e", r.adim, r.artik)) kontrol("gerilme ≈ F/A", yakin(r.enBuyukGerilme, F / A, F / A * 0.05), string.format("%.3f MPa (analitik %.3f)", r.enBuyukGerilme, F / A)) kontrol("simetri kipinde uzama ≈ FL/AE", yakin(r.yukYuzYer, F * L / (A * 210000), F * L / (A * 210000) * 0.01), string.format("%.6e", r.yukYuzYer)) kontrol("kafes kalite ölçüsü var", (r.enIncedeHucre or 0) >= 4, string.format("en ince yönde %d hücre", r.enIncedeHucre or -1)) end -- 3) CAE kurulumu BELGE verisi (v1.19 CAEK) — kaydet/aç bunu korur fiko.cae.kurulumKaydet(kiris, {cozunurluk = 20, E = 210000, nu = 0.3, sabitYuz = "-x", yukYuz = "+x", fx = F, simetri = 1}) local kur = fiko.cae.kurulumlar() kontrol("CAE kurulumu belgede", kur and #kur > 0 and kur[1].dugum == kiris) -- 4) Kinematik: akıllı mafsal önerisi + kapalı zincir + DMU local mil = fiko.sahne.ekle("silindir") fiko.sahne.parametreAyarla(mil, 10, 0, 60) fiko.sahne.adAyarla(mil, "KabulMil") local burc = fiko.sahne.ekle("silindir") fiko.sahne.parametreAyarla(burc, 10, 0, 20) fiko.sahne.adAyarla(burc, "KabulBurc") local oneri = fiko.kinematik.oner(mil, burc) kontrol("mafsal önerisi geldi", oneri and #oneri > 0, oneri and #oneri > 0 and string.format("%s (güven %.2f)", oneri[1].tip, oneri[1].guven) or nil) fiko.kinematik.sifirla() local uM = fiko.kinematik.uzuvEkle("Mil", mil) local uB = fiko.kinematik.uzuvEkle("Burc", burc) fiko.kinematik.sabitle(uM) local mf = fiko.kinematik.onerEkle(uM, uB, 1) kontrol("öneriden mafsal kuruldu", mf ~= nil) local d = fiko.kinematik.durum() kontrol("DOF hesabı", d.dof == 1, string.format("uzuv=%d mafsal=%d DOF=%d", d.uzuv, d.mafsal, d.dof)) fiko.kinematik.uygula() -- 5) Performans köprüsü + arka plan iş görünürlüğü local m = fiko.perf.metrik() kontrol("perf metriği okunuyor", m ~= nil and m.kareMs > 0, m and string.format("fps=%.1f kareMs=%.1f ram=%.0fMB", m.fps, m.kareMs, m.ramMB) or nil) kontrol("arka plan iş sayacı", fiko.gorev.mesgul() ~= nil) -- 6) Temizlik (geçici gövdeler sahnede kalmasın) fiko.kinematik.isaretTemizle() for _, id in ipairs({kiris, mil, burc}) do fiko.sahne.sil(id) end fiko.log(string.format("=== SONUC: %d GECTI, %d KALDI ===", gecti, kaldi))