Aplikasi termodinamika open-source untuk macOS — dibuat untuk kebutuhan praktikum Metalurgi. Menghitung kesetimbangan fasa, termodinamika reaksi (ΔG, ΔH, ΔS), dan diagram fasa biner langsung di Mac, tanpa perlu Windows.
Dibangun di atas mesin CALPHAD terbuka pycalphad,
pustaka yang dipakai luas di riset dan pendidikan termodinamika material.
Bukan tiruan dari software komersial berlisensi (mis. FactSage). Ini adalah tool open-source yang sah dan gratis. Database yang dibundel adalah database publik/akademik contoh dari pycalphad.
| Modul | Fungsi | Analog dengan |
|---|---|---|
| Equilib | Kesetimbangan fasa via minimasi energi Gibbs | modul Equilib |
| Reaksi | ΔG, ΔH, ΔS reaksi stoikiometri (koreksi Kirchhoff) | modul Reaktion |
| Diagram Fasa Biner | Kurva likuidus/solidus T–X (ZPF boundaries) | modul Phase Diagram |
- Aplikasi macOS native (SwiftUI) — jendela, menu, dan tombol khas macOS.
- Mesin perhitungan Python (pycalphad) dibundel sebagai runtime mandiri, sehingga tidak perlu menginstal Python.
- Bisa didistribusikan sebagai
.dmgdan di-double-click.
- Unduh
ThermoApp.dmg. - Buka DMG (klik dua kali), lalu seret
ThermoApp.appke folder Applications (atau jalankan langsung dari DMG). - Saat pertama dibuka, macOS mungkin menampilkan peringatan "app from an
unidentified developer" karena ditandatangani ad-hoc (tanpa Developer ID):
- Klik kanan
ThermoApp.app-> Open -> Open. - atau: System Settings -> Privacy & Security -> "Open Anyway".
- Klik kanan
- Equilib — pilih database, atur komposisi & suhu, klik
Hitung Kesetimbangan. - Reaksi — isi reaktan & produk (format
koefisien:spesies), atur suhu, klikHitung Reaksi. - Diagram Fasa — pilih database & dua elemen, atur rentang suhu, klik
Gambar Diagram Fasa.
- Equilib: database
Al-Ni, Al=0.5, Ni=0.5, T=1700 K -> fasaLIQUID; T=1000 K -> fasa padat. - Reaksi:
FeO(s) + C(s,grafit) -> Fe(s) + CO(g)@1200 K -> spontan (ΔG < 0). - Diagram: database
Pb-Sn, elemen Pb & Sn -> kurva eutektik di sekitar 456 K.
- macOS 14+ (arm64 / Apple Silicon)
- Xcode / Xcode Command Line Tools (
swiftc) - Python 3.10–3.12
cd thermoapp
python3 -m venv .venv
./.venv/bin/pip install --upgrade pip
./.venv/bin/pip install pycalphad numpy matplotlib streamlit pyinstaller./native/make_engine.sh # -> dist/engine_runner (binary Python mandiri)./native/build.sh # -> out/ThermoApp.appopen out/ThermoApp.app # jalankan aplikasi./native/make_dmg.sh # -> out/ThermoApp.dmgthermoapp/
├── engine_cli.py # CLI bridge: JSON in / JSON+PNG out
├── engine_runner.py # entry point PyInstaller
├── src/thermoapp/
│ └── engine.py # mesin perhitungan (equilibrium, reaksi, diagram)
├── native/
│ ├── ThermoApp/ # source SwiftUI
│ │ ├── EngineBridge.swift # panggil engine Python dari Swift
│ │ ├── Models.swift
│ │ ├── ContentView.swift
│ │ └── Views/ # Home, Equilib, Reaksi, Diagram Fasa
│ ├── engine_runner.spec # spec PyInstaller
│ ├── build.sh # build .app
│ ├── make_engine.sh # build engine mandiri
│ └── make_dmg.sh # build .dmg
└── out/ # hasil build (.app, .dmg)
Menggunakan pycalphad.equilibrium — minimasi energi Gibbs global. Input:
komposisi (fraksi mol), suhu (K), tekanan (Pa). Output: fasa setimbang, fraksi,
komposisi tiap fasa, energi Gibbs total.
ΔG(T), ΔH(T), ΔS(T) dihitung dari data termokimia standar (ΔHf, S298, Cp) dengan koreksi Kirchhoff:
- Σνᵢ·Xᵢ -> Σνⱼ·Xⱼ
- ΔH(T)=ΔH₀+∫ΔCp dT ; ΔS(T)=ΔS₀+∫(ΔCp/T)dT ; ΔG=ΔH−TΔS
Algoritme ZPF (Zero Phase Fraction) boundary dari pycalphad
(map_binary) menghasilkan kurva likuidus & solidus akurat, bukan sekadar grid.
Suite uji menjalankan 5 kasus dengan nilai fisik yang diperiksa:
- Al-Ni @1700 K ->
LIQUID - Al-Ni @1000 K -> bukan cair
FeO + C -> Fe + CO@1200 K -> ΔG ≈ −18.9 kJ (spontan)FeO -> Fe + ½O₂@1200 K -> ΔG > 0 (tidak spontan)- Diagram Pb-Sn -> PNG kurva eutektik ter-generate
Semua lulus (5/5).
| ID | Sistem |
|---|---|
alcrni |
Al-Cr-Ni |
alni_dupin |
Al-Ni |
alcocrni |
Al-Co-Cr-Ni |
cfe_broshe |
Fe-C |
femn |
Fe-Mn |
Al-Mg_Zhong |
Al-Mg |
cuo |
Cu-O |
pbsn |
Pb-Sn |
crtiv_ghosh |
Cr-Ti-V |
File .tdb eksternal dapat dimuat dengan memodifikasi AVAILABLE_DATABASES
di src/thermoapp/engine.py.
- Bukan clone FactSage. Untuk kerja produksi/verifikasi yang mensyaratkan FactSage asli, gunakan FactSage (Windows) — aplikasi ini adalah alternatif open-source yang sah untuk keperluan pembelajaran.
- Satuan: suhu K, energi J, tekanan Pa.
- Database bundled adalah contoh akademik; untuk hasil kuantitatif yang harus dipertanggungjawabkan, gunakan database tervalidasi yang sesuai.
MIT — silakan gunakan, modifikasi, dan bagikan.
Dibuat untuk praktikum Metalurgi · open-source di GitHub · berjalan asli di macOS.