Assalamualaikum Wr. Wb.
(Deep Awareness of I)
Nama saya Yhandra dengan NPM 2306260151 dari program studi Teknik Mesin. Beberapa minggu lalu saya telah mensimulasikan proses heat transfer pada aplikasi virtual CFDSOF, yang mana hasil dokumentasinya telah saya upload dalam tautan di bawah ini:
(Intention)
Untuk langkah selanjutnya, saya melakukan analisis berdasarkan data yang telah saya dapatkan. Analisis tersebut bertujuan agar saya dapat memahami lebih lanjut tentang proses perpindahan panas, serta membuat inovasi terkait hal tersebut dalam dunia nyata. Untuk metode analisisnya sendiri, pada kesempatan kali ini saya menggunakan algoritma komputer berupa PINN
(Initial-Thinking)
PINN, yang mana merupakan singkatan dari physical-informed neural network, merupakan suatu program inovatif yang berfungsi untuk mencari solusi dari suatu model persamaan differensial berdasarkan kondisi nyatanya. Program tersebut memberikan keuntungan dari efisiensi dan akurasi dari hasilnya jika dibandingkan dengan metode elemen hingga (FEM) dan differensiasi hingga (FDM).
Salah satu hal yang dapat diselesaikan dengan PINN ialah fenomena heat transfer. Seperti yang kita tahu, peristiwa tersebut dapat divisualisasikan menggunakan hukum Fourier yang mana dirumuskan sebagai:

Dimana:
- T sebagai temperatur (derajat Celsius)
- t sebagai waktu (detik)
- a sebagai difusivitas termal (m2/detik)
- x sebagai posisi (meter)
(Idealization)
Dengan itu, saya mesti menghitung tingkat loss function dari perhitungannya, serta memperkecilnya seminimal mungkin untuk meningkatkan akurasi dari hasilnya. Loss function atau energy loss sendiri merupakan energi yang terbuang saat proses yang terdiri dari:
- Physical loss, yang mana terbuang pada fase konduksi dari titik awal ke akhir sistem termal
- Boundary loss, akibat interaksi antara sistem dan lingkungan yang menyebabkan keluar atau masuknya energi termal
Untuk itu, saya mengatur sistem sebagai suatu plat stainless steel dengan panjang 1 meter dan ketebalan 0,3 meter. Dengan itu, panas akan mengalir secara konduksi sepanjang sistem mulai dari titik 100 sampai 0 derajat Celsius secara linier. Untuk meningkatkan akurasi, saya mengiterasikan perhitungan sebanyak 3000 kali epoch.
(Instruction Set)
Saya mengkalkulasi perhitungan menggunakan bahasa pemrograman Python dalam platform web https://colab.research.google.com. Saya menggunakan modul Numpy, Matplotlib dan Torch untuk membantu pengerjaan tugas saya, dan seperti inilah bentuk kode yang telah saya buat:
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
# Define Physics-Informed Neural Network (PINN)
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)
# Compute loss function for training
def compute_loss(model, x, T0, T1):
x = x.requires_grad_(True)
T = model(x)
# Compute derivatives
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 (dยฒT/dxยฒ = 0)
physics_loss = torch.mean(d2T_dx2**2)
# Boundary conditions
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
# Train the PINN model
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
# Plot the results
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 # Analytical solution
plt.figure(figsize=(8, 6))
plt.plot(x, T_pred, '--', label="PINN Solution", color='black')
plt.plot(x, T_analytical, label="Analytical Solution", color='green')
plt.xlabel("x")
plt.ylabel("Temperature")
plt.title("1D Steady-State Heat Conduction")
plt.legend()
plt.grid(True)
plt.show()
# Set parameters and run the PINN model
if __name__ == "__main__":
# Define boundary conditions and number of epochs
T0 = 100 # Left boundary temperature
T1 = 0 # Right boundary temperature
epochs = 3000 # Number of training epochs
model = train_pinn(T0, T1, epochs)
plot_results(model, T0, T1)
Dan dari kode tersebut, akan digenerasikan grafik visualisasi hasil analitik dan PINN sebagai berikut:

Sekian dari saya, terima kasih telah mengunjungi blog yang telah saya upload, mohon maaf bila terdapat ketidaksempurnaan pada tulisan saya di atas ini, karena kesempurnaan hanya milik tuhan
Wassalamualaikum Wr. Wb.