Assalamualaikum Warahmatullahi Wabarakatuh. Perkenalkan nama saya Yudistira Yudhanto dengan NPM 2306238750 dari kelas Metode Numerik-02. Kali ini saya akan membahas Prinsip & Algoritma PINN Dalam Penerapan Heat Conduction 1D Dengan Framework DAI5.
Deep Awareness of I
Pada tahap awal ini, saya menyadari bahwa seluruh ilmu pengetahuan yang kita pelajari sejatinya adalah bagian dari keteraturan ciptaan Allah SWT. Setiap fenomena fisika, termasuk proses konduksi panas, berjalan sesuai dengan hukum-hukum alam yang telah ditetapkan-Nya. Sehingga, penerapan metode PINN juga menjadi refleksi atas keteraturan alam yang telah ditetapkan oleh Sang Pencipta.
Intention
Pada pembe;ajaran kali ini , saya memilih untuk menggunakan PINN sebagai metode utama. PINN merupakan pendekatan inovatif untuk menyelesaikan persamaan diferensial parsial (PDE). Metode ini adalah ampuh untuk menciptakan model komputasi dengan tetap mempertahankan hukum fisika yang berlaku. Intinya PINN itu buat nyelesain 1D Heat Conduction tanpa solve PDE Tradisional. Output-nya adalah model NN yang kalau dikasih x, dia ngeluarin T(x) yang bener sesuai hukum fisika.
Initial Thinking
Dalam analisis perpindahan panas, hukum fundamental yang digunakan adalah Hukum Fourier. Hukum ini menyatakan bahwa aliran panas dalam suatu sistem berbanding lurus dengan gradien suhu dalam arah tertentu. Gradien distribusi temperatur dalam sumbu x bernilai konstan, sehigga penyebaran panas terjadi secara linier sepanjang batang konduktor. Intinya bangun Neural Network T(x) . Terdapat 3 komponen:
- Physics Loss: harus patuh dengan rumus dasar
- Boundary Loss: T(0)=100, T(1)=0
- Optional Data Loss: kalau ada data tambahan (di sini ga ada)
Idealization
Algoritma akan bertugas untuk menghitung tingkat energy loss atau kehilangan energi yang terjadi selama proses perpindahan panas. Jadi intinya kita idealisasi dengan Neural Network-nya sederhana, hidden layer 2-3 lapis cukup. Kemudian turunan kedua kita hitung pakai autograd (PyTorch), dan yang terakhir sampling 100 titik random di domain x dari 0 ke 1.
Instruction Set
Menggunakan algoritma PINN 1D HC
mport torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
# Define Neural Network
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)
# Physics-Informed Loss
def loss_fn(model, 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
physics_loss = torch.mean(d2T_dx2**2)
# Boundary Conditions
bc_left = (model(torch.tensor([[0.0]])) - 100)**2
bc_right = (model(torch.tensor([[1.0]])) - 0)**2
return physics_loss + bc_left + bc_right
# Training
model = PINN()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
for epoch in range(5000):
x = torch.rand(100, 1) # Sample 100 points from domain [0,1]
loss = loss_fn(model, x)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if epoch % 500 == 0:
print(f"Epoch {epoch}, Loss: {loss.item():.6f}")
# Plot the result
x_test = torch.linspace(0, 1, 100).reshape(-1, 1)
T_pred = model(x_test).detach().numpy()
plt.plot(x_test, T_pred, label="PINN Solution")
plt.plot(x_test, 100 - 100*x_test.numpy(), 'r--', label="Analytical Solution")
plt.legend()
plt.xlabel("x")
plt.ylabel("T(x)")
plt.show()
Sehingga menghasilkan grafik berikut
Kesimpulan
Penerapan PINN dengan prinsip DAI5 tidak hanya melatih kemampuan teknis dalam menyelesaikan persoalan numerik, tetapi juga menanamkan nilai-nilai keimanan, keikhlasan, dan tanggung jawab moral. Ilmu dan teknologi berfungsi mengelola pengetahuan secara bijak agar bermanfaat bagi banyak orang