Perkenalkan saya Maydi Addison dengan npm 2306209492, dalam tugas kali ini membuat persebaran daya pada simulasi heat conduction pada plat 2D. Aplikasi yang digunakan untuk simulasi ini adalah CFDSOF.
Sebelum memulai tugas, saya tetap menggunakan framework DAI5 untuk mengerjakan tugas ini.
1. Deep Awareness of I
Sebelum engerjakan tugas ini, saya merenung dan menyadari bahwa saya berada pada kelas metode numerik untuk terus mengembangkan ilmu pengetahuan saya. Kemudian dengan adanya AI, saya mau memanfaatkan AI untuk kebaikan saya terutama dalam pengembangan minat akademik saya.
2. Intention
Tujuan utama dari tugas ini adalah untuk mengembangkan metode numerik yang dapat menghasilkan model matematis berdasarkan data simulasi yang diperoleh dari software Computational Fluid Dynamics Software (CFDSOF). Melalui cara ini, saya ingin memahami pola distribusi panas dan bagaimana fluks panas serta daya termal dapat dihitung dengan akurat. Kemudian dari persamaan termal serta fluks panas saya juga dapt mempelajari daya yang dibutuhkan
3. Initial Thinking
Untuk menemukan pola dalam data, pendekatan curve fitting dapat digunakan untuk mendapatkan persamaan temperatur dalam bentuk polinomial. Kemudian dengan menggunakan hukum Fourier, fluks panas dapat dihitung dengan mencari turunan pertama dari persamaan temperatur.
4. Idealization
Dalam tahap ini, solusi yang ideal perlu dirancang agar model dapat diimplementasikan secara sistematis:
- Curve Fitting: Menggunakan metode regresi polinomial untuk menemukan persamaan temperatur sebagai fungsi dari sumbu Y.
- Hukum Fourier: Menurunkan persamaan temperatur untuk mendapatkan fluks panas berdasarkan hukum konduksi Fourier.
- Integrasi Numerik: Menggunakan metode kuadratur numerik untuk menghitung daya termal dengan mengintegrasikan fluks panas terhadap luas area.
- Visualisasi: Membuat representasi grafik untuk membantu pemahaman tentang pola distribusi panas dan daya.
5. Instruction Set
Kemudian langkah yang paling penting adalah mengerjakan tugas dengan prompting ke AI sesuai dengan data yang sudah saya dapatkan. AI diprompting dengan langkah-langkah berikut ini:
- Preprocessing Data
- Membaca data dari file CSV yang berisi hasil simulasi CFDSOF.
- Mengorganisir data berdasarkan posisi J-2 hingga J-10.
- Curve Fitting untuk Temperatur
- Menggunakan regresi polinomial orde tiga untuk mendapatkan persamaan temperatur sebagai fungsi Y.
- Mengekstrak koefisien polinomial untuk setiap posisi J.
- Menghitung Fluks Panas dengan Hukum Fourier
- Menurunkan persamaan temperatur untuk mendapatkan gradien temperatur.
- Menggunakan nilai konduktivitas termal (k = 16.2 W/m.K) untuk menghitung fluks panas.
- Menghitung Daya Termal
- Mengintegrasikan fluks panas terhadap luas area menggunakan metode kuadratur numerik.
- Menentukan daya termal pada setiap posisi J dan merepresentasikannya dalam bentuk tabel dan grafik.
- Visualisasi dan Penyimpanan Data
- Membuat grafik distribusi temperatur, fluks panas, dan daya termal.
- Menyimpan hasil dalam file CSV agar dapat diakses kembali.
- Membuat file HTML dengan JavaScript untuk visualisasi interaktif menggunakan Chart.js.
Curve Fitting


Persamaan Temperatur T(Y) untuk Tiap Sumbu Y dari J-2 hingga J-10

persamaan fluks panas qY(Y)q_Y(Y)qYโ(Y) untuk setiap sumbu Y dari Jโ2h ingga Jโ10, menggunakan Hukum Fourier dengan k=16.2


Daya Termal
Dihitung dengan rumus:


Distribusi Daya untuk J-2 hingga J-10

Sekian tugas ini saya kerjakan, mohon maaf jika ada kesalahan.
Kode yang digunakan AI untuk curve fitting:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Curve Fitting Visualization</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<h2>Curve Fitting Visualization</h2>
<canvas id="curveChart"></canvas>
<script>
async function fetchData(j_label) {
const response = await fetch(j_label + "_fitted.csv");
const data = await response.text();
const rows = data.split("\n").slice(1);
let x_values = [], y_values = [];
rows.forEach(row => {
const cols = row.split(",");
if (cols.length === 2) {
x_values.push(parseFloat(cols[0]));
y_values.push(parseFloat(cols[1]));
}
});
return { x_values, y_values, label: j_label };
}
async function plotChart() {
const labels = ["J-2", "J-3", "J-4", "J-5", "J-6", "J-7", "J-8", "J-9", "J-10"];
let datasets = [];
for (let label of labels) {
const data = await fetchData(label);
datasets.push({
label: data.label,
data: data.y_values,
borderColor: '#' + Math.floor(Math.random()*16777215).toString(16),
fill: false
});
}
const ctx = document.getElementById('curveChart').getContext('2d');
new Chart(ctx, {
type: 'line',
data: {
labels: datasets[0].x_values,
datasets: datasets
},
options: {
responsive: true,
scales: {
x: { title: { display: true, text: 'Y Position' } },
y: { title: { display: true, text: 'Temperature' } }
}
}
});
}
plotChart();
</script>
</body>
</html>