ccitonline.com

CCIT – Cara Cerdas Ingat Tuhan

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

Pemetaan Kontur Persebaran Panas menggunakan Persamaan Fluks Panas—Fauzan Adriyanto 2306225735

بِسْــــــــــــــــــمِ اﷲِالرَّحْمَنِ اارَّحِيم

السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ

Salam sejahtera bagi kita semua, pertama-tama saya ingin mengingatkan kepada diri saya dan Anda bahwa jangan pernah lupa mensyukuri dan tidak mengkufuri nikmat yang Allah telah berikan kepada kita semua.

Pada pertemuan ke-3 dan 4 mata kuliah Metode Numerik, kita telah mempelajari cara membuat curve fitting menggunakan bantuan AI. Pada pertemuan ke-5, kita melakukan prompt kepada AI agar melakukan pembuatan gambar heatmap pada benda 2 dimensi. Output-nya berupa program bahasa Pyhton, ketika datanya dijalankan maka akan menghasilkan gambar.

Sebelumnya saya ingin menerangkan bahwa AI yang saya gunakan adalah Grok. Langkah pertama adalah denga mengunggah berkas yang kemarin sudah didapatkan, yaitu berkas J2 s.d J11. Ini merupakan langkah-langka besar yang Grok lakukan.

Dari percobaan langkah pertama, ditemukan persamaan curve fitting-nya yaitu: T(x, y) = -146.92x^2 + 125.21y^2 + 0.00xy + 146.92x + -160.57y + 348.80

Selanjutnya mencari persamaan fluks panas (q) menggunakan rumus:

Setelah mendapatkan persamaan fluks panas, kita dapat mendapatkan daya yang dihasilkan dari perubahan energi panas tersebut

Dari gambar di atas, dapat diketahui bahwa energi panas dalam satuan Watt. Sisi atas sebesar 174 Watt, karena terdapat perbedaan temperatur pada bagian bawah, maka energinya tidak sama. Sedangkan sisi kanan dan kiri memiliki besaran temperatur yang sama, maka besar energi panas juga sama.

Berikut merupakan program berbahasa Python yang dapat menghasilkan gambar seperti di atas:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
from scipy.interpolate import griddata
import random

# Definisikan data asli
x = np.arange(0, 1.1, 0.1)  # [0, 0.1, …, 1.0] -> 11 titik
y = np.arange(0.2, 1.2, 0.1)  # [0.2, 0.3, …, 1.1] -> 10 titik
X, Y = np.meshgrid(x, y)

# Data suhu (Z) asli dari dokumen, dengan dimensi (10, 11)
Z = np.array([
    [303, 338, 351, 357, 360, 361, 360, 357, 351, 338, 303],  # y=0.2
    [303, 324, 337, 345, 349, 350, 349, 345, 337, 324, 303],  # y=0.3
    [303, 317, 329, 336, 340, 342, 340, 336, 329, 317, 303],  # y=0.4
    [303, 314, 324, 331, 335, 336, 335, 331, 324, 314, 303],  # y=0.5
    [303, 313, 322, 328, 332, 333, 332, 328, 322, 313, 303],  # y=0.6
    [303, 313, 321, 328, 331, 333, 331, 328, 321, 313, 303],  # y=0.7
    [303, 315, 324, 330, 334, 335, 334, 330, 324, 315, 303],  # y=0.8
    [303, 319, 329, 335, 338, 339, 338, 335, 329, 319, 303],  # y=0.9
    [303, 328, 338, 343, 345, 345, 345, 343, 338, 328, 303],  # y=1.0
    [328, 353, 353, 353, 353, 353, 353, 353, 353, 353, 328]   # y=1.1
])

# Asumsi parameter
k = 1  # Konduktivitas termal (W/m·K), sesuaikan jika ada nilai spesifik
dx = 0.1  # Delta x (m)
dy = 0.1  # Delta y (m)

# Hitung fluks panas dan daya untuk setiap sisi
# Sisi Atas (y = 1.1)
q_top = -k * (Z[-1, :] – Z[-2, :]) / dy  # Gradien suhu ke bawah (y = 1.1 ke y = 1.0)
dA_top = 0.1  # Luas segmen (panjang sisi = 1 m, lebar = 0.1 m per segmen)
P_top = np.sum(q_top * dA_top)

# Sisi Bawah (y = 0.2)
q_bottom = -k * (Z[1, :] – Z[0, :]) / dy  # Gradien suhu ke atas (y = 0.2 ke y = 0.3)
dA_bottom = 0.1  # Luas segmen (panjang sisi = 1 m, lebar = 0.1 m per segmen)
P_bottom = np.sum(q_bottom * dA_bottom)

# Sisi Kiri (x = 0)
q_left = -k * (Z[:, 1] – Z[:, 0]) / dx  # Gradien suhu ke kanan (x = 0 ke x = 0.1)
dA_left = 0.09  # Luas segmen (panjang sisi = 0.9 m, lebar = 0.1 m per segmen)
P_left = np.sum(q_left * dA_left)

# Sisi Kanan (x = 1.0)
q_right = -k * (Z[:, -1] – Z[:, -2]) / dx  # Gradien suhu ke kiri (x = 1.0 ke x = 0.9)
dA_right = 0.09  # Luas segmen (panjang sisi = 0.9 m, lebar = 0.1 m per segmen)
P_right = np.sum(q_right * dA_right)

# Total daya
P_total = P_top + P_bottom + P_left + P_right

# Interpolasi data ke grid yang sangat halus untuk heatmap
x_fine = np.linspace(0, 1, 200)  # 200 titik pada sumbu x
y_fine = np.linspace(0.2, 1.1, 200)  # 200 titik pada sumbu y
X_fine, Y_fine = np.meshgrid(x_fine, y_fine)

# Ubah data ke format untuk interpolasi
points = np.array([(xi, yi) for yi in np.arange(0.2, 1.2, 0.1) for xi in np.arange(0, 1.1, 0.1)])
values = Z.flatten()
Z_fine = griddata(points, values, (X_fine, Y_fine), method=’cubic’)

# Interpolasi data ke grid 5×5 untuk anotasi suhu
x_5 = np.linspace(0.1, 0.9, 5)  # [0.1, 0.3, 0.5, 0.7, 0.9] -> 5 titik, geser ke dalam dari batas
y_5 = np.linspace(0.3, 1.0, 5)  # [0.3, 0.475, 0.65, 0.825, 1.0] -> 5 titik, geser ke dalam dari batas
X_5, Y_5 = np.meshgrid(x_5, y_5)
Z_5 = griddata(points, values, (X_5, Y_5), method=’linear’)

# Buat skala warna bervariasi dengan pink di suhu tinggi
colors = [
    (135/255, 206/255, 235/255),  # Biru muda (suhu rendah ~303 K)
    (150/255, 210/255, 230/255),  # Biru langit
    (165/255, 215/255, 225/255),  # Biru lebih terang
    (180/255, 220/255, 220/255),  # Biru kehijauan
    (195/255, 225/255, 215/255),  # Hijau muda
    (210/255, 230/255, 210/255),  # Hijau lebih terang
    (225/255, 235/255, 205/255),  # Hijau kekuningan
    (240/255, 240/255, 200/255),  # Kuning muda
    (255/255, 245/255, 195/255),  # Kuning
    (255/255, 230/255, 180/255),  # Kuning keoranyean
    (255/255, 215/255, 165/255),  # Oranye muda
    (255/255, 200/255, 150/255),  # Oranye
    (255/255, 185/255, 135/255),  # Oranye lebih dalam
    (255/255, 170/255, 120/255),  # Oranye kemerahan
    (255/255, 155/255, 105/255),  # Merah oranye
    (255/255, 140/255, 90/255),   # Merah muda oranye
    (255/255, 125/255, 75/255),   # Merah muda
    (255/255, 20/255, 147/255)    # Pink tua/merah muda intens (suhu tinggi ~353 K)
]
n_bins = 2048
cmap_name = ‘custom_varied_with_pink’
cm = LinearSegmentedColormap.from_list(cmap_name, colors, N=n_bins)

# Plot heatmap dengan gradasi halus
plt.contourf(X_fine, Y_fine, Z_fine, levels=500, cmap=cm)
plt.colorbar(label=”Temperature (K)”)
plt.title(“Energi Panas (W)”)
plt.xlabel(“Posisi x (m)”)
plt.ylabel(“Posisi y (m)”)

# Tambahkan anotasi suhu pada grid 5×5 dengan warna putih
for i in range(len(y_5)):
    for j in range(len(x_5)):
        plt.text(x_5[j], y_5[i], f'{Z_5[i, j]:.1f}’, ha=’center’, va=’center’, color=’black’, fontsize=8)

# Tambahkan informasi energi di bawah dengan jarak yang cukup, rata kiri
plt.text(0.0, -0.15, “Energi Panas (W):”, fontsize=10, ha=’left’, transform=plt.gca().get_xaxis_transform(), color=’black’)
plt.text(0.0, -0.20, f”Sisi Atas: {P_top:.2f} W”, fontsize=8, ha=’left’, transform=plt.gca().get_xaxis_transform(), color=’black’)
plt.text(0.0, -0.25, f”Sisi Bawah: {P_bottom:.2f} W”, fontsize=8, ha=’left’, transform=plt.gca().get_xaxis_transform(), color=’black’)
plt.text(0.0, -0.30, f”Sisi Kiri: {P_left:.2f} W”, fontsize=8, ha=’left’, transform=plt.gca().get_xaxis_transform(), color=’black’)
plt.text(0.0, -0.35, f”Sisi Kanan: {P_right:.2f} W”, fontsize=8, ha=’left’, transform=plt.gca().get_xaxis_transform(), color=’black’)
plt.text(0.0, -0.40, f”Total (harus ≈ 0): {P_total:.2f} W”, fontsize=8, ha=’left’, transform=plt.gca().get_xaxis_transform(), color=’black’)

# Tambahkan watermark “ZAN’s” di beberapa posisi
watermark_positions = [
    (0.05, 0.25), (0.95, 0.25),  # Kiri bawah dan kanan bawah
    (0.05, 0.95), (0.95, 0.95),  # Kiri atas dan kanan atas
    (0.5, 0.5), (0.5, 0.85)      # Tengah
]
for pos in watermark_positions:
    plt.text(pos[0], pos[1], “ZAN’s”, fontsize=10, color=’gray’, alpha=0.3, ha=’center’, va=’center’)

plt.show()

Pelajaran yang dapat saya ambil dari tugas ini adalah, kehadiran AI dapat membantu kita dalam mempelajari apapun. Akan tetapi, jalan tersebut bukan merupakan satu-satunya cara. Lebih baik kita dapat memanfaatkan apa yang ada dengan semaksimal mungkin. kita tidak bisa mengandalkan AI secara penuh.

Pelajaran yang dapat saya ambil dari tugas ini adalah bahwa kehadiran AI dapat membantu kita dalam mempelajari banyak hal. Namun, AI bukan satu-satunya cara untuk belajar. Lebih baik jika kita dapat memanfaatkan berbagai sumber yang tersedia secara maksimal. Kita tidak bisa sepenuhnya mengandalkan AI, karena pemahaman yang mendalam tetap membutuhkan keterlibatan aktif dan pemikiran kritis dari diri kita sendiri.


Leave a Reply

Your email address will not be published. Required fields are marked *