# FikoYT Engineering Platform — CAE / Analiz Kütüphane Yığını + Döküm Simülasyon Mimarisi

> **Amaç:** fikatia-local (native C++23 / Vulkan / ImGui / OCCT / OpenCAMLib, Windows/MSVC/vcpkg+vendored) için CAE/analiz kütüphane yığınını **ticari satılabilir ürün** hedefiyle seçmek ve entegrasyon planını çıkarmak.
> **Ana hedef alan:** DÖKÜM SİMÜLASYONU (dökümhane) — MAGMASOFT/ProCAST eşdeğeri açık kaynak boru hattı.
> **Kural (LİSANS):** GPL bulaşıcılığı = KIRMIZI bayrak (in-process alınmaz). LGPL dinamik link kabul. GPL/AGPL yalnız **ayrı süreç (external solver exe)** olarak kullanılır — kendi kodumuza linklenmez. MIT/BSD/Apache serbest.

---

## 0. Mevcut durum (native) — neyin üstüne kuruyoruz

| Katman | Modül | İçerik | CAE'ye katkı |
|--------|-------|--------|--------------|
| Geometri çekirdeği | `motor/geometri` (`brep.hpp`) | OCCT sarmalayıcı: STEP/BREP/boolean/fillet/mesh (TKMesh) | **CAE girdi geometrisi + yüzey mesh kaynağı** |
| CAM/kütük voxel | `motor/kutuk` | `dexel3_motor`, `dexel3_gpu_motor`, `zbuffer6_motor`, `kutuk_motor` — Vulkan compute voxel/dexel | **Döküm voxel grid altyapısı HAZIR** (aynı SSBO/dispatch kalıbı) |
| Orkestrasyon | `motor/cekirdek` (`gorev.hpp`, `cekirdek.hpp`) | `GorevSistemi` (worker havuzu, ilerleme, iptal, main-thread finalize), `OlayGunlugu` | **External solver + ağır CPU işi orkestrasyonu HAZIR** |
| Render | `motor/render` | `vulkan_baglam`, `compute_baglam`, `mesh_veri`, `gpu_tampon` — kendi Vulkan motoru | **Sonuç görselleştirme = kendi Vulkan (VTK gömmeye gerek YOK)** |
| Katkı registry | `cekirdek` + `motor/betik` (Lua) + `motor/eklenti` (DLL) + `olay` | makro/plugin/olay üçlüsü | Her yeni CAE modülü doğduğu an makro+plugin+olay erişilebilir |

**Vendoring kalıbı** (`ucuncu_taraf/opencamlib/CMakeLists.txt`): resmi CMake yerine yalın `add_library(... STATIC)` + `fiko::ad` alias + `/W0` vendor uyarı bastırma + vcpkg include. **vcpkg kalıbı:** `find_package(X CONFIG REQUIRED)` + `TK*` benzeri hedef link (bkz `motor/geometri/CMakeLists.txt` OCCT).

**KRİTİK web referansı:** `fikoyt-sistem/.../IFikoThreeJS/fiko-dokum-kontrol/` — **elle yazılmış MAGMASOFT-lite** zaten var:
- `FikoDokumKontrol.ts` — orkestratör: mesh→voxel→cidar kalınlığı→gösterge→yolluk
- `simulasyon/IDokumSim.ts` — **voxel FDM dolum** sözleşmesi (Flemings akışkanlık, cold shut/misrun, termal akış, filtre/maça/hava deliği)
- `simulasyon/IKatilasmaSim.ts` — **entalpi yöntemi katılaşma** (∂H/∂t=∇·(k∇T)), Niyama (G/√Ṙ), SDAS, sıcak yırtılma (Clyne-Davies), semi-infinite kum modeli, chill/besleyici
- `FikoDolumSimulasyon.ts`, `FikoKatilasmaSimulasyon.ts`, `FikoSurfaceNets.ts`, `FikoVoxelKafes.ts`
- `FikoMethodingHesap.ts`, `FikoYollukYonetici.ts` — yolluk/besleyici/hava deliği öner+doğrula

Bu, native döküm sisteminin **algoritma/veri-modeli referansıdır** (web kodu kopyalanmaz; algoritma taşınır). Native'de aynı voxel FDM mantığı Vulkan compute'a taşınır; yüksek-doğruluk için Elmer external eklenir.

---

## 1. KARAR TABLOSU

Entegrasyon şekli: **in-process** (kendi kodumuza linklenir) · **external** (ayrı exe/süreç, GorevSistemi ile çalıştır+dosya parse) · **alma** (gerek yok / mevcutla karşılanıyor).

| Kütüphane | Lisans | MSVC/vcpkg | Entegrasyon | fikatia rolü | Öncelik | Gerekçe |
|-----------|--------|-----------|-------------|--------------|---------|---------|
| **OCCT** | LGPL-2.1+exc | ✅ vcpkg (mevcut) | **in-process** (var) | CAD çekirdek: geometri, STEP, boolean, mesh | — | Zaten var, CAE geometri girdisi. |
| **Gmsh** | GPL-2+ (**dar** linking exc) | ⚠️ vcpkg yok — resmi SDK/binary | **external** (exe) — libGmsh in-proc YASAK | Tetra/hex hacim mesh (FEM/CFD/döküm girdisi) | **P0** | En olgun, OCCT/STEP okur, `.msh`/VTK yazar. **KRİTİK (2026 doğrulama):** Gmsh linking exception YALNIZ Netgen/METIS/OpenCASCADE/ParaView ile birleştirmeye izin verir — **kapalı-kaynak ticari kodla linklemeye İZİN VERMEZ** ("kapalı-kaynağa entegre için ayrı lisans gerek" — gmsh.info/LICENSE). Yani `libgmsh`/`gmsh.h` C++ API'sini fikatia'ya **linkleme**; `gmsh.exe` ayrı süreç (dosya köprüsü) tek temiz yol. Tek mesher seçimi. |
| **Netgen** | LGPL-2.1 | ⚠️ vcpkg yok (kaynak/binary) | in-process (LGPL) veya external | Alternatif tetra mesher (OCCT entegre) | P2 | LGPL in-process link edilebilir; ama Gmsh external ile aynı işi görür → yedek. |
| **TetGen** | **AGPL-3** | ⚠️ | **ALMA** | — | ❌ | **AGPL = ticari zehir.** Gmsh içindeki boundary-recovery Gmsh lisansına relicense; müstakil TetGen alınmaz. |
| **CGAL** | dual GPL/LGPL | ✅ vcpkg | **kısmi in-process** (yalnız LGPL çekirdek) | Delaunay/convex hull/AABB tree/mesh onarım | P2 | Kernel+support LGPL (kullanılabilir); yüksek algoritmalar GPL (kaçın). OCCT + kendi BVH çoğu ihtiyacı karşılar → seçici al. |
| **VTK** | BSD-3 | ✅ vcpkg (dev) | **veri formatı in-process** (yalnız IO), render GÖMME | VTU/VTK/VTM sonuç dosyası oku/yaz | **P0** | BSD temiz. Ama tüm VTK ağır (~yüzlerce MB). **Sadece IO gerekli** → hafif VTU/legacy-VTK parser kendi yaz VEYA `vtkIOXML` modülü seçici link. Render kendi Vulkan. |
| **Jolt Physics** | **MIT** | ✅ vcpkg (`joltphysics`) | **in-process** | Rigid body, montaj çarpışması, kinematik, düşme/yerçekimi | P3 | MIT + multicore + VS2022/C++17. Montaj çarpışma tespiti + mekanizma kinematiği için. Bullet'a tercih. |
| **Bullet** | ZLib | ✅ vcpkg | ALMA | — | ❌ | Jolt daha modern/hızlı/temiz API. Mükerrer. |
| **ODE** | LGPL/BSD | ✅ vcpkg | ALMA | — | ❌ | Eski, Jolt kapsar. |
| **CalculiX** | GPL-2+ | ⚠️ binary (ccx.exe) | **external** (exe) | Yüksek-doğruluk yapısal FEM (gerilme/termal, Abaqus .inp) | P2 | GPL → yalnız exe. `.inp` yaz → `ccx` çalıştır → `.frd` parse. Endüstri standardı. |
| **Elmer FEM** | **ÇEKİRDEK LGPL-2, modüller GPL** | ⚠️ binary (ElmerSolver.exe) | **external (exe) birincil**; libelmersolver LGPL → in-proc mümkün | **Termal + katılaşma + multiphysics** — DÖKÜM KATILAŞMA ÇÖZÜCÜ | **P0** | **DÜZELTME (2026 doğrulama):** 2012'den beri `libelmersolver` + `matc` + `fhutiter` **LGPL-2.0** (viral değil, non-LGPL kodla linklenebilir). ElmerGUI/ElmerGrid + **hazır fizik solver modülleri (ısı vb.) hâlâ GPL**. Pratik yol: `.sif`+Gmsh mesh → `ElmerSolver.exe` external (hazır ısı/faz-değişim modülü GPL, ayrı süreç temiz). İLERİ opsiyon: kendi katılaşma solver modülümüzü sıfırdan yazıp LGPL libelmersolver'a linklemek (istediğimiz lisansla dağıtılabilir) — ama iş yükü external'dan çok fazla. **Kaynak:** elmerfem.org/blog/license. |
| **MFEM** | **BSD-3** | ⚠️ vcpkg var (kısmi) | **in-process** | Hafif in-process FEM (termal/gerilme) yüksek-mertebe | P3 | BSD → linklenebilir! External'a alternatif "gömülü çözücü". Kütüphane olarak API zor; P0'da Elmer external daha hızlı yol. GPU: CUDA/HIP var, Vulkan yok. |
| **deal.II / libMesh** | LGPL-2.1 | ⚠️ ağır | ALMA | — | ❌ | Çok ağır, uzun derleme, MFEM/Elmer kapsar. Over-engineering. |
| **Kratos Multiphysics** | **BSD-3** | ⚠️ vcpkg yok | in-process (ağır) | Çok-fizikli (CFD+FEM+DEM), döküm workflow'ları var | ❌/P3 | BSD temiz ama **çok ağır** (Python-merkezli, C++ çekirdek + Python orkestrasyon; devasa bağımlılık). Elmer external + kendi voxel FDM daha yalın. Alma. |
| **OpenFOAM** | GPL-3 | ⚠️ Windows: **blueCFD-Core** (unofficial native port) VEYA WSL/Docker | **external** (blueCFD exe / WSL) | CFD: döküm dolum akışı (yüksek-doğruluk VOF), termal-akış | P2 | GPL → yalnız external. **DÜZELTME:** Windows'ta salt-WSL değil — **blueCFD-Core** OpenFOAM'ı native Win10/11 exe olarak paketler (CfdOF FreeCAD workbench de bunu kullanır). `interFoam`/`compressibleInterFoam` = VOF serbest yüzey dolum. **Faz-1 dolum kendi native çözücü**; OpenFOAM = D-VOF üretim-doğruluğu katmanı. Kaynak: bluecfd.github.io. |
| **SPlisHSPlasH (SPH)** | **MIT** | ⚠️ vcpkg yok (kaynak) | in-process | **Serbest-yüzey dolum (SPH)** — parçacık tabanlı, mesh-siz | P2 (fark yaratır) | **YENİ değerlendirme:** SPH mesh-siz Lagrangian → sıçrama/parçalanma/hava-hapsi/serbest-yüzey ProCAST'ten **daha iyi yakalar** (literatür: dolum-süresi/sıvı-seviye/morfoloji SPH > ProCAST; HPDC için kanıtlı). MIT → **in-process gömülebilir**, GPU'ya (Vulkan compute) taşınabilir. Ama SPH döküm-özel fizik (katılaşma kuplajı, ısı) SPlisHSPlasH'te yok → çekirdek SPH alınır, döküm fiziği kendi eklenir. **Kade-1 dolum alternatifi VOF-voxel yerine SPH** olabilir. Kaynak: Cleary HPDC SPH, ScienceDirect. |
| **SU2** | LGPL-2.1 | ⚠️ | external | Sıkıştırılabilir CFD/aerodinamik | ❌/P3 | Döküm için aşırı; havacılık odaklı. Alma (dökümhane hedefi dışı). |
| **PCL** | BSD-3 | ✅ vcpkg | in-process | Nokta bulutu: scan/filtreleme/segmentasyon | P3 | BSD temiz ama **ağır** (Boost/FLANN/VTK bağımlılığı). Reverse engineering için. |
| **Open3D** | **MIT** | ⚠️ vcpkg kısmi | in-process | Nokta bulutu: ICP/registration/reconstruction | P3 | MIT + hafif API + modern. **PCL'e tercih** (ICP/scan hizalama için). |
| **Ceres** | BSD-3 | ✅ vcpkg | in-process | Non-lineer en-küçük-kareler (kısıt çözücü, ICP refine) | P3 | BSD ama SuiteSparse (GPL) opsiyonel → **SuiteSparse'sız derle**. Sketch constraint solver'a alternatif. |
| **NLopt** | LGPL/MIT | ✅ vcpkg | in-process | Genel optimizasyon (yolluk/besleyici boyut opt.) | P3 | Hafif, MIT-benzeri parçalar. Döküm parametre optimizasyonu için ileride. |
| **Ipopt** | EPL-2.0 | ⚠️ | ALMA | — | ❌ | Kısıtlı NLP ağır; NLopt yeter. |
| **LibreDWG** | GPL-3 | ⚠️ | **external/ALMA** | DXF/DWG oku | P3 | GPL → in-process alınmaz. DXF için **libdxfrw (BSD)** veya kendi minimal DXF parser tercih. |
| **NanoSVG** | ZLib | header-only | in-process | SVG oku (sketch/logo) | P3 | Tek header, temiz. Sketch import için hafif. |
| **PLY (miniply/tinyply)** | MIT/public | header-only | in-process | PLY nokta/mesh oku-yaz | P2 | Open3D/PCL almadan mesh IO. Hafif. |

---

## 2. ÖNERİLEN YIĞIN (minimal ama güçlü — mükerrer alma yok)

**Prensip:** OCCT + kendi Vulkan render + kendi voxel altyapısı (`motor/kutuk`) çekirdeği zaten güçlü. CAE'yi bunun üstüne **external solver + hafif in-process IO** ile kur. Ağır GPL kütüphaneleri asla linkleme.

### 2.1 Net seçimler

| Karar | Seçim | Neden |
|-------|-------|-------|
| **Hacim mesher (tek seçim)** | **Gmsh (external exe)** | En olgun, OCCT/STEP okur, tetra+hex, `.msh`+VTK yazar. GPL sorunu external ile çözülür. Netgen = P2 yedek (LGPL in-process gerekirse). TetGen ELE ALINMAZ (AGPL). |
| **Mesh onarım / Delaunay / convex hull** | **OCCT (var) + kendi BVH**; boşluk kalırsa **CGAL LGPL çekirdek** | Çoğu ihtiyaç OCCT `TKMesh` + kendi kod ile karşılanır. CGAL yalnız LGPL foundation paketleri (Delaunay_triangulation, AABB_tree) seçici alınır; GPL yüksek algoritmalardan kaçın. |
| **FEM (termal/katılaşma)** | **Elmer (external)** birincil; **MFEM (in-process, BSD)** opsiyonel gömülü | Elmer = hızlı entegrasyon (dosya-tabanlı), döküm katılaşma birebir. MFEM = ileride BSD gömülü çözücü isteyene. deal.II/libMesh ALMA. |
| **FEM (yapısal gerilme)** | **CalculiX (external)** | Abaqus `.inp` endüstri standardı, `.frd` sonuç. Elmer de yapabilir ama CalculiX yapısal için daha olgun. |
| **CFD dolum** | Faz-1 **kendi Vulkan compute dolum** (voxel-VOF **veya** SPH, `motor/kutuk` üstüne); Faz-2 **OpenFOAM (external, blueCFD-Core native Win exe)** | Basit dolum cephesi native yeter (web'de kanıtlı). Serbest-yüzey doğruluğu için iki yol: (a) voxel-VOF (MAGMA/FLOW-3D tarzı, `motor/kutuk` SSBO'ya doğal), (b) **SPH** (SPlisHSPlasH MIT çekirdek — sıçrama/hava-hapsi ProCAST'ten iyi, GPU'ya taşınır). Üretim doğruluğu: OpenFOAM interFoam **external** (blueCFD native exe — WSL zorunlu değil). SU2 ALMA. |
| **Fizik/kinematik** | **Jolt (in-process, MIT)** | Montaj çarpışma + mekanizma. Bullet/ODE ALMA (mükerrer). |
| **Nokta bulutu** | **Open3D (in-process, MIT)** birincil; PCL yalnız gerekirse | ICP/registration için Open3D hafif+MIT. PCL ağır (VTK/Boost) → kaçın. |
| **Optimizasyon** | **NLopt (in-process)** + gerekirse **Ceres (SuiteSparse'sız)** | Yolluk/besleyici boyut opt. Ipopt ALMA. |
| **Sonuç IO** | **VTK yalnız `vtkIOXML` modülü** VEYA kendi VTU parser | Elmer/OpenFOAM çıktısı VTU. Tüm VTK ağır → seçici modül ya da minimal parser. |
| **Format** | **NanoSVG (SVG)**, **tinyply (PLY)**, **libdxfrw/kendi (DXF)** | Hepsi hafif/temiz lisans. LibreDWG (GPL) external/kaçın. |

### 2.2 Yeni vendored/vcpkg paketleri (özet)
- **vcpkg (in-process, temiz lisans):** `joltphysics` (MIT), `open3d` (MIT, kısmi), `nlopt`, `ceres` (SuiteSparse kapalı), `vtk[core,ioxml]` (seçici) — hepsi `find_package(... CONFIG)` + hedef link kalıbı (OCCT gibi).
- **External binary (repo dışı, GorevSistemi ile çağrılır):** Gmsh SDK (**libGmsh linklenmez**, sadece gmsh.exe), ElmerSolver.exe (hazır GPL modüller ayrı süreçte), CalculiX (ccx.exe), (opsiyonel) OpenFOAM **blueCFD-Core native Win exe** (WSL/Docker yedek).
- **Vendored (`ucuncu_taraf/`):** `nanosvg`, `tinyply`, **SPlisHSPlasH SPH çekirdek (MIT, gerekirse dolum için)**, (gerekirse) CGAL header-only LGPL alt-küme.

### 2.3 Doğrudan açık kaynak DÖKÜM sim projeleri (2026 tarama — hazır çözüm var mı?)
Hedefe birebir "hazır" gömülebilir OSS döküm çözücü **YOK** (bu yüzden kendi çekirdek + external solver zorunlu):
- **OpenCast** — araştırma amaçlı, basit dolum+katılaşma; endüstriyel değil, olgun değil.
- **PoligonSoft FREE** — ücretsiz ama **kapalı kaynak** (kod alınamaz, sadece fikir/UX referansı).
- **CfdOF (FreeCAD workbench, LGPL)** — OpenFOAM'ı FreeCAD'e bağlar; döküm-özel değil, genel CFD. **Kod kopyalanmaz, iş-akışı/case-üretim referansı** (Gmsh→OF→VTU köprü kalıbı).
- **EOF-Library** — Elmer+OpenFOAM coupler (MHD/serbest-yüzey); kuplaj kalıbı fikri.
- **Sonuç:** "MAGMA sınıfı" hazır OSS yok → fikatia'nın **kendi Vulkan çekirdek çözücü + Gmsh/Elmer/OpenFOAM external orkestrasyonu** stratejisi doğru ve gerekli. preCICE (LGPL) conjugate-heat/FSI kuplaj için in-process alınabilir (D4+ termo-mekanik).

---

## 3. DÖKÜM SİMÜLASYON MİMARİSİ (ana hedef — ayrıntılı)

### 3.1 Boru hattı (2 kademe: hızlı native + yüksek-doğruluk external)

```
                         ┌─────────────────────────────────────────────┐
  DokumanNesnesi (parça) │  motor/geometri (OCCT BREP)                  │
   + Stok/Yolluk         │  → yüzey mesh (TKMesh) + BREP hacim          │
                         └───────────────┬─────────────────────────────┘
                                         │
              ┌──────────────────────────┴──────────────────────────┐
              │                                                      │
   ┌──────────▼───────────┐                          ┌──────────────▼───────────────┐
   │ KADE 1: HIZLI (native)│                          │ KADE 2: YÜKSEK-DOĞRULUK (ext) │
   │ Vulkan compute        │                          │ external solver               │
   ├───────────────────────┤                          ├───────────────────────────────┤
   │ Voxelize (motor/kutuk  │                          │ Gmsh (exe): BREP→tetra .msh   │
   │  grid reuse)          │                          │      ↓                        │
   │  ↓                    │                          │ Elmer (.sif): ısı+katılaşma   │
   │ Voxel FDM dolum       │  ← web IDolumSim taşı     │  (∂H/∂t=∇·k∇T, faz değişim)   │
   │  (Flemings akışkanlık,│                          │      ↓                        │
   │   cold shut/misrun)   │                          │ CalculiX (.inp): gerilme(ops) │
   │  ↓                    │                          │      ↓                        │
   │ Voxel FDM katılaşma   │  ← web IKatilasmaSim taşı │ .vtu sonuç (zaman-adımlı)     │
   │  (entalpi, Niyama,    │                          │                               │
   │   SDAS, sıcak yırtılma│                          │ GorevSistemi.kuyrukla(...)    │
   └──────────┬────────────┘                          └──────────────┬────────────────┘
              │                                                       │
              └───────────────────────┬───────────────────────────────┘
                                      │  ORTAK SONUÇ VERİ MODELİ
                         ┌────────────▼─────────────────────────────┐
                         │ DokumSonuc: zaman-adımlı skaler/vektör    │
                         │  alanlar (T, f_s, hız, boşluk, Niyama)    │
                         │  voxel grid VEYA tetra mesh üzerinde      │
                         └────────────┬─────────────────────────────┘
                                      │
                         ┌────────────▼─────────────────────────────┐
                         │ GÖRSELLEŞTİRME = KENDİ VULKAN             │
                         │  heat-map + iso-surface (MC/SurfaceNets)  │
                         │  + kesit + streamline (compute)           │
                         │  ###dokum_sim penceresi (CAM sim kalıbı)  │
                         └───────────────────────────────────────────┘
```

### 3.2 External solver orkestrasyonu (GorevSistemi kalıbı)

`Cekirdek::gorevler()` (GorevSistemi) zaten şunu sağlıyor: worker-thread'de ağır iş + atomik ilerleme + iptal + main-thread finalize + `GorevBasladi/GorevBitti` olayı. Döküm external çözücü bu kalıba **birebir oturur**:

```
kuyrukla("Elmer katılaşma", [=](GorevBaglam& g){
   1. .sif + mesh dosyalarını geçici dizine yaz          (saf CPU)
   2. ElmerSolver.exe'yi başlat (CreateProcess), stdout'u
      satır-satır parse et → g.ilerlet(oran, "adım N/M")  (ilerleme)
   3. g.iptalIstendi() → süreci öldür, erken dön          (iptal)
   4. .vtu çıktısını parse et → DokumSonuc doldur         (CPU)
}, [=](){  // main-thread finalize (GPU/sahne güvenli)
   5. GPU'ya alan verilerini yükle, ###dokum_sim penceresini besle
});
```

**Kritik kural (gorev.hpp):** worker thread'de **GPU/Sahne/Olay YASAK** — yalnız dosya IO + süreç yönetimi + parse. GPU yükleme ve sahne mutasyonu **yalnız `bitince` (main-thread)** callback'inde. Bu, native mimarinin katı kuralı ve external solver'lar için doğal uyum.

**Süreç yönetimi:** Windows `CreateProcess` + iş nesnesi (Job Object) ile → iptal'de tüm alt süreç ağacı temiz öldürülür (çözücü asılı kalmaz). vulkan_baglam timeout FIX ruhu: sonsuz bekleme yok, device-lost temiz yönetim.

### 3.3 Sonuç veri modeli (zaman-adımlı skaler/vektör alanlar)

Web `IDokumSim`/`IKatilasmaSim` sözleşmeleri **doğrudan native veri modeli şablonu**:

```cpp
// motor/cae/include/fiko/cae/dokum_sonuc.hpp  (yeni modül)
struct AlanKare {                 // tek zaman adımı
  f64 sure;                       // s
  std::vector<f32> skaler;        // per-hücre/düğüm: T (°C) veya f_s veya boşluk
  std::vector<Vec3f> vektor;      // opsiyonel: hız (dolum) / gradyan
};
struct DokumSonuc {
  // Grid VEYA mesh referansı (voxel kade-1 / tetra kade-2)
  VoxelKafes*  kafes = nullptr;   // motor/kutuk grid reuse
  TetraMesh*   mesh  = nullptr;   // Gmsh/Elmer tetra
  std::vector<AlanKare> dolumKareler;     // dolum cephesi zaman serisi
  std::vector<AlanKare> katilasmaKareler; // T + f_s zaman serisi
  // Türetilmiş kusur alanları (per-hücre, tek değer):
  std::vector<f32> niyama;        // G/√Ṙ — gözeneklilik riski
  std::vector<f32> sdas;          // λ₂ ikincil dendrit kolu aralığı
  std::vector<f32> sicakNokta;    // katılaşma süresi maks (çekme)
  std::vector<f32> coldShut;      // soğuk birleşme şiddeti
  std::vector<DokumBolge> kusurlar; // kümelenmiş etiketli bölgeler
};
```

Quantize (web T8/B8 kalıbı: Uint8 + min/max) → GPU'ya hafif yükleme, zaman scrubber'da hızlı frame değişimi. Vektör alanları streamline compute için f32.

### 3.4 Pencere tasarımı (`###dokum_sim` — CAM simülasyon penceresi kalıbı)

CAM sim penceresi (`docs/cam_simulasyon_blueprint.md`, `###cam_sim`) + op penceresi kalıbını (`pencere_util.hpp`, pinlenebilir) birebir yeniden kullan:

- **Pencere-içi 3D alan** (viewport-in-window, olcum/CAM sim gibi) — döküm parçası + heat-map.
- **Zaman scrubber + transport:** ⏮ ◀ ⏸ ▶ ⏭ + hız slider (dolum ms mertebesi, katılaşma s-dk mertebesi — ayrı zaman tabanı).
- **Renkli timeline (ImGui DrawList):** dolum fazı (mavi→kırmızı sıcaklık) | katılaşma fazı (sıvı→katı f_s) segment kodlu.
- **Heat-map lejant:** sıcaklık (°C) renk skalası + min/max + birim; alan seç (T / f_s / Niyama / hız / boşluk).
- **Kesit düzlemi:** kendi Vulkan clip-plane compute (iç sıcak nokta görünür).
- **Kusur etiketleri:** lider çizgili callout (web `fiko-dokum-kontrol` HUD kalıbı) — sıcak nokta/çekme/cold shut/hapsolan hava, tıkla→kamera uçuşu.
- **Analiz paneli:** genel not (A-F), N uyarı/M kritik, yolluk öner/doğrula (besleyici modül > sıcak nokta modül kontrolü).
- **Kip seçimi:** Hızlı (native voxel) / Yüksek-doğruluk (Elmer external) — ikincisi GorevSistemi arka plan işi + ilerleme çubuğu.

### 3.5 `fiko-dokum-kontrol` web modülünün rolü (algoritma kaynağı, kod değil)

Web modülü native döküm sisteminin **algoritma/veri-modeli referansı** (web kodu KOPYALANMAZ, kural gereği):
- **4 hızlı gösterge** (ince cidar / sıcak nokta / ani kesit / hapsolan hava) → native "ön-kontrol" (mesh yüklüyken saniyeler içinde, external solver'a gerek yok). Cidar kalınlığı = kendi Vulkan compute (web `FikoGPUThicknessAnalyzer` eşdeğeri).
- **Yolluk öner/doğrula** (besleyici/hava deliği/dolum girişi) → native `motor/cae/yolluk` mantığı.
- **Voxel FDM dolum** (`IDolumSim`) → native Vulkan compute dolum (Flemings, cold shut/misrun, filtre/maça/hava deliği).
- **Entalpi katılaşma** (`IKatilasmaSim`) → native voxel FDM katılaşma; Niyama/SDAS/sıcak yırtılma **formülleri birebir** (akademik, MAGMASOFT/ProCAST yaklaşımı — web'de zaten doğrulanmış).
- **Faz eşleşmesi:** web Faz1(hızlı statik)=native ön-kontrol · web Faz2(SPH/FDM dolum)=native Kade-1 voxel · web Faz3(tam katılaşma)=native Kade-1 katılaşma **+ Kade-2 Elmer external** (yüksek-doğruluk üst kademe).

---

## 4. GÖRSELLEŞTİRME KARARI: VTK gömme vs VTU-parse + kendi Vulkan

**KARAR: VTU/VTK dosyalarını PARSE et, çizimi KENDİ Vulkan compute motorumuzda yap. VTK'yı render için GÖMME.**

| Kriter | VTK gömme (render dahil) | VTU parse + kendi Vulkan (ÖNERİLEN) |
|--------|--------------------------|--------------------------------------|
| İkili boyut | Yüzlerce MB, OpenGL bağımlılığı | Yalnız `vtkIOXML` (~ birkaç MB) veya kendi parser (0 bağımlılık) |
| Render tutarlılığı | İki render motoru (VTK OpenGL + kendi Vulkan) çatışır | Tek motor, tek kamera, tek stil (fog YOK kuralı korunur) |
| Performans | VTK CPU pipeline | Kendi Vulkan compute (iso-surface/kesit/streamline GPU'da) |
| Kesit/iso/streamline | VTK filtreleri (CPU) | **Kendi compute:** MC/SurfaceNets (kütük motorunda VAR), clip-plane, GPU streamline integrasyonu |
| Lisans | BSD (temiz) | Kendi kod (en temiz) |
| Entegrasyon | ImGui + Vulkan + VTK OpenGL interop = ağrı | Doğal (mesh_veri/gpu_tampon kalıbı) |

**Gerekçe:** Kendi olgun Vulkan motoru + `motor/kutuk` içinde zaten Marching Cubes/SurfaceNets/voxel compute var. VTK'nın sağladığı iso-surface/kesit/streamline'ı **kendi compute pipeline'ımızda** yapmak hem daha hızlı hem tek-motor tutarlı (kamera, tema, fog-yok kuralı). VTK'dan **yalnız veri okuma** (`.vtu`/`.vtk`/`.vtm` XML/legacy parse) alınır — o da tercihen seçici `vtkIOXML` modülü ya da minimal kendi parser (VTU = zlib+base64 XML; makul boyutta kendi yazılabilir). VTK IO parse edip, alanları kendi `AlanKare` modeline map et, Vulkan'da çiz.

---

## 5. UYGULAMA DALGALARI (P0'dan)

Her dalga: yeni **`motor/cae`** modülü (ve alt başlıklar) + Cekirdek registry'ye kayıt → **makro+plugin+olay bedavaya** ([[fikatia-mimari-ilke-makro-plugin-olay]]). main.cpp/CMakeLists entegrasyonu tek elden (lider birleştirir). Fog YOK. Geçersiz-bbox guard (boş mesh→NaN kamera fit koruması).

| Dalga | Kapsam | Motor modülü | Vendored/vcpkg/external | Lisans notu |
|-------|--------|--------------|--------------------------|-------------|
| **D0** | **Altyapı + IO** | `motor/cae` (yeni: `dokum_sonuc.hpp`, `alan_kare.hpp`), VTU parser | VTK `vtkIOXML` **veya** kendi VTU parser; tinyply | Temiz (BSD/kendi) |
| **D1** | **Mesh + heat-map görselleştirme** | `motor/cae/mesh` (Gmsh external çağrı, `.msh` parse → TetraMesh), `motor/cae/gorsel` (heat-map + iso-surface kendi Vulkan compute) | **Gmsh SDK (external exe)** + GorevSistemi | Gmsh GPL → external OK |
| **D2** | **Döküm ön-kontrol (hızlı, native)** | `motor/cae/dokum` (cidar kalınlığı Vulkan compute, 4 gösterge, kümeleme, not A-F), `###dokum_sim` pencere iskeleti | — (kendi compute) + `motor/kutuk` voxel reuse | Temiz |
| **D3** | **Voxel FDM dolum (Kade-1, native)** | `motor/cae/dokum/dolum` (Flemings akışkanlık, cold shut/misrun, filtre/maça/hava deliği) — web `IDolumSim` algoritma taşı | Kendi Vulkan compute | Temiz (algoritma taşıma) |
| **D4** | **Termal + katılaşma external (Kade-2)** | `motor/cae/termal` (Elmer `.sif` üret, external çalıştır, `.vtu` parse), Niyama/SDAS/sıcak-yırtılma alanları | **Elmer (external exe)** + GorevSistemi | Elmer GPL → external OK |
| **D5** | **Voxel FDM katılaşma (Kade-1, native)** | `motor/cae/dokum/katilasma` (entalpi ∂H/∂t=∇·k∇T, semi-infinite kum, chill/besleyici, Niyama) — web `IKatilasmaSim` algoritma taşı | Kendi Vulkan compute | Temiz (algoritma taşıma) |
| **D6** | **Yapısal FEM (gerilme/termal-gerilme)** | `motor/cae/yapisal` (CalculiX `.inp` üret, external, `.frd` parse; **veya** MFEM in-process) | **CalculiX (external)** / **MFEM (in-process, BSD)** | CalculiX GPL→ext; MFEM BSD→in-process |
| **D7** | **Fizik / kinematik / çarpışma** | `motor/cae/fizik` (Jolt sarmalayıcı — montaj çarpışma, mekanizma kinematiği, düşme testi) | **Jolt (vcpkg, in-process)** | MIT — temiz |
| **D8** | **CFD dolum (yüksek-doğruluk, opsiyonel)** | `motor/cae/cfd` (OpenFOAM case üret, WSL/Docker external, VOF serbest-yüzey) | **OpenFOAM (external, WSL/Docker)** | GPL → external OK |
| **D9** | **Nokta bulutu / reverse engineering** | `motor/cae/nokta` (Open3D: ICP scan hizalama, mesh reconstruction, sapma haritası) | **Open3D (vcpkg, in-process)** | MIT — temiz |
| **D10** | **Optimizasyon (opsiyonel)** | `motor/cae/opt` (NLopt: yolluk/besleyici boyut opt., topoloji ön-adım) | **NLopt (vcpkg, in-process)** | LGPL/MIT — temiz |

**Öncelik hattı:** D0→D1→D2 (P0: mesh+ön-kontrol, external solver'a gerek yok, hemen değer) → D3→D4→D5 (P0-P1: döküm çekirdek: dolum+katılaşma, native hızlı + Elmer yüksek-doğruluk) → D6-D10 (P2-P3: yapısal/fizik/CFD/nokta/opt, iş önceliğine göre).

**Döküm hedefi kritik yol:** D0 → D1 → D2 → D3 → D5 → D4. (Native voxel dolum+katılaşma önce çalışır değer verir; Elmer external yüksek-doğruluk üst kademe olarak eklenir. OpenFOAM D8 en son / opsiyonel.)

---

## 6. LİSANS ÖZET (ticari satılabilirlik karnesi)

| Kategori | In-process (linklenir) — TEMİZ | External (ayrı exe) — GÜVENLİ | ALINMAZ |
|----------|-------------------------------|-------------------------------|---------|
| Geometri | OCCT (LGPL), CGAL-LGPL-çekirdek, kendi BVH | — | CGAL-GPL-üst-algoritma |
| Mesh | Netgen (LGPL, gerekirse) | **Gmsh (GPL)** | **TetGen (AGPL) ⛔** |
| FEM | **MFEM (BSD)** | **Elmer (GPL)**, **CalculiX (GPL)** | deal.II/libMesh (ağır) |
| CFD | (kendi voxel FDM) | **OpenFOAM (GPL, WSL)** | SU2 (hedef dışı) |
| Fizik | **Jolt (MIT)** | — | Bullet/ODE (mükerrer) |
| Nokta bulutu | **Open3D (MIT)**, PCL (BSD, ağır) | — | — |
| Optimizasyon | **NLopt**, Ceres (SuiteSparse'sız, BSD) | — | Ipopt (ağır) |
| Format | NanoSVG (ZLib), tinyply (MIT), libdxfrw (BSD) | LibreDWG (GPL) → dxf için ext | LibreDWG in-process ⛔ |
| Görselleştirme | VTK IO seçici (BSD) / kendi parser | — | VTK render gömme (mükerrer) |

**Altın kural:** GPL/AGPL kütüphane **asla** kendi kodumuza linklenmez — yalnız `CreateProcess` ile ayrı exe olarak çalıştırılır (GorevSistemi). Bu, ürünün ticari lisansını temiz tutar (external solver = kullanıcının makinesinde ayrı kurulu araç; bizim binary'miz GPL kod içermez).

---

## 7. ÖZET

- **Kendi Vulkan render + OCCT + `motor/kutuk` voxel + `GorevSistemi`** çekirdeği CAE için sağlam temel; üstüne **minimal external-solver + hafif in-process IO** kur.
- **Döküm (ana hedef):** iki kademe — **Kade-1 native Vulkan voxel FDM** (dolum+katılaşma, web `fiko-dokum-kontrol` algoritma taşıması, hemen değer) + **Kade-2 Gmsh→Elmer external** (yüksek-doğruluk katılaşma). Görselleştirme **kendi Vulkan** (VTU parse, VTK gömme yok).
- **Lisans temiz:** in-process yalnız MIT/BSD/LGPL (Jolt, Open3D, MFEM, NLopt, OCCT, CGAL-LGPL); GPL/AGPL (Gmsh, Elmer, CalculiX, OpenFOAM) **yalnız external exe**; **TetGen (AGPL) ELE ALINMAZ**.
- **Başlangıç kritik yol:** D0 (IO) → D1 (Gmsh mesh + heat-map) → D2 (native ön-kontrol) → D3/D5 (native dolum+katılaşma) → D4 (Elmer external). Her modül Cekirdek registry ile makro+plugin+olay bedavaya.
