# Elmer doğrulama oracle'ı (dev makinesi ölçüm aleti)

**2026-07-15.** `motor/dokum` katılaşma çözücüsünü **bağımsız bir kodla** doğrulama girişimi.
Amaç: `yariSonsuzKalip` varsayımının ("kalıp hücresi yok, effusivite emici BC") bedelini
ölçmek — kalıp ısınmasını körlemesine eklemeden önce.

## ⚠️ LİSANS — bu ÜRÜNE GİRMEZ
Elmer ve gmsh **GPL**. GPL **kullanımı değil DAĞITIMI** kısıtlar (GPL §0: "kopyalama,
dağıtma ve değiştirme dışındaki faaliyetler bu lisansın kapsamı dışındadır"). Burası bir
dev makinesi ölçüm aleti: fikocad'e hiçbir şey linklenmiyor, kimseye dağıtım yok, çıkan
sayı bizim verimiz.

⛔ **Sınır:** bu imajı müşteriye göndermek = dağıtım = GPL yükümlülüğü doğar.
⛔ `libGmsh`/OpenFOAM'ı fikocad'e linklemek = fikocad GPL olur = ölümcül.
`docs/cae_kutuphane_plani.md` bunu zaten "altın kural" diye doğru yazmış.

## Çalıştırma
```powershell
cd docs\arastirma\elmer-dogrulama
docker build -t fiko-elmer-oracle:2 .
docker run --rm -v "${PWD}:/case" fiko-elmer-oracle:2 sh -lc `
  'gmsh -3 kup.geo -o kup.msh -format msh2 && ElmerGrid 14 2 kup.msh -autoclean -out mesh && ElmerSolver kup.sif'
```
Sonuç: `maxT.dat` (adım başına global maks sıcaklık, dt=0.5s). Katılaşma anı =
maks T'nin **555.6°C**'ye düştüğü an (fikatia'nın `hedefFs=0.99` ölçütünün ikizi:
615 − 0.99×60).

Üretilen `kup.msh` / `mesh/` / `cozum.log` repoya alınmadı — yeniden üretilebilir (~6.8 MB).

## Dosyalar
| dosya | ne |
|---|---|
| `Dockerfile` | Elmer 26.2 + gmsh, **resmî CSC PPA'sından** (Docker Hub'da resmî Elmer imajı YOK; çıkanlar rastgele 3. şahıs). ⚠️ `--no-install-recommends` libopenblas'ı kırpar → ElmerSolver açılmaz |
| `kup.geo` | 40mm AlSi7Mg küp + silika kum, 1/8 oktant (simetri). `BooleanFragments` şart — `BooleanDifference` uyumsuz mesh bırakır |
| `kup.sif` | İlk vaka: görünür-ısı-sığası c(T). **ÇIKTISI ÇÖP** (aşağıya bak) |
| `tani.sif` | Entalpi faz-değişim modeli denemesi → **segfault** (açık) |
| `maxT.dat` | `kup.sif` sonucu (900 adım × 0.5s) — çöp olduğunun kanıtı olarak saklandı |

## ⛔ SİF TUZAKLARI (pahalı öğrenildi)
1. **`Phase Change Model` Solver bölümüne KONULMAZ** → sif ayrıştırması bozulur, sonraki
   anahtarlar SESSİZCE yutulur. Belirti yanıltıcı: *"Give Linear System Solver"* hatası,
   oysa satır orada duruyor. Yeri: **Simulation** bölümü.
2. **ElmerGrid sınırları YENİDEN NUMARALAR**: gmsh `Physical Surface("dis",3)` → Elmer'de
   **1**. `Target Boundaries = 3` sessizce hiçbir şey yapmaz (BC yok = adyabatik).
   Hep `mesh/mesh.names` ile doğrula.
3. **AÇIK BUG**: `Phase Change Model = "Spatial 2"` + `Enthalpy` tablosu → **segfault**
   (Solver.F90:92).

## ⭐ ASIL DERS: enerji sınırı Elmer'den çok iş gördü
Elmer ilk koşuda **103.1s** verdi. El ile enerji dengesi bunu çöp diye eledi:

- Metal oktant 0.02144 kg × 524.167 J/kg = **Q = 11.238 J** (700→555.6°C, gizli ısı dahil)
- Kum yarı-sonsuz emilimi: `Q(t) = A·b·ΔT·2√t/√π`, A=1.2e-3 m² (oktantın 3 açık yüzü),
  b = √(kρc) = 1059.8, ΔT = 531–560 → **t = 195–217s**
- 103s bu **alt sınırın altında** = kum o ısıyı o sürede EMEMEZ = vaka bozuk.
- İkinci işaret: t=0.5s'de max = 689.4°C, oysa Fo = 0.07 → merkez dokunulmamış,
  max **700.0 kalmalı**.
- Hipotez: dt=0.5'te ~20°C/adım, 60°C'lik mushy bandı atlanıyor → c(T) band dışında
  değerlendiriliyor → **gizli ısı kayboluyor** (klasik apparent-heat-capacity tuzağı).

**KABUL ÖLÇÜTÜ (bundan sonra herkes için): Elmer sonucu enerji sınırını GEÇMELİ.
Geçmiyorsa oracle değil, çöptür.**

## fikatia ÇÜRÜTÜLMEDİ (önemli)
| kaynak | süre |
|---|---|
| Chvorinov klasik (yalnız L) | 107.7s |
| **el enerji sınırı (ALT SINIR)** | **195–217s** |
| fikatia res=40 / res=72 | 286.9s / 277.0s |
| ~~Elmer (bozuk vaka)~~ | ~~103.1s~~ çöp |

Enerji sınırı **alt** sınırdır: her yüzün kumunu bağımsız yarı-sonsuz sayar. Gerçekte
küpün köşe/kenarlarında kum **paylaşılır** → çabuk doyar → az emer → **gerçek süre daha
uzun**. fikatia'nın 277s'i (+%28) bu etkiyle **tutarlı**.
→ fikatia elimizdeki hiçbir bağımsız referansla çelişmiyor. Açık soru: +%30 köşe
düzeltmesi doğru mu?

## Sırada
1. Segfault: `Spatial 2` yerine **`Temporal`** modelini dene; ya da `Enthalpy` yerine
   `Latent Heat` + `Melting Point`/`Solidus`/`Liquidus` anahtarları.
2. Alternatif (Elmer semantiğine bağımsız): c(T) görünür-sığası KALSIN ama **dt=0.05**
   (~2°C/adım, 60°C bandı ~30 örnek). Pahalı (~90dk) ama yöntem riskini atlar.
3. ⛔ Her iki yolda da: sonuç **195–217s'in ÜSTÜNDE** çıkmalı. Altındaysa yine gizli ısı
   kaybı var demektir.

## Kalibrasyon boşluğu (kodla kapatılamaz)
Elmer de fikatia'nın `arayuzH = 1000` değerini **girdi olarak yiyor** → ortak bilinmeyen
paylaşılıyor. Elmer *modelleme* hatalarını (soğuk kalıp varsayımı, merdiven-basamağı)
ayıklar, *kalibrasyon* bilinmeyenini ayıklamaz. Onu yalnız **termokupl eğrisi veya
kesilmiş parça + gerçek porozite yeri** söyler.

İlgili hafıza: `fikatia-elmer-oracle`, `fikatia-dokum-kalibrasyon`.
