ccitonline.com

CCIT – Cara Cerdas Ingat Tuhan

| AI.DAI5 | DAI5 eBook Free Download | CFDSOF | VisualFOAM | PT CCIT Group Indonesia|

Pemodelan Distribusi Temperatur 2D melalui Pendekatan Curve Fitting dan Integrasi Numerik Dalam Perhitungan Distribusi Energi Panas dari Hasil Simulasi CFDSOF – Aisyah Zahwa Sakinah (2306155306)

Assalamualaikum warahmatullahi wabarakatuh, sebelumnya perkenalkan nama saya Aisyah Zahwa Sakinah dengan NPM 2306155306 dari kelas Metode Numerik-01. Pada blog ini, saya akan membahas Pemodelan Distribusi Panas 2D dengan Metode Curve Fitting Pada Aplikasi CFDSOF dan Visualisasi Energi Panas Dengan Integrasi Numerik.

Pada pertemuan minggu ini, diberikan kasus Heat Conduction 2D dimana kita akan mencari energi total dan distribusi panas dalam bentuk heat map. Penjabran kasus seperti gambar berikut:

Untuk permasalahan pada gambar diatas, saya akan menggunakan framework DAI5 dalam tahap penyelesaiaannya :

  • Deep Awareness Of I

Ini merupakan langkah pertama yang sebenarnya memiliki hubungan untuk mengingat-mengingat kepada Yang Maha Esa serta menekankan kesadaran diri. Langkah ini bisa dibilang langkah ini merupakan sebuah titik awal dimana kita perlu mengingat bahwa segala permasalahan berasal dari Allah sehingga sebenarnya kita dapat menyelesaikan permasalahan apapun terutama jika memiliki tujuan untuk memberikan kontribusi positif bagi seluruh umat manusia dengan menyelesaikan permasalahan permasalahn yang ada.

  • Intention

Pada langkah ini kita sudah sadar bahwa permasalahan yang kita ingin selesaikan itu apa serta langkah ini merupakan sebuah keputusan untuk mendorong proses pemecahan masalah. Pembuatan keputusan tersebut berasal dari niat diri kita. Niat itu sebenarnya bisa diibaratkan oleh sebuah bensin pada mobil yang merupakan bahan bakar agar mobil tersebut terus melaju. Hal ini berarti langkah ini merupakan langkah penting agar kita tidak menyerah dalam melakukan penyelesaian masalah dan memastikan langkah penyelesaiannya selaras dengan kehendak Yang Maha Esa.

Saya memiliki niat untuk melakukan metode curve fitting dan integrasi numerik untuk menyelesaikan permasalahan mencari energi total serta distribusinya pada seluruh permukaan pelat.

  • Initial Thinking

Langkah ini berisikan proses analisis terhadap suatu permasalahan yang sudah kita niatkan untuk penyelesaiannya. Pada langkah ini sebenarnya tidak hanya proses analisis yang terjadi melainkan kita dapat mengaitkan permasalahan yang ada dengan konsep-konsep yang ada sehingga kita lebih mengerti dan mengetahui akar-akar permasalahannya dengan lebih detail. Dalam perumpamaannya, ketika ingin berperang pasti kita harus membuat sebuah strategi terlebih dahulu serta memastikan semua akomodasi ataupun pasokan makanan tersedia yang kemudian akan digunakan oleh para prajurit perang atau ketika dalam menyelesaikan masalah kita dapat membedahnya menjadi beberapa-beberapa masalah kecil yang kemudian dapat terlihat pola permasalahannya seperti apa dan dapat diketahui asumsi solusi dari permasalahannya.

Faktor-faktor yang berkaitan dengan permasalahan ini antara lain adalah simulasi perpindahan panas dengan CFDSOF sesuai dengan ketentuan yang telah ditetapkan pada gambar diatas, persamaan tempearture 2D, gradien temperature, metode curve fitting, persamaan, hukum fourier, dan perhitungan data untuk data diskrit.

  • Idealization

Langkah ini bertujuan untuk memastikan bahwa asumsi solusi dapat diterapkan dengan baik serta linear dengan niat yang sudah ditetapkan dan tidak melenceng dari tujuan utama kita yaitu bermanfaat kepada seluruh umat manusia.

Solusi untuk permasalahan ini berhubungan dengan mencari fungsi q di sepanjang garis yang ditentukan. Kemudian, persamaan q tersebut di integrasikan dengan luas permukaannya. Hal ini sebenarnya mirip dengan konsep integrasi debit pada sebuah pipa, debit adalah kecepatan dikalikan luas penampang. Penyelesaian debit pada sebuah pipa tersebut sama dengan perhitungan untuk mengetahui aliran panas.

  • Instruction Set

Langkah terakhir dari DAI5 ini merupakan sebuah penjabaran berupa prosedur dalam penerapan solusi dan seperti yang sudah dijelaskan sebelumnya solusi tersebut berasal dari kesadaran diri kepada Sang Maha Pencipta dan niat untuk memberikan manfaat kepada seluruh umat manusia.

Prosedur Penyelesaiannya:

  1. Melakukan Simulasi Heat Conduction 2D menggunakan aplikasi CFDSOF sesuai dengan ketentuan pada gambar. Pada tahap ini didapatkan data berupa koordinat dan suhu
  2. Membuat plot terpisah untuk setiap y (J2 hingga J10) dengan data asli (titik-titik) dan kurva fitting (garis)
  3. Menggunakan subplot untuk menampilkan semua kurva dalam satu gambar dengan Phyton
  4. Melakukan perhitungan flux panas menggunakan hukum fourier
  5. Melakukan Integrasi Numerik pada flux panas agar didapatkan persamaan daya
  6. Membuat Heat Energy Distribution dengan Phyton

Saya akan menjabarkan masing-masing langkah penyelesaian di bawah ini


Setelah melakukan simulasi menggunakan CFDSOF untuk kasus Heat Conduction 2D akan didapatkan data berupa file excel yang kemudian akan diolah. Saya menggunakan Grok untuk membantu saya dalam melakukan perhitungannya dimana langkah selanjutnya sayang saya lakukan adalah membuat grafik curve fitting dari data yang ada, berikut adalah penjabarannya:

Melakukan fitting polinomial derajat 2 (T(x)=a+bx+cx2) untuk setiap baris (J2 hingga J10) berdasarkan posisi x, dimana x =[0,0.0833,0.1667,0.25,0.3333,0.4167,0.5,0.5833,0.6667,0.75,0.8333,1]. Saya menggunakan coding phyton berupa numpy. polyfit untuk fitting polinomial derajat 2

import numpy as np

x = np.array([i/11 for i in range(12)])  # [0, 0.0833, ..., 1]
T_J2 = np.array([303, 337.778, 351.284, 357.243, 359.911, 360.687, 359.911, 357.243, 351.284, 337.778, 303, 303])
coeff_J2 = np.polyfit(x, T_J2, 2)
print(coeff_J2)

Setelah code diatas dijalankan di Google Collab maka akan didapatkan persamaan polinomial yang telah dilakukan fitting untuk J2-J10. Hasil fittingnya sebagai berikut:

Setelah mendapatkan persamaan T(x), saya melakukan proses fitting koefisien a(y) yang merupakan fungsi dari y sebagai polinomial derajat 2 sebagai berikut:

Data a(y) ini akan didapatkan dengan cara memilih 3 titik untuk dilakukan proses fitting, disini saya akan menggunakan y=0.0833,0.4167,0.75. Sehingga ketika dilakukan perhitungan akan sesuai pada gambar dibawah ini:

Nilai a(y) tersebut kemudian disubtitusikan pada persmaan T(x) sehingga didapatkan Persamaan Temparture 2D yaitu:

Saya kemudian memberikan prompt pada Grok untuk membuat coding phyton yang menunjukan grafik curve fittingnya. Code tersebut nantinya akan saya Run di Google Collab. Berikut adalah code yang saya gunakan:

import numpy as np
import matplotlib.pyplot as plt

# Data temperatur dari simulasi (J2 hingga J10)
temp_data = [
    [303, 337.778, 351.284, 357.243, 359.911, 360.687, 359.911, 357.243, 351.284, 337.778, 303, 303],  # J2
    [303, 323.828, 337.116, 344.778, 348.713, 349.926, 348.713, 344.778, 337.116, 323.828, 303, 303],  # J3
    [303, 317.419, 328.575, 336.038, 340.24, 341.59, 340.24, 336.038, 328.575, 317.419, 303, 303],  # J4
    [303, 314.273, 323.728, 330.561, 334.617, 335.955, 334.617, 330.561, 323.728, 314.273, 303, 303],  # J5
    [303, 312.945, 321.503, 327.861, 331.713, 332.997, 331.713, 327.861, 321.503, 312.945, 303, 303],  # J6
    [303, 313.006, 321.477, 327.668, 331.377, 332.607, 331.378, 327.668, 321.477, 313.006, 303, 303],  # J7
    [303, 314.603, 323.73, 329.958, 333.522, 334.678, 333.522, 329.958, 323.73, 314.603, 303, 303],  # J8
    [303, 318.676, 328.881, 334.911, 338.075, 339.062, 338.075, 334.911, 328.881, 318.676, 303, 303],  # J9
    [303, 328.221, 338.208, 342.732, 344.806, 345.419, 344.806, 342.732, 338.208, 328.221, 303, 303]   # J10
]

# Koordinat x
x = np.array([i / 11 for i in range(12)])  # [0, 0.0833, 0.1667, ..., 1]

# Koordinat y untuk J2 hingga J10
y_values = np.array([0.0833, 0.1667, 0.25, 0.3333, 0.4167, 0.5, 0.5833, 0.6667, 0.75])

# Persamaan fitting
def T(x, y):
    a_y = 501.4 * y**2 - 577.74 * y + 283.508
    return a_y * x * (1 - x) + 303

# Membuat subplot untuk setiap J
fig, axes = plt.subplots(3, 3, figsize=(15, 12), sharex=True, sharey=True)
axes = axes.flatten()

for i, (ax, temp_row, y) in enumerate(zip(axes, temp_data, y_values)):
    # Data asli (titik-titik)
    ax.scatter(x, temp_row, color='red', label=f'J{i+2} Data (y={y:.4f} m)')
    
    # Kurva fitting
    x_fit = np.linspace(0, 1, 100)
    T_fit = T(x_fit, y)
    ax.plot(x_fit, T_fit, 'b-', label=f'Fit: T(x) = {T_fit[50]:.3f} at x=0.5')
    
    # Atur label dan judul
    ax.set_title(f'J{i+2} (y = {y:.4f} m)')
    ax.set_xlabel('X (m)')
    ax.set_ylabel('Temperature (K)')
    ax.legend()
    ax.grid(True, linestyle='--', alpha=0.7)

# Atur layout
plt.tight_layout()
plt.suptitle('Curve Fitting of Temperature Distribution (J2 to J10)', fontsize=16, fontweight='bold', y=1.05)

# Simpan dan tampilkan
plt.savefig('curve_fitting_temperature_distribution.png')
plt.show()

Dari code tersebut akan didapatkan grafik dibawah ini:

Langkah selanjutnya adalah melakukan perhitungan untuk mencari fluks panas dan daya total. Langkah perhitungannya sebagai berikut:

  • Menghitung Gradien Temperature

Disini saya menggunakan metode perbedaan hingga untuk menghitung gradiennya dengan rumus berikut:

Dari data hasil simulasi didapatkan suhu pada tepi konstan 303 K maka gradien pada tepi permukana dapat diasumsikan nol kecuali pada boundary conditionnya. Perhitungan menggunakan rumus diatas dilakukan untuk semua titik kecuali tepi, berikut adalah penjabaran pehitungan untuk J2:

  • Menghitung Flux Panas

Dalam perhitungan ini akan digunakan satu hukum fisika yaitu hukum fourirer :

enapa per meter? Hal tersebut karena sesuai dengan hukum fourier

Q = k (delta T)/ delta S

Jadi, panas mengalir karena perbedaan suhu di dua titik. Materialnya harus memiliki q sebanding dengan perbedaan temperature, konstanta proposionalnya.

K = q / delta T . Delta S

Ini sifat fisik properties yang dimiliki zatnya, semakin besar nilainya semakin baik daam menghantarkan panas dan semakin kecil maka tidak semakian baik (semakin sulit) mengahantarkan panas contohnya plastk dan kayu.

Perhitungan dengan rumus dilakukan dengan gradien internal dekat tepi permukaan pelat.

  • Menghitung Daya Total (P)

Dari hasil simulasi CFDSOF data yang didapatkan memiliki bentuk data diskrit sehingga untuk melakukan perhitungan daya digunakan rumus:

Namun, untuk mempermudah perhitungan akan saya akan melakukan perhitungan kontrubusi sisi berdasarkan fluks normal sebagai berikut:

Sisi Kiri (x = 0)

Sisi Kanan (x = 1)

Sisi Bawah (y = 0)

Sisi Atas (y=0.9167)

Dari perhitungan diatas akan didapatkan nilai seperti dibawah ini:

Nah, untuk melihat distribusi panas nya dalam bentuk heat map maka harus dilakukan perhitungan dengan menggunakan phyton. Saya memberikan prompt di Grok untuk menulisakn codingnya, berikutadalah penjabaran coding phyton yang saya gunakan:

import numpy as np
import matplotlib.pyplot as plt

# Full temperature data (J1 to J12)
temp_data = [
    [303]*12,  # J1 (hidden)
    [303, 337.778, 351.284, 357.243, 359.911, 360.687, 359.911, 357.243, 351.284, 337.778, 303, 303],  # J2
    [303, 323.828, 337.116, 344.778, 348.713, 349.926, 348.713, 344.778, 337.116, 323.828, 303, 303],  # J3
    [303, 317.419, 328.575, 336.038, 340.24, 341.59, 340.24, 336.038, 328.575, 317.419, 303, 303],  # J4
    [303, 314.273, 323.728, 330.561, 334.617, 335.955, 334.617, 330.561, 323.728, 314.273, 303, 303],  # J5
    [303, 312.945, 321.503, 327.861, 331.713, 332.997, 331.713, 327.861, 321.503, 312.945, 303, 303],  # J6
    [303, 313.006, 321.477, 327.668, 331.377, 332.607, 331.378, 327.668, 321.477, 313.006, 303, 303],  # J7
    [303, 314.603, 323.73, 329.958, 333.522, 334.678, 333.522, 329.958, 323.73, 314.603, 303, 303],  # J8
    [303, 318.676, 328.881, 334.911, 338.075, 339.062, 338.075, 334.911, 328.881, 318.676, 303, 303],  # J9
    [303, 328.221, 338.208, 342.732, 344.806, 345.419, 344.806, 342.732, 338.208, 328.221, 303, 303],  # J10
    [328, 353, 353, 353, 353, 353, 353, 353, 353, 353, 328, 328],  # J11
    [303]*12  # J12 (hidden)
]

# Extract inner rows (J2 to J11) for visualization
temp_inner = np.array(temp_data[1:-1])  # Exclude J1 and J12

# Create heatmap with blue background
plt.figure(figsize=(12, 10), facecolor='#ADD8E6')  # Light blue background
plt.imshow(temp_inner, cmap='viridis', interpolation='bicubic', vmin=303, vmax=360.687, extent=[0, 1, 0.0833, 0.9167])
plt.colorbar(label='Temperature (K)', ticks=np.arange(310, 361, 10))
plt.title('Heat Energy Distribution (2D Conduction)', fontsize=16, fontweight='bold', pad=20, color='navy')
plt.xlabel('X Position (m)', fontsize=12)
plt.ylabel('Y Position (m)', fontsize=12)
plt.xticks(np.arange(0, 1.1, 0.2))
plt.yticks(np.arange(0.1, 1.0, 0.2))

# Add table at the top left corner
table_data = [
    ['Side', 'Power (W)'],
    ['Top', '-241.43'],
    ['Bottom', '191.20'],
    ['Left', '-0.08'],
    ['Right', '-50.06'],
    ['Total', '-100.28']
]
table = plt.table(cellText=table_data, loc='upper left', cellLoc='center', bbox=[0.02, 0.75, 0.25, 0.2])
table.auto_set_font_size(False)
table.set_fontsize(10)
table.scale(1.5, 1.5)

# Remove grid for cleaner look
plt.grid(False)

# Adjust layout to avoid overlap
plt.tight_layout()

# Save the modified image
plt.savefig('heatmap_heat_energy_distribution_modified.png', facecolor='#ADD8E6')
plt.show()

Code tersebut kemudian akan saya jalankan di Google Collab sehingga menghasilkan gambar heat map dibawah ini:

Dari penjabaran perhitungan diatas dapat simpulkan bahwa q adalah vektor yang memiliki nilai dan arah. Perlu diingat juga bahwa q = – k delta T/ delta s yang menunjukan bahwa panas mengalir dari temperature tinggi ke temperature rendah.

Saya bersyukur telah mempelajari metode numerik dan aplikasinya pada CFDSOD karena dengan diakukan simulasi metode numerik ini kita dapat membayangkan peristiwa fisika konduksi, konveksi atau radiasi.

Berikut saya sertakan juga link google collab yang saya gunakan dalam melakukan perthitungan: https://colab.research.google.com/drive/1oyXApuw5Vm-Kp4VsXorlI9lGkX88Ij1m?usp=sharing


Terima kasih telah membaca blog saya ini, semoga pembahasan pada blog saya ini daat bermanfaat dalam mengingkatkan wawasan tentang metode numerik serta dapat digunakan sebagai pengaplikasian di kehidupan sehari-hari. Wasalamuaalaikum Wr. Wb.