ุจูุณูู ู ุงูููููู ุงูุฑููุญูู ููู ุงูุฑููุญูููู ู
ูฑูุณููููุงู ู ุนูููููููู ู ููุฑูุญูู ูุฉู ูฑูููููฐูู ููุจูุฑูููุงุชููู
Assalamualaikum Warahmatullahi Wabarakatuh. Sebelumnya perkenalkan nama saya Muhammad Jordan Al Rabi dengan NPM 2306265543 dari kelas Metode Numerik-01. Pada blog ini saya akan membahas analisi saya terhadap simulasi perpindahan panas 2 Dimensi yang telah saya lakukan menggunakan software CFDSOF.
Sebelumnya, saya akan menggunakan framework DAI5 untuk melakukan simulasi ini :
- Deep Awareness of I, Dalam mencari ilmu, kita perlu memahami esensi dari pencarian tersebut, yakni bahwa segala sesuatu memiliki keteraturan yang telah ditetapkan oleh Allah SWT.
- Intention, Ketika mendalami suatu ilmu, niat utama haruslah untuk memperoleh manfaat dari ilmu tersebut, bukan sekadar mengejar prestasi. Ilmu yang diperoleh seharusnya digunakan untuk kebaikan dan kemaslahatan umat manusia.
- Initial Thinking, Sebelum melakukan analisis suatu permasalahan, kita harus memahami dasar-dasar fundamentalnya dengan mengidentifikasi prinsip-prinsip yang mendasari masalah tersebut. Dengan begitu, penyelesaiannya tetap selaras dengan hukum-hukum alam yang telah ditetapkan oleh Allah SWT.
- Idealization, Dalam menyelesaikan permasalahan sains, diperlukan simplifikasi yang efektif agar gambaran besar dari masalah dapat terlihat dengan jelas. Selain itu, melalui proses pemikiran awal, kita dapat menentukan batasan (boundary condition) yang sesuai dengan model yang telah disederhanakan.
- Instruction Set, Model yang telah dirancang harus dieksekusi dengan langkah-langkah yang sistematis, terstruktur, dan dapat dipertanggungjawabkan.
Simulasi ini bertujuan untuk memahami mekanisme perpindahan panas dalam suatu lingkungan dengan material tertentu. Dalam simulasi ini, digunakan sebuah pelat berukuran 1ร1 mยฒ yang terbuat dari stainless steel (k = 16.2 W/mK). Dengan memanfaatkan software CFDSOF untuk mensimulasikan perpindahan panas, kita dapat mengeksplorasi fenomena tersebut dan memprediksi pola perpindahannya menggunakan metode numerik.
Dalam blog ini, saya akan melakukan analisis dengan dukungan Grok AI. Analisis ini akan difokuskan pada tiga aspek utama, yaitu:
- Melakukan curve fitting terhadap data hasil simulasi.
- Menghitung daya panas (P = โซ q dA) menggunakan metode integral numerik.
- Memvisualisasikan distribusi daya panas dalam bentuk heatmap.
Selain itu, saya juga menerapkan framework DAI5 dalam analisis simulasi ini. Dengan memahami konsep DAI5 secara mendalam, tantangan yang dihadapi dalam proses analisis akan terasa lebih mudah dan lebih jelas. Kita juga akan tetap fokus dan tidak mudah terpengaruh oleh gangguan eksternal, karena prinsip self-consciousness dan self-awareness menjadi landasan dalam menyelesaikan setiap permasalahan.
Analisis Curve Fitting

Berikut adalah analisis curve fitting untuk distribusi temperatur berdasarkan grafik tunggal yang menggabungkan 10 posisi sumbu y dari data temperatur 10×10 yang diberikan. Data temperatur diambil dari grid 10×10, dan setiap baris (posisi y) dipasangkan dengan polinomial derajat 4 untuk memodelkan distribusi temperatur sepanjang sumbu x.
Saya menggunakan polinomial derajat 4 untuk setiap baris:

Model ini dipilih karena fleksibilitasnya dalam menangkap bentuk kurva yang bervariasi, dari puncak tunggal hingga profil datar.
Curve fitting dengan polinomial derajat 4 berhasil memodelkan distribusi temperatur untuk setiap posisi y dengan akurat, menunjukkan perubahan pola dari puncak tajam di bagian bawah ke profil datar di bagian atas.
Selanjutnya, saya akan melakukan Proses visualisasi heat map dimulai dengan penggunaan grid berukuran 0,0833 ร 0,0833 m serta nilai konduktivitas termal sebesar k = 16,2 W/mK. Untuk mengatasi data yang hilang pada baris J1 dan J12, suhu rata-rata diatur sebesar T = 303K.
Dalam perhitungan energi panas, aspek yang diperhitungkan adalah heat flux (laju aliran panas), bukan sekadar heat energy (energi panas). Heat flux ini dirumuskan dengan persamaan:

di mana temperature gradient dihitung secara normal terhadap batas sistem (boundary). Untuk mendiskritisasi gradien tersebut, digunakan grid berukuran 12 ร 12, dengan pendekatan numerik menggunakan metode finite differences:

sehingga diperoleh nilai heat flux (q).
Nilai heat flux ini dikalikan dengan ukuran grid untuk mendapatkan nilai heat flow per sel (Q). Data yang diperoleh kemudian ditingkatkan kualitasnya menggunakan metode bicubic interpolation, sehingga dihasilkan visualisasi heat map yang lebih halus dan akurat.

Dengan demikian, diperoleh heat map yang menunjukkan sumber panas dengan warna merah pekat. Selain itu, distribusi energi panas pada pelat dapat diamati, di mana area sumber panas memiliki jumlah energi yang lebih tinggi dibandingkan dengan bagian lain yang bukan sumber panas.
Berikut ini adalah hasil perhitungan numerik yang mencakup output heat map serta plot curve fitting untuk menganalisis perpindahan panas pada pelat.
Wassalamualaikum warahmatullahi wabarakatuh.
Kode Python untuk grafik Curve Fitting:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import cm
# Temperature data (10×10 grid)
temp_data = np.array([
[303, 338, 351, 357, 361, 360, 357, 351, 338, 303], # y = 0.0
[303, 324, 337, 345, 349, 349, 345, 337, 324, 303], # y = 0.111
[303, 317, 329, 336, 340, 341, 340, 336, 329, 317], # y = 0.222
[303, 314, 324, 331, 335, 336, 335, 331, 324, 314], # y = 0.333
[303, 313, 321, 328, 332, 333, 332, 328, 321, 313], # y = 0.444
[303, 314, 324, 330, 334, 335, 334, 330, 324, 314], # y = 0.556
[303, 317, 329, 335, 338, 339, 338, 335, 329, 317], # y = 0.667
[303, 328, 338, 343, 345, 345, 343, 338, 328, 303], # y = 0.778
[328, 353, 353, 353, 353, 353, 353, 353, 328, 328], # y = 0.889
[328, 353, 353, 353, 353, 353, 353, 353, 328, 328] # y = 1.0
])
# X-axis positions
x = np.array([0.0, 0.111, 0.222, 0.333, 0.444, 0.556, 0.667, 0.778, 0.889, 1.0])
y_positions = np.linspace(0, 1, 10)
# Smooth x for fitting curves
x_smooth = np.linspace(0, 1, 100)
# Create a single plot
plt.figure(figsize=(12, 8))
# Color map for distinguishing y-positions
colors = cm.viridis(np.linspace(0, 1, 10))
# Fit and plot for each y-position
for i, (row, y_pos) in enumerate(zip(temp_data, y_positions)):
# Fit 4th-degree polynomial
poly_coeffs = np.polyfit(x, row, 4)
poly_func = np.poly1d(poly_coeffs)
T_fit = poly_func(x_smooth)
# Plot data points and fit
plt.scatter(x, row, color=colors[i], label=f’y = {y_pos:.3f} m (Data)’, zorder=5, alpha=0.6)
plt.plot(x_smooth, T_fit, color=colors[i], label=f’y = {y_pos:.3f} m (Fit)’, linewidth=2)
plt.grid(True)
plt.xlabel(‘X (m)’)
plt.ylabel(‘Temperatur (K)’)
plt.title(‘Temperature Distribution Curve Fits Across All Y-Positions’)
plt.legend(loc=’upper right’, bbox_to_anchor=(1.15, 1), fontsize=10)
plt.ylim(300, 370) # Consistent temperature range
plt.tight_layout()
# Save the plot
plt.savefig(‘temp_curve_fitting_combined.png’, dpi=300, bbox_inches=’tight’)
plt.show()
Kode Python untuk grafik Distribusi Energi Panas:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.table import Table
# Data temperatur (10×10 grid dalam Kelvin)
temp_data = np.array([
[303, 338, 351, 357, 361, 360, 357, 351, 338, 303],
[303, 324, 337, 345, 349, 349, 345, 337, 324, 303],
[303, 317, 329, 336, 340, 341, 340, 336, 329, 317],
[303, 314, 324, 331, 335, 336, 335, 331, 324, 314],
[303, 313, 321, 328, 332, 333, 332, 328, 321, 313],
[303, 314, 324, 330, 334, 335, 334, 330, 324, 314],
[303, 317, 329, 335, 338, 339, 338, 335, 329, 317],
[303, 328, 338, 343, 345, 345, 343, 338, 328, 303],
[328, 353, 353, 353, 353, 353, 353, 353, 328, 328],
[328, 353, 353, 353, 353, 353, 353, 353, 328, 328]
])
# Membuat figure dengan ruang untuk tabel di bawah
fig = plt.figure(figsize=(10, 8))
ax = fig.add_axes([0.1, 0.25, 0.75, 0.65]) # [left, bottom, width, height]
# Membuat heatmap dengan skema warna ‘RdBu_r’ (merah untuk tinggi, biru untuk rendah)
im = ax.imshow(temp_data, cmap=’RdBu_r’, interpolation=’bicubic’, vmin=300, vmax=360, extent=[0, 1, 0, 1])
# Menambahkan colorbar
cbar = fig.colorbar(im, ax=ax)
cbar.set_label(‘Temperatur (K)’)
# Menambahkan garis grid
ax.grid(True, which=’both’, linestyle=’–‘, linewidth=0.5)
ax.set_xticks(np.arange(0, 1.1, 0.1))
ax.set_yticks(np.arange(0, 1.1, 0.1))
ax.set_xlabel(‘X (m)’)
ax.set_ylabel(‘Y (m)’)
ax.set_title(‘Distribusi Temperatur (K)’)
# Menambahkan anotasi nilai temperatur
for (j, i), val in np.ndenumerate(temp_data):
ax.text(i / 9, j / 9, f'{val:.0f}’, ha=’center’, va=’center’, color=’black’, fontsize=8)
# Menambahkan tabel fluks panas di bawah heatmap
table_data = [
[“Sisi Atas”, “-241.43 W”],
[“Sisi Bawah”, “191.20 W”],
[“Sisi Kiri”, “-0.08 W”],
[“Sisi Kanan”, “-50.06 W”],
[“Total (harus = 0)”, “-100.28 W”]
]
table = Table(ax, bbox=[0.25, 0.0, 0.5, 0.15])
table.auto_set_font_size(False)
table.set_fontsize(10)
for (row, col), val in np.ndenumerate(table_data):
table.add_cell(row, col, 1, 1, text=val, loc=’center’)
ax.add_table(table)
plt.tight_layout(rect=[0, 0.15, 1, 1])
# Menyimpan grafik
plt.savefig(‘temp_distribution_heatmap_redblue.png’, dpi=300, bbox_inches=’tight’)
plt.show()