ccitonline.com

CCIT – Cara Cerdas Ingat Tuhan

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

Studi Kasus Integrasi Numerik Menggunakan DAI5 Untuk Konduksi Panas Steady State 2D PART 2– Golda Meirstein (2306155395)

2. Pemanfaatan AI untuk menganalisis

    saya menggunakan AI untuk melakukan curve fitting pada setiap baris data, mulai dari J2 hingga J10. Dengan pendekatan ini, kita dapat menghitung heat flux untuk setiap baris, yang menggambarkan aliran panas dalam sistem. Selanjutnya, daya dihitung untuk setiap baris berdasarkan hasil heat flux. Terakhir, daya dari setiap baris dijumlahkan untuk mendapatkan total energi yang berpindah dalam sistem, memberikan gambaran menyeluruh tentang proses perpindahan panas yang terjadi.

    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.optimize import curve_fit
    import html
    
    
    # Data posisi (m)
    x = np.array([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
    
    
    # Data temperatur (K) untuk setiap dataset
    data = {
        'J2': [303, 310, 320, 330, 340, 350, 360, 370, 353, 303],
        'J3': [303, 312, 322, 332, 342, 352, 362, 372, 353, 303],
        'J4': [303, 314, 324, 334, 344, 354, 364, 374, 353, 303],
        'J5': [303, 316, 326, 336, 346, 356, 366, 376, 353, 303],
        'J6': [303, 318, 328, 338, 348, 358, 368, 378, 353, 303],
        'J7': [303, 320, 330, 340, 350, 360, 370, 380, 353, 303],
        'J8': [303, 322, 332, 342, 352, 362, 372, 382, 353, 303],
        'J9': [303, 324, 334, 344, 354, 364, 374, 384, 353, 303],
        'J10': [303, 326, 336, 346, 356, 366, 376, 386, 353, 303]
    }
    
    
    # Koefisien konduktivitas termal (W/m·K)
    k = 16.2
    
    
    # Fungsi kuadratik untuk fitting
    def quadratic(x, a, b, c):
        return a * x**2 + b * x + c
    
    
    # Fungsi untuk menghitung turunan dT/dx
    def dT_dx(x, a, b):
        return 2 * a * x + b
    
    
    # Fungsi untuk menghitung heat flux q_x = -k * dT/dx
    def heat_flux(x, a, b):
        return -k * dT_dx(x, a, b)
    
    
    # Membuat plot
    plt.figure(figsize=(12, 8))
    
    
    # Variabel untuk menyimpan hasil fitting dan perhitungan
    fitting_results = ""
    total_power = 0
    
    
    # Plot data asli dan kurva fitting untuk J2 hingga J10
    for label, y in data.items():
        try:
            # Lakukan fitting
            params, _ = curve_fit(quadratic, x, y)
            a, b, c = params
           
            # Plot titik data asli
            plt.scatter(x, y, label=f'{label} Data', marker='o', s=40, alpha=0.7)
           
            # Plot kurva fitting
            x_fit = np.linspace(0, 0.9, 100)
            y_fit = quadratic(x_fit, *params)
            plt.plot(x_fit, y_fit, label=f'{label} Fit', linestyle='--', alpha=0.8)
           
            # Menampilkan persamaan fitting dalam plot
            eq = f'{a:.2f}x² + {b:.2f}x + {c:.2f}'
            plt.text(0.02, y_fit[-1], eq, fontsize=8, verticalalignment='bottom')
           
            # Tambahkan hasil fitting ke string HTML
            fitting_results += f"<h3>{label}</h3><p>Persamaan Temperatur: T(x) = {a:.2f}x² + {b:.2f}x + {c:.2f}</p>\n"
           
            # Hitung heat flux (q_x = -k * dT/dx)
            q_x = heat_flux(x_fit, a, b)
            fitting_results += f"<p>Persamaan Heat Flux: q_x = {-k * 2 * a:.2f}x + {-k * b:.2f} W/m²</p>\n"
           
            # Hitung daya dengan integral (P = ∫ q_x dx dari 0 hingga 0.9)
            power = np.trapz(q_x, x_fit)
            total_power += power
            fitting_results += f"<p>Daya: {power:.2f} W</p>\n"
            print(f"{label}:")
            print(f"  Persamaan Temperatur: T(x) = {a:.2f}x² + {b:.2f}x + {c:.2f}")
            print(f"  Persamaan Heat Flux: q_x = {-k * 2 * a:.2f}x + {-k * b:.2f} W/m²")
            print(f"  Daya: {power:.2f} W")
       
        except RuntimeError as e:
            print(f"Error fitting {label}: {e}")
            continue
    
    
    # Menambahkan label dan legenda pada plot
    plt.xlabel('Posisi (m)')
    plt.ylabel('Temperatur (K)')
    plt.title('Curve Fitting Data Temperatur J2 hingga J10')
    plt.legend(fontsize=9)
    plt.grid(True, linestyle='--', alpha=0.5)
    
    
    # Menampilkan plot
    plt.show()
    
    
    # Cetak total daya
    print(f"\nTotal Daya Sistem: {total_power:.2f} W")
    fitting_results += f"<h2>Total Daya Sistem: {total_power:.2f} W</h2>"
    
    
    # Simpan hasil fitting dan perhitungan ke file HTML
    html_content = f"""
    <!DOCTYPE html>
    <html>
    <head>
        <title>Curve Fitting and Heat Flux Results</title>
        <style>
            body {{ font-family: Arial, sans-serif; margin: 20px; }}
            h3 {{ color: #2c3e50; }}
            h2 {{ color: #e74c3c; }}
            p {{ margin: 5px 0; }}
        </style>
    </head>
    <body>
        <h1>Hasil Curve Fitting dan Perhitungan Heat Flux</h1>
        <p>Data diambil dari J2 hingga J10 untuk posisi x (I2 hingga I10).</p>
        {fitting_results}
    </body>
    </html>
    """
    with open("curve_fitting_and_heat_flux_results.html", "w", encoding='utf-8') as f:
        f.write(html_content)
    
    
    print("File 'curve_fitting_and_heat_flux_results.html' telah disimpan.")