ccitonline.com

CCIT – Cara Cerdas Ingat Tuhan

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

Simulasi Perpindahan Panas 1 Dimensi Menggunakan Pendekatan PINN

Created by: Zakaa Aidan Ahmad – 2306225041

Beberapa waktu yang lalu, saya telah mendemonstrasikan fenomena perpindahan panas dalam 1 dimensi menggunakan perangkat lunak CFDSOF. Dengan itu, saya telah mendapatkan berbagai pengetahuan baru terkait peristiwa perpindahan panas, serta algoritma komputer untuk memperhitungkannya. Sementara itu, untuk bukti hasil simulasinya telah saya publiskan dalam bentuk video YouTube Berikut

Untuk proses analisis lanjutan, terdapat beberapa metode yang dapat saya gunakan. Salah satu metode tersebut ialah PINN atau Physics-Informed Neural Networks. Menggunakan kerangka berpikir DAI5, penjelasan terkait metode PINN ialah sebagai berikut:

Sebagai seorang manusia, saya sadar bahwa terdapat beberapa keterbatasan dalam diri saya, yang membuat saya tidak dapat melakukan beberapa hal sebaik mungkin. Namun, saya memiliki akal untuk dapat berpikir bahwa dengan bantuan suatu sistem, saya dapat melakukannya secara lebih baik. Salah satunya adalah penggunaan metode PINN dalam analisis perpindahan panas atau heat transfer, yang mana akan menghasilkan output data yang lebih akurat dibandingkan jika saya melakukannya secara manual

Dalam kesempatan kali ini, saya melakukan analisis menggunakan metode PINN. PINN sendiri – yang mana merupakan singkatan dari Physics-Informed Neural Networks – merupakan suatu metode untuk menjadi suatu jembatan antara dunia maya dengan fisik. Dengan kata lain, PINN dapat menghasilkan suatu model analisis dari suatu peristiwa fisika yang mana tetap dapat memenuhi hukum-hukum yang ada. Model tersebut memiliki keunggulan dibandingkan algoritma-algoritma komputer pada umumnya sebagai berikut:

  1. Dapat menyelesaikan suatu persoalan dengan lebih efisien, karena biaya operasionalnya yang lebih murah, dan algoritma tersebut sangat sederhana
  2. Tidak menggunakan pendekatan mesh untuk proses penyelesaiannya, sehingga meningkatkan akurasi

Sehingga, metode PINN sudah digunakan secara umum dalam berbagai aspek keteknikan selain visualisasi perpindahan panas, yang mana akan saya ujikan pada kesempatan kali ini

Proses perpindahan panas dapat dianalisis menggunakan hukum Fourier, yang menyatakan bahwa panas yang mengalir dalam suatu sistem berbanding lurus dengan gradien distribusi termalnya, yang mana dapat dirumuskan sebagai berikut:

Sementara itu, laju perpindahan panasnya dapat dirumuskan sebagai berikut:

Sehingga, jika kedua persamaan tersebut digabungkan, akan menghasilkan persamaan differensial berikut:

Yang mana pada kondisi steady state yang saya ujikan pada kesempatan kali ini, gradien distribusi temperatur pada sumbu x bernilai nol, sehingga kalor tersebar secara linier pada setiap posisi dalam arah tersebut

Tugas dari algoritma PINN tersebut ialah menghitung tingkat energy loss yang terjadi dalam suatu proses perpindahan panas, dan membuatnya bernilai sekecil mungkin. Loss function tersebut sendiri terdiri dari beberapa parameter berbeda, diantaranya adalah:

  1. Physical loss, merupakan energi yang hilang dalam proses perpindahan panas akibat hambatan internal, hal tersebut dipengaruhi oleh konduktivitas termal pada alat hantar, dimana semakin besar nilainya, semakin kecil tingkat energy loss nya
  2. Boundary loss, merupakan kehilangan energi akibat pengaruh eksternal, yang mana terjadi antara sistem dengan lingkungan maupun sebaliknya
  3. Total loss, merupakan akumulasi dari physical dan boundary loss

Dalam kesempatan kali ini, saya menggunakan parameter untuk dimasukkan dalam algoritma perhitungan perpindahan panas sebagai berikut:

  1. Material yang digunakan adalah baja nirkarat dengan konduktivitas 16,2 W/mK
  2. Panjang batang baja sebesar 1 meter
  3. Temperatur pada kedua ujungnya diatur sebagai T0 = 100C dan T1 = 0

Langkah selanjutnya ialah komputer akan menghitung loss function agar menghasilkan nilai sedekat mungkin dengan hasil analitiknya. Pada percobaan kali ini, saya mengatur agar iterasi (epoch) dilakukan sebanyak 5000 kali agar hasilnya maksimal

Terakhir, saya menggunakan bantuan pemrograman Python untuk menghitung solusi PINN dari hasil percobaan menggunakan CFDSOF, dengan beberapa set kode sebagai berikut:

  1. Mengimpor modul

Bertujuan untuk mendapatkan fungsi-fungsi bawaan Python untuk mempermudah proses pemrograman. Fungsi-fungsi yang saya impor adalah sebagai berikut:

  • Torch, untuk menggunakan operasi dalam kalkulus, seperti turunan dan integral, dalam perhitungan
  • Numpy, untuk mengoperasikan secara aljabar linier setiap variabel yang digunakan dalam perhitungan
  • Matplotlib, untuk menggenerasikan grafik berdasarkan parameter-parameter yang tersedia
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
  1. Mendefinisikan parameter PINN

Saya menggunakan object-oriented programming untuk mendefinisikan suatu kelas berupa PINN dengan berbagai macam fungsi yang tersedia

class PINN(nn.Module):
    def __init__(self):
        super(PINN, self).__init__()
        self.net = nn.Sequential(
            nn.Linear(1, 20),
            nn.Tanh(),
            nn.Linear(20, 20),
            nn.Tanh(),
            nn.Linear(20, 1)
        )

    def forward(self, x):
        return self.net(x)
  1. Menghitung loss function

Loss function dihitung berdasarkan physical dan boundary loss yang terjadi dalam proses perpindahan panas. Komputer akan meminimalkan nilainya untuk memaksimalkan output dalam perhitungan

def compute_loss(model, x, T0, T1):
    x = x.requires_grad_(True)
    T = model(x)

    dT_dx = torch.autograd.grad(T, x, grad_outputs=torch.ones_like(T), create_graph=True)[0]
    d2T_dx2 = torch.autograd.grad(dT_dx, x, grad_outputs=torch.ones_like(dT_dx), create_graph=True)[0]

    physics_loss = torch.mean(d2T_dx2**2)

    T_left = model(torch.tensor([[0.0]]))
    T_right = model(torch.tensor([[1.0]]))
    bc_loss = (T_left - T0)**2 + (T_right - T1)**2

    return physics_loss + bc_loss
  1. Memodifikasi parameter PINN

Saya memodifikasi parameter dengan nilai epoch sebanyak 5000 kali untuk memaksimalkan kualitas hasil

def train_pinn(T0, T1, epochs=1000):
    model = PINN()
    optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
    x = torch.linspace(0, 1, 100).reshape(-1, 1)

    for epoch in range(epochs):
        optimizer.zero_grad()
        loss = compute_loss(model, x, T0, T1)
        loss.backward()
        optimizer.step()

        if epoch % 100 == 0:
            print(f"Epoch {epoch}, Loss: {loss.item():.6f}")

    return model
  1. Menampilkan grafik

Grafik akan ditampilkan berdasarkan hasil perhitungan sebelumnya, agar dapat digunakan dalam berbagai media, saya juga menggunakan bantuan kode HTML untuk menggenerasikannya

def plot_results(model, T0, T1):
    x = torch.linspace(0, 1, 100).reshape(-1, 1)
    with torch.no_grad():
        T_pred = model(x).numpy()
        x = x.numpy()
        T_analytical = T0 + (T1 - T0) * x

    plt.figure(figsize=(8, 6))
    plt.plot(x, T_pred, '--', label="PINN Solution", color='red')
    plt.plot(x, T_analytical, label="Analytical Solution", color='blue')
    plt.xlabel("x")
    plt.ylabel("Temperature")
    plt.title("1D Steady-State Heat Conduction")
    plt.legend()
    plt.grid(True)
    plt.show()
  1. Program utama

Inilah program utama yang akan menggunakan setiap fungsi yang tersedia secara berurutan, sehingga akan terbentuk hasil perhitungan berdasarkan data analitik dan PINN

if __name__ == "__main__":
    T0 = 100 
    T1 = 0  
    epochs = 5000 

    model = train_pinn(T0, T1, epochs)
    plot_results(model, T0, T1)

Sementara itu, untuk hasil berupa grafik perbandingan kedua pendekatan numerik tersebut telah ditampilkan dibawah ini:

Grafik Solusi Analitikal dan PINN Untuk Heat Transfer 1 Dimensi

Perpindahan Panas 1 Dimensi