Komputasi Fisika 2 Simulasi dan Visualisasi Fisika dengan C++ dan Gnuplot
Editor:
Sparisoma Viridi Siti Nurul Khotimah Suprijadi
Departemen Fisika, FMIPA, Institut Teknologi Bandung 2016
Komputasi Fisika 2 Simulasi dan Visualisasi Fisika dengan C++ dan Gnuplot
Editor:
Sparisoma Viridi Siti Nurul Khotimah Suprijadi
Departemen Fisika, FMIPA, Institut Teknologi Bandung 2016
Buku ini disusun dengan bantuan dukungan Riset ITB tahun 2016.
Sparisoma Viridi, Siti Nurul Khotimah, dan Suprijad i (editor), Komputasi Fisika 2: Simulasi dan Visualisasi Fisika dengan C++ dan G nuplot, Departemen Fisika, Institut Teknologi Bandung Lisensi ITB 2016 Penyebaran dalam bentuk aslinya diperbolehkan selama untuk pendidikan dan tak-komersial. Modifikasi dan pembuatan karya turunan memerlukan ijin dari penulis
[email protected] |
[email protected]. id |
[email protected]
Pengantar Buku Komputasi Fisika 2: Simulasi dan Visualisasi Fisika dengan C++ dan Gnuplot ini merupakan kumpulan tugas RBL (research based learning) pengganti presentasi akhir atau U2 (ujian kedua) pada matakuliah FI6091 Studi Mandiri I, FI5005 Komputasi Sistem Fisis, dan FI4278 Komputasi Sistem Granular yang masing-masing merupakan layanan dalam Program Magister Fisika dan Program Sarjana Fisika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Teknologi Bandung, Indonesia. RBL merupakan suatu metode pembelajaran yang sudah umum diberikan pada program studi-program studi dalam eks-Departemen Fisika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Teknologi Bandung, sejak sekitar tahun 2007-an. Saat itu matakuliah-matakuliah Fisika Dasar (IA, IB, IIA, dan IIB) merupakan menjadi implementasi pertamanya. Antusiasme dari pengajar dan peserta ajar membuat metode ini kemudian menjadi rutin dan populer digunakan dalam semua jenjang (S1, S2, dan S3). Khusus dalam kuliah terkait komputasi metode pengajaran ini dianggap baik karena peserta ajar dapat menerapkan hasil pemahaman mereka dalam suatu permasalahan nyata yang telah dipilih dan kemudian menyelesaikannya secara numerik. Setiap tugas RBL tersebut disajikan dalam tiap bab, telah dilengkapi dengan deskripsi permasalahan fisisnya, penyelesaiannya sampai pada bentuk (baik secara sengaja ataupun tidak) yang tidak diselesaikan secara analitik melainkan secara numerik, metode numerik yang digunakan, algoritma program, hasil yang diperoleh dan diskusinya, referensi, dan lampiran kode-kodenya (minimal berkas .cpp dan .gps), yang sesuai dengan artikel template yang telah dibuat oleh para penyunting. Pembaca diharapkan dapat memanfaatkan contoh-contoh RBL tersebut dalam mempelajari sistem fisis yang dipilih, metode numerik, dan penerapannya dalam C++ dan visualisasinya menggunakan Gnuplot. Salah satu alasan mengapa C++ (lebih tepatnya G++) dan Gnuplot yang dipilih adalah karena keduanya telah tersedia dalam sistem operasi Linux sehingga diharapkan dapat menurunkan hambatan awal bagi seorang mahasiswa fisika untuk belajar simulasi dan visualisasi dengannya, yang tidak perlu terlebih dahulu melakukan instalasinya (yang kadang tidak mudah karena banyaknya kebergantungan pada aplikasi dan pustaka lain). Aplikasi pemrograman yang lebih ramah pengguna (user friendly) seperti Matlab dan Scilab sedapat mungkin dihindari karena terlalu banyak menyembunyikan detil proses komputasi, yang dirasakan dapat memanjakan peserta ajar sehingga tidak terbiasa berpikir kritis dan teknis. Bandung, Mei 2016 Sparisoma Viridi, Siti Nurul Khotimah & Suprijadi (editor)
i
Komputasi Fisika 2: Pengantar
ii
Cara merujuk Setiap bab dalam buku Komputasi Fisika 2: Simulasi dan Visualisasi Fisika dengan C++ dan Gnuplot ini dapat dirujuk dengan cara Nama_Penulis_1, Nama_Penulis_2, .., "Judul bab" dalam Komputasi Fisika 3: Simulasi dan Visualisasi Fisika dengan JavaScript oleh S. Viridi, S. N. Khotimah, Suprijadi (editor), 2016, pp. halaman_mulai-halaman_akhir. Atau dengan menggunakan rujukan untuk format referensi berbentuk chapter of the book, misalnya untuk bab 1 A. Zaharo, C. Wulandari, F. U. Jhora, R. N. S. Rofika, "Simulasi pertumbuhan tumor dengan metode central finite difference" dalam Komputasi Fisika 2: Simulasi dan Visualisasi Fisika dengan C++ dan Gnuplot oleh S. Viridi, S. N. Kotimah, Suprijadi (editor), 2016, pp. 1-22.
iii
Komputasi Fisika 2: Cara merujuk
iv
Daftar isi i
Pengantar
iii
Cara merujuk Daftar isi
v
1
Simulasi pertumbuhan tumor dengan metode central finite difference A. Zaharo, C. Wulandari, F. U. Jhora, R. N. S. Rofika
1
2
Distribusi Panas Donat yang Dipanggang di dalam Oven A. Nelvi, E. D. Atmajati, Tiffany, B. A. N. Putra
23
3
Penerapan metode beda hingga dalam penyelesaian berbagai macam persamaan diferensial dari osilator harmonis hingga Klein-Gordon M. F. A. R. Sakti
43
4
Karambol ditinjau dari segi fisika granular A. Akbar, A. S. U. Ulwi, C. W. Winardhi, O. D. Saputro, R. M. B. Pede
81
5
Gerakan tali sebagai rantai granular bermuatan dan bermassa dalam medan listrik seragam dan periodik C. Saputra, B. Y. Setiadi, W. Trisvianto, Z. L. Maulana
99
6
Simulasi trayektori nanopartikel Au+ yang ditumbuhkan di dalam pengaruh medan listrik, dan medan magnet, di dalam vakum D. Mustikasari, S. Khairani, M. W. A. Sektiono
127
7
Pengaruh fraksi volume, tekanan udara, dan diameter nozzle dalam gerak roket air F. Fitria H., D. Fitrasari, R. Amaliah , F. Mohammed
139
8
Distribusi temperatur 1-D pada batang dengan variasi jumlah kontak dan lebar kontak terhadap lingkungan H. D. Rahmayanti, M. B. Sari, F. D. Utami, P. H. Liani
175
9
Pengaruh momentum awal pesawat pada orbit manuver ayunan gravitasi R. M. Akbar, M. Harier, G. Alfarizy, Y. Geganaseta
199
10 Simulasi Gerakan Harmonis dan Chaotic pada Sistem Triple Pendulum dengan Metode Dinamika Molekuler-Euler S. Pahmi, I. Rizkia, A. A. Nurunnizar, Z. R. Pratiwi
209
11 Kecepatan akhir tumbukan satu dimensi dua partikel: Sebuah partikel monoatomik dan sebuah partikel diatomik S. Viridi, S. N. Khotimah, Suprijadi
231
v
Komputasi Fisika 2: Daftar isi
12 Simulasi pergerakan ion pada ion counter dengan medan listrik nonhomogen dan pengaruh gaya gesek udara M. Y. Sulaeman, R. Rizky, L. Yuliantini, D. A. Hapidin
245
13 Karakteristik pengosongan air pada sistem tangki air silinder Y. Sanjaya, Y. A. Rezeki, M. A. Mustajab E. M., A. Zulfi
267
14 Simulasi kasus gerak benda teredam pada aktivitas Bungee Jumping menggunakan eksperimen sederhana Fajriani, Y. H. Arzi, Muslihun
285
vi
1
Simulasi pertumbuhan tumor dengan metode central finite difference
Aflah Zaharo |
[email protected] Cici Wulandari |
[email protected] Fadhila Ulfa Jhora |
[email protected] Rida Nurul Shelni Rofika |
[email protected] Fase pertumbuhan tumor terdiri dari tiga fase, yaitu fase sel proliferating, sel quiescent, dan sel necrotic. Fase awal pembentukan kerapatan sel tumor disimbolkan dengan p(x,t), q(x,t), dan n(x,t), masing-masing untuk sel proliferating, quiescent, dan necrotic. Dalam tulisan ini digunakan model matematis menggunakan metode central finite difference (Sherrat & Chaplin, 2001). Hasil menunjukan pada fase awal perkembangan tumor, bagian pusat dari koloni tumor akan diisi oleh sel necrotic, kemudian sel quiescent, dan yang paling terluar adalah sel proliferating. Telah dilakukan variasi pada parameter α, β, dan ɤ. Variasi parameter α pada sel tumor menunjukkan nilai yang teratur dengan bertambahnya nilai α. Sedangkan variasi pada parameter β dan ɤ relatif tidak memberikan pengaruh yang berarti pada kerapatan sel.
1.1 Pendahuluan Dalam tubuh yang sehat, sel normal akan tumbuh, membelah, mati, lalu tergantikan oleh sel baru dalam proses yang sangat terkontrol. Informasi tentang mekanisme kontrol ini terjadi pada DNA sel. Ketika terjadi kerusakan material genetik pada DNA, baik akibat dari faktor internal maupun faktor lingkungan dapat menyebabkan pertumbuhan yang tidak terkontrol dari sel, sehingga akan membentuk tumor. Tumor berukuran besar berawal dari sejumlah massa sel tumor berukuran kecil, kemudian membelah dengan sangat cepat dibandingkan sel sehat di sekitarnya. Fase awal pembentukan massa tumor disebut sebagai avascular stage. Fase avascular dari tumor sangat jarang dapat dideteksi secara klinis karena ukuran dan massa tumor yang kecil [1]. Beberapa penelitian sel tumor secara in vitro menunjukkan bahwa pada fase awal perkembangan tumor, tumor membentuk suatu sistem spheroid (berbentuk bola yang berlapis-lapis). Spheroid ini ditumbuhkan dalam medium yang berisi nutrisi yang dibutuhkan sel untuk berkembang, benih sel awal didapat dari sel tumor pada jaringan inang. Sel yang dikembangkan secara in vitro ini dapat tumbuh dengan diameter sampai beberapa millimeter. Spheroid pada tahap avascular terdiri dari lapisan-lapisan dengan penyusun berupa sel necrotic yang berada di bagian dalam spheroid yang merupakan sel mati. Lapisan diatasnya adalah sel quiescent yang tidak membelah, tetapi tetap hidup dan dapat membelah lagi ketika lingkungan disekitarnya berubah, terutama jika mendapat nutrisi yang cukup. Alasan mengapa multicellular spheroid menjadi quiescent cells
1
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
dan kemudian mati masih belum di pelajari secara ekstensif, sehingga belum terdapat jawaban yang pasti. Tingkat oksigen dan glukosa berperan penting dalam pertumbuhan sel, termasuk sel tumor. Jadi sel tumor yang aktif berkembang akan cenderung mejadi sel quiescent ketika tingkat oksigen dan glukosa tidak cukup. Salah satu alasan yang dapat diterima untuk menjelaskan mengapa sel yang aktif membelah mejadi sel quiescent adalah berkurangnya fungsi mitokondria (bukan jumlah). Lapisan paling luar adalah sel proliferating yang tumbuh dan aktif membelah. Nutrisi yang ada disekitar tumor pada fase avascular di konsumsi terlebih dahulu oleh sel proliferating, sedangkan sel quiescent hanya medapat sedikit nutrisi.
Gambar 1.1 Tiga struktur lapisan sel tumor (sel proliferating, quiescent, necrotic)
Terdapat berbagai pendekatan yang dilakukan untuk menghasilkan model matematika dari fase awal tumor. Pendekatan berbeda akan menghasilkan model yang berbeda. Dalam tulisan ini digunakan model matematis menggunakan metode central finite difference [2].
1.2 Model Model pertumbuhan sel tumor yang dimodelkan merupakan fase awal pembentukan kerapatan sel pada spheroid yang disimbolkan dengan p(x,t), q(x,t), dan n(x,t), masing-masing untuk sel proliferating, quiescent dan necrotic. Sedangkan t adalah waktu dan x adalah koordinat ruang dalam domain satu dimensi. Model kompartemen diberikan dalam Gambar 1.2 berikut ini [2].
2
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
Gambar 1.2 Model sel proliferating, quiescent, necrotic dan ketersediaan nutrisi
Gambar 1.2 merupakan model hubungan antara sel proliferating, quiescent, necrotic dan ketersediaan nutrisi. Sel necrotic merupakan sel non-motile (perkembangbiakannya tidak cepat) sedangkan sel proliferating dan quiescent dapat bergerak dimana perpindahan sel tersebut dapat dibatasi. Fenomena ini dikenal dengan contact inhibition pada migrasi. Kemudian diasumsikan total fluks sel proliferating dan quiescent adalah: ∂( p + q ) ∂x .
(1.1) Jika diasumsikan bahwa kedua populasi sel memiliki kemampuan gerak yang sama, maka pergerakan untuk masing-masing sel adalah: ∂ p ∂( p + q ) ∂x p + q ∂x ∂ q ∂( p + q ) ∂x p + q ∂x
(1.2)
.
(1.3) Diasumsikan sel proliferating tumbuh dengan laju yang dibatasi oleh kepadatan total populasi sel dan sel ini berubah menjadi sel quiescent dengan laju yang bergantung pada jumlah nutrisi c(x,t). Kemudian dengan mengasumsikan sel quiescent berubah menjadi sel necrotic juga bergantung pada nutrisi c(x,t), maka model matematis laju pertumbuhan kerapatan sel proliferating, quiescent dan necrotic dapat dinyatakan oleh persamaan-persamaan berikut : ∂p ∂ p ∂ ( p + q ) + g (c ) p (1 − p − q − n ) − f (c ) p = ∂t ∂x p + q ∂x
(1.4)
∂q ∂ q ∂ ( p + q ) + f (c ) p − h(c )q = ∂t ∂x p + q ∂x
(1.5)
∂n = h(c )q ∂t .
(1.6)
Pertumbuhan sel bergantung dari fungsi konsentrasi dari nutrisi g(c), f(c) dan h(c). Dimana f(c) dan h(c) adalah fungsi yang menurun, keduanya menuju nol ketika c menuju tak hingga, sedangkan g(c) merupakan fungsi yang naik. Nilai 1 menunjukkan total populasi awal (t = 0) dan nilai g(0) di buat menjadi 1 agar cocok dengan kondisi awal. Laju dari pertumbuhan sel quiescent biasanya lebih besar daripada laju pertumbuhan sel necrotic, kita dapat mengasumsikan bahwa f(c)>h(c). Sedangkan konsentrasi dari nutrisi memenuhi persamaan berikut :
3
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
c=
c0γ (1 − α ( p + q + n )) γ+p ,
(1.7)
dimana α dan ɤ merupakan parameter tak berdimensi. Persamaan (4) hingga (7) dapat diselesaikan secara numerik menggunakan metode finite difference. Dengan mengggunakan forward difference untuk variabel waktu t dan central difference untuk variabel ruang x. Maka dengan memisalkan u pada Persamaan (4) : u=
∂ p ∂( p + q ) ∂x p + q ∂x
.
(1.8)
Dengan menguraikan Persamaan (1.8) didapat : u=
p ∂ 2 ( p + q) ∂ p ∂( p + q ) + p + q ∂x 2 ∂x p + q ∂x
(1.9)
atau ∂ 1 ∂( p + q ) ∂( p + q ) p p ∂ 2 ( p + q) − u = + 2 ∂x ∂x p + q ∂x 2 ∂x p + q ( p + q ) .
(1.10)
Dimisalkan r = p + q ∂ 1 p ∂r ∂r p ∂ 2 r u = − 2 + 2 ∂x r r ∂x ∂x r ∂x . (1.11) Dengan memasukan metode central finite difference untuk variabel ruang maka Persamaan (1.11) menjadi:
pj − pj 1 i −1 j u ij = i +1 2 x ∆ ri
pj rj −rj rj −rj p j r j − 2ri j + ri −j1 − i 2 i +1 i −1 i +1 i −1 + ii i +1 j 2∆x 2∆x rj (∆x )2 ri (1.12)
( )
dapat disederhanakan menjadi :
ui
j
(p =
j i +1
)( )(
)
( 4(∆x ) (r )
)
(
− p ij−1 ri j ri +j 1 − ri −j1 + 4 p ij r ji ri +j 1 − 2ri j + ri −j 1 − pij ri +j 1 − ri −j 1
)
2
j 2
2
i
(1.13)
Dan dengan dimisalkan v untuk Persamaan (1.5) didapat : v=
∂ q ∂( p + q ) ∂x p + q ∂x .
(1.14)
Maka Persamaan (1.14) dapat diuraikan menjadi : v=
q ∂ 2 ( p + q) ∂ q ∂( p + q ) + p + q ∂x 2 ∂x p + q ∂x ,
4
(1.15)
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
atau ∂ 1 ∂( p + q ) ∂ ( p + q ) q q ∂ 2 ( p + q) − + v = 2 ∂x ∂x p + q ∂x 2 ∂x p + q ( p + q ) .
(1.16)
Dimisalkan r = p + q ∂ 1 q ∂r ∂r q ∂ 2 r v = − 2 + 2 ∂x r r ∂x ∂x r ∂x .
(1.17) Finite difference digunakan dua indeks. Indeks atas menyatakan variabel waktu dan indeks bawah menyatakan variabel posisi. Dengan memasukan metode central finite difference untuk variabel ruang maka Persamaan (1.17) menjadi: qij ri +j 1 − ri −j1 ri +j 1 − ri −j1 q ij ri +j 1 − 2ri j + ri −j1 − + i j 2 2∆x 2∆x rj (∆x )2 ri . (1.18) Dapat disederhanakan menjadi : q j − q j 1 i −1 j vij = i +1 r 2 x ∆ i
vi j =
(q
j i +1
( )
)( )(
)
( 4(∆x ) (r )
)
(
− qij−1 ri j ri +j1 − ri −j1 + 4qij r ji ri +j1 − 2ri j + ri −j1 − qij ri +j1 − ri −j1
)
2
i 2 j
2
. (1.19) Kemudian dengan menggunakan metode forward finite difference untuk variabel waktu maka Persamaan (1.4) menjadi : pij +1 − pij = u i j + g c i j p i j 1 − p i j − q i j − ni j − f c i j p i j ∆t
( ) (
atau
[
) ( )
) ( ) ]
( ) (
pij +1 = pij + ∆t u ij + g cij pij 1 − pij − qij − nij − f cij pij .
(1.20)
(1.21)
Dengan cara yang sama untuk Persamaan (1.5):
qij +1 − qij = v i j + f c i j p i j − h ci j q i j ∆t
( )
atau dapat ditulis :
(
( )
( )
( ) )
qij +1 = qij + ∆t vij + f cij pij − h cij qij .
(1.22)
(1.23)
Dan Persamaan (1.6) menjadi :
nij +1 − nij = h ci j qi j ∆t
( )
atau dapat ditulis :
(1.24)
[( ) ]
nij +1 = nij + ∆t h cij qij .
(1.25)
Dan Persamaan (1.7) menjadi : c ij =
γ γ + p ij
[1 − α ( p
5
j i
)]
+ q i j + ni j .
(1.26)
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
Persamaan (1.14), (1.19), (1.21), (1.23), (1.25) dan (1.26) akan diselesaikan dengan menggunakan bahasa pemrograman C++.
1.3 Bentuk fungsi, syarat awal dan syarat batas Dalam model ini bentuk fungsi yang digunakan adalah [2] :
f (c ) =
(1 − tanh(4c − 2))
2 f (c ) h(c ) = 2
g (c ) = βe βc
(1.27) (1.28) (1.29)
dengan β = 0.5 . Kondisi awal adalah dengan mengasumsikan pada t = 0, q(x,0) = 0, n(x,0) = 0, c = 1 dan kerapatan sel berkurang secara eksponensial ketika x bertambah. Diambil p(x,0) = e-0.1x. Sedangkan untuk syarat batas, diasumsikan fluksnya adalah nol.
1.4 Algoritma Simulasi dilakukan dengan menggunakan algoritma berikut ini. L0. Mulai L1. Mendefisinikan variabel yang digunakan : b, y, z, xx, α, β, ɤ, dx, dt, T,c0, f, g dan h L2. L3. L4. L5. L6. L7.
Mendefinisikan Array Menghitung matrix p[i] dengan 0 < i < X Menghitung matrix konsentrasi nutrisi c[i] Menghitung matrix u[j] dan v[j] j++ ke L4 hingga j = Nx-2 Menghitung fungsi konsentrasi nutrisi f[i], g[i] dan h[i]
L6.
Menghitung konsentrasi sel proliferating p[i], quiescent q[i] dan necrotic n[i] yang baru i++ ke L7 hingga i = Nx-1 Menuliskan hasil konsentrasi sel p[i], q[i] dan n[i] ke file.txt yang dituliskan pada argumen value ke-1
L7. L8.
L9. L1. L2.
Selesai Isikan variabel …
6
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
1.5 Hasil dan diskusi Parameter-parameter simulasi yang digunakan diberikan dalam Tabel 1.1 berikut. Tabel 1.1 Parameter-parameter simulasi.
Symbol
Nilai
Code
c
1
c
b
1
b
dx
1
dx
dt
0,004
dt
T
16
T
α
0,1 – 0,9
alpha
β
0,1 – 0,7
beta
ɤ
5 - 10
gama
Parameter standar yang digunakan adalah c = 1, α = 0,9; β = 0,5; dan ɤ = 10. Variasi α, β, dan ɤ diberikan dalam Gambar 1.6 – 1.14, berturut-turut. Pengaruh konsentrasi ρ masing-masing sel terhadap posisi x
Gambar 1.3 Kerapatan sel proliferating sebagai fungsi dari posisi x
7
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
Gambar 1.4 Kerapatan sel quiescent sebagai fungsi dari posisi x
Gambar 1.5 Kerapatan sel necrotic sebagai fungsi dari posisi x
Gambar 1.3, 1.4, dan 1.5 menunjukkan grafik antara kerapatan sel proliferating ρp, quiescent ρq, dan necrotic ρn sebagai fungsi dari posisi x. Grafik yang didapatkan adalah hasil simulasi menggunakan C++ dengan mengatur parameter α = 0,9; β = 0,5; dan ɤ = 10. Berdasarkan model ini dapat digambarkan bahwa pada sel proliferating akan terdistribusi semakin menjauh dari posisi awal seiring dengan bertambahnya waktu. Begitu pula secara berurutan terjadi pada sel quiescent dan necrotic. Namun, pada sel necrotic distribusinya terpusat di dalam.
8
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
Pengaruh variasi parameter α terhadap kerapatan masing-masing sel
Gambar 1.6 Nilai kerapatan sel proliferating ρp sebagai fungsi posisi x untuk berbagai nilai α
Gambar 1.7 Nilai kerapatan sel quiescent ρq sebagai fungsi posisi x untuk berbagai nilai α
9
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
Gambar 1.8 Nilai kerapatan sel necrotic ρn sebagai fungsi posisi x untuk berbagai nilai α
Gambar 1.6, 1.7, dan 1.8 mendeskripsikan pengaruh variasi α terhadap kerapatan ρ masing-masing sel sebagai fungsi dari posisi x. Variasi nilai α diberikan dengan rentang 0,1 - 0,9 secara berurutan. Berdasarkan gambar dapat dilihat bahwa variasi nilai α akan memberikan pengaruh yang teratur terhadap kerapatan masing-masing sel seiring dengan bertambahnya nilai α . Nilai α = 0,9 menunjukkan distribusi kerapatan sel proliferating dan quiescent terhadap posisi lebih kecil jika dibandingkan dengan nilai α yang lainnya. Dalam tulisan ini nilai α yang digunakan adalah 0,9.
10
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
Pengaruh variasi parameter β terhadap kerapatan masing-masing sel
Gambar 1.9 Nilai kerapatan sel proliferating ρp sebagai fungsi posisi x untuk berbagai nilai β
Gambar 1.10 Nilai kerapatan sel quiescent ρq sebagai fungsi posisi x untuk berbagai nilai β
11
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
Gambar 1.11 Nilai kerapatan sel necrotic ρn sebagai fungsi posisi x untuk berbagai nilai β
Gambar 1.9, 1.10, dan 1.11 menjelaskan pengaruh variasi β terhadap kerapatan ρ masing-masing sel sebagai fungsi dari posisi x. Variasi nilai β diberikan dengan rentang 0,1 - 0,7 secara berurutan. Berdasarkan grafik dapat dilihat bahwa nilai β tidak memberikan pengaruh yang berarti terhadap kerapatan masing-masing sel. Hal ini dapat terlihat dari distribusi kerapatan sel yang tidak berubah ketika nilai parameter β divariasikan. Pada tulisan ini dipilih nilai β yaitu 0,5.
12
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
Pengaruh variasi parameter ɤ terhadap kerapatan masing-masing sel
Gambar 1.12 Nilai kerapatan sel proliferating ρp sebagai fungsi posisi x untuk berbagai nilai ɤ
Gambar 1.13 Nilai kerapatan sel quiescent ρq sebagai fungsi posisi x untuk berbagai nilai ɤ
13
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
Gambar 1.14 Nilai kerapatan sel necrotic ρn sebagai fungsi posisi x untuk berbagai nilai ɤ
Gambar 1.12, 1.13, dan 1.14 menunjukkan pengaruh variasi ɤ terhadap kerapatan ρ masing-masing sel sebagai fungsi dari posisi x. Variasi nilai ɤ diberikan dengan rentang 5 – 10 secara berurutan. Berdasarkan grafik dapat dilihat bahwa nilai ɤ memberikan pengaruh yang relatif sangat kecil terhadap kerapatan sel sehingga secara umum variasi nilai ɤ tidak memberikan pengaruh yang berarti terhadap kerapatan masing-masing sel. Dari grafik tergambar bahwa perbedaan distribusi kerapatan sel sangat kecil ketika nilai ɤ divariasikan. Pada tulisan ini dipilih nilai ɤ yaitu 10.
14
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
Distribusi konsentrasi masing-masing sel pada t tertentu (t=14) (a)
(b)
(c)
Gambar 1.15 (a) Grafik distribusi konsentrasi masing-masing sel pada t=14 (b) Model distribusi konsentrasi masing-masing sel pada t=14 yang dilakukan penulis (c) Model distribusi konsentrasi masing-masing sel pada referensi dengan warna biru, merah, dan hitam menunjukkan sel proliferating, quiescent, dan necrotic secara berurutan [3]
15
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
Gambar 1.15 (a) dan (b) menunjukkan grafik dan model distribusi konsentrasi masing-masing sel pada t=14 yang diperoleh melalui pemodelan yang dilakukan. Berdasarkan Gambar 1.15 (b) dapat dilihat bahwa model tumor yang dihasilkan sesuai dengan model yang ditunjukkan pada referensi [3] yaitu pada Gambar 1.15 (c).
1.6 Kesimpulan Dari hasil yang telah diperoleh dapat disimpulkan bahwa model matematis perkembangan tumor menggunakan metode central finite difference [2] dapat diverifikasi. Telah dilakukan variasi beberapa parameter untuk melihat kerapatan masing-masing sel yaitu α, β, dan ɤ. Variasi parameter α, β, dan ɤ pada masingmasing kerapatan sel memberikan pengaruh yang berbeda-beda yakni: variasi parameter α pada sel menunjukkan nilai yang teratur seiring dengan bertambahnya nilai α. Sedangkan variasi pada parameter β dan ɤ relatif tidak memberikan pengaruh yang berarti pada kerapatan sel tumor.
1.7 Referensi 1. 2. 3.
WHO. 2010. Global Status report on noncommunicable deases. www.who.org. [diakses pada 22 April 2016] Sherrat & Chaplin. 2001. A new mathematical model for avascular tumour growth. J. Math. Biol. 43, 291–312 (2001): Springer-Verlag. Ang, Cheng – Keng. 2012. Analysis of a Tumor Growth Model with MATLAB. National Institute of Education, Nanyang Technological University: Singapore.
1.8 Lampiran A. Keterangan penggunaan program dan skrip Tabel 1.2 Program dan skrip serta hasil keluarannya
Program / Skrip
Piranti lunak
Keluaran
Lampiran
kerapatansel.cpp
C++
p, q, n
B
kerapatan sel proliferating terhadap x
Gnuplot
Gambar 1.3
C
kerapatan sel quiescent terhadap x
Gnuplot
Gambar 1.4
D
kerapatan sel necrotic terhadap x
Gnuplot
Gambar 1.5
E
16
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
B. Program kerapatansel.cpp /* #include
#include #include <stdlib.h> #include <string.h> #include #include <sstream> /* kerapatansel.cpp 20160522.01 Aflah Zaharo-20215006 Cici Wulandari-20215047 Fadhila Ulfa Jhora-20215013 Rida Nurul Shelni Rofika-20215003 compile: g++ kerapatansel.cpp -o kerapatansel Run: ./kerapatansel tes.txt */ using namespace std; void fungsif(double); void fungsih(double); void fungsig(double); // mendefisinikan variabel yang digunakan double b = 1.0; double y; double z; double xx; double alpha=0.9; double beta=0.5; double gama=10; double dx=1; int X=210; double dt=0.004; double T=16; double c0=1; double f, g,h; //mendefinisikan array int x[210]; int Nx=210; int Nt=4000; double p[210]={0}; double nextp[210]={0}; double q[210]={0}; double nextq[210]={0}; double n[210]={0}; double nextn[210]={0}; double u[210]={0}; double v[210]={0}; double r[210]={0}; double c[210]={0}; double P[4000][210]={0}; double Q[4000][210]={0};
17
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
double N[4000][210]={0}; int main(int argc, char **argv) { for(int i=0; i< X; i++){ x[i]= i+1; p[i]=exp(-0.1*x[i]); } //perhitungan konsentrasi sel Proliferating, Quiescent dan Necrotic for(int k=0; k
18
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
for(int j=0; j< Nx; j++ ){ fout << j <<"\t"; fout << P[i][j] << "\t"; fout << P[i+499][j] << "\t"; fout << P[i+999][j] << "\t"; fout << P[i+1499][j] << "\t"; fout << P[i+1999][j] << "\t"; fout << P[i+2499][j] << "\t"; fout << P[i+2999][j] << "\t"; fout << P[i+3499][j] << "\t"; fout << Q[i][j] << "\t"; fout << Q[i+499][j] << "\t"; fout << Q[i+999][j] << "\t"; fout << Q[i+1499][j] << "\t"; fout << Q[i+1999][j] << "\t"; fout << Q[i+2499][j] << "\t"; fout << Q[i+2999][j] << "\t"; fout << Q[i+3499][j] << "\t"; fout << N[i][j] << "\t"; fout << N[i+499][j] << "\t"; fout << N[i+999][j] << "\t"; fout << N[i+1499][j] << "\t"; fout << N[i+1999][j] << "\t"; fout << N[i+2499][j] << "\t"; fout << N[i+2999][j] << "\t"; fout << N[i+3499][j] << endl; } fout.close(); } else { cout << "readfile: "; cout << ofn << " can not be opened" << endl; exit(1); } return 0; } //fungsi konsentrasi nutrisi void fungsif(double a){ y = 0.5*(1-tanh(4*a-2)); } void fungsig(double b){ z = 0.5*exp(0.5*b); } void fungsih(double a){ xx = 0.5*a; }
C. Skrip Gnuplot plot-p.gps #set terminal to eps set term post eps color enhanced font "Times, 32" #set output file set output"proliferasi.eps" #Set input file
19
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
input= "tes1.txt" #set image size set size 1.0, 1.0 #set bottom margin set bmargin 3.5 #set x-axis set xlabel"{/Italic posisi x}" font "Times, 24" set xtics 50 font "Times, 22" set xrange[0:250] #set y-axis set ylabel"{/Italic Sel Ploriferating, P}" font "Times, 24" set ytics 0.1 font "Times, 22" set yrange[0:1] #set grid set grid xtics ytics #Plot data plot \ input u 1:2 input u 1:3 input u 1:4 input u 1:5 input u 1:6 input u 1:7 input u 1:8 input u 1:9
w w w w w w w w
lp lp lp lp lp lp lp lp
title title title title title title title title
"" "" "" "" "" "" "" ""
pt pt pt pt pt pt pt pt
1 2 3 4 5 6 7 8
ps ps ps ps ps ps ps ps
0.5,\ 0.5,\ 0.5,\ 0.5,\ 0.5,\ 0.5,\ 0.5,\ 0.5
D. Skrip Gnuplot plot-q.gps #set terminal to eps set term post eps color enhanced font "Times, 32" #set output file set output"quescent.eps" #Set input file input= "tes1.txt" #set image size set size 1.0, 1.0 #set bottom margin set bmargin 3.5 #set x-axis set xlabel"{/Italic posisi x}" font "Times, 24" set xtics 50 font "Times, 22" set xrange[0:250] #set y-axis set ylabel"{/Italic Sel Quiscent, Q}" font "Times, 24" set ytics 0.1 font "Times, 22" set yrange[0:0.6]
20
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
#set grid set grid xtics ytics #Plot data plot \ input u 1:10 input u 1:11 input u 1:12 input u 1:13 input u 1:14 input u 1:15 input u 1:16 input u 1:17
w w w w w w w w
lp lp lp lp lp lp lp lp
title title title title title title title title
"" "" "" "" "" "" "" ""
pt pt pt pt pt pt pt pt
1 2 3 4 5 6 7 8
ps ps ps ps ps ps ps ps
0.5,\ 0.5,\ 0.5,\ 0.5,\ 0.5,\ 0.5,\ 0.2,\ 0.2
E. Skrip Gnuplot plot-n.gps #set terminal to eps set term post eps color enhanced font "Times, 32" #set output file set output"necrotic.eps" #Set input file input= "tes1.txt" #set image size set size 1.0, 1.0 #set bottom margin set bmargin 3.5 #set x-axis set xlabel"{/Italic posisi x}" font "Times, 24" set xtics 50 font "Times, 22" set xrange[0:250] #set y-axis set ylabel"{/Italic Sel Necrotic, N}" font "Times, 24" set ytics 0.1 font "Times, 22" set yrange[0:1] #set grid set grid xtics ytics #Plot data plot \ input u 1:18 input u 1:19 input u 1:20 input u 1:21 input u 1:22 input u 1:23 input u 1:24 input u 1:25
w w w w w w w w
lp lp lp lp lp lp lp lp
title title title title title title title title
"" "" "" "" "" "" "" ""
pt pt pt pt pt pt pt pt
1 2 3 4 5 6 7 8
ps ps ps ps ps ps ps ps
0.5,\ 0.5,\ 0.5,\ 0.5,\ 0.5,\ 0.5,\ 0.5,\ 0.5
21
Komputasi Fisis 2: 1 Simulasi pertumbuhan tumor ..
22
2
Distribusi Panas Donat yang Dipanggang di dalam Oven
Afni Nelvi | [email protected] Elisabeth Dian Atmajati | [email protected] Tiffany | [email protected] Bayu Adi Nugraha Putra | [email protected] Perambatan panas pada donat yang dipanggang di dalam oven telah dimodelkan dengan asumsi perambatan panas dari oven ke donat seluruhnya proses radiasi dan perambatan panas di dalam donat terjadi secara konduksi. Pemodelan ini menggunakan metode beda hingga (finite defference). Variasi parameter yang dilakukan adalah massa donat m dan temperatur oven To. Diketahui terdapat kebergantungan waktu matang t terhadap massa donat m dan temperatur oven To. Semakin besar massa donat m, pada temperatur oven To yang sama, waktu matang donat akan semakin lama. Namun, semakin tinggi temperatur oven To, pada massa m yang sama, waktu matang donat semakin cepat.
2.1 Pendahuluan Donat merupakan salah satu makanan ringan yang populer. Pada umumnya donat diproses dengan digoreng. Namun, donat juga dapat diproses dengan dipanggang. Alat panggang yang biasa digunakan adalah oven listrik. Oven listrik dipilih karena praktis dalam penggunaannya dan temperatur oven dapat ditentukan. Berbeda dengan oven tradisional yang pengendalian temperaturnya dilakukan secara manual. Proses pemanggangan ini memegang peran penting dalam menentukan kualitas donat. Pemanggangan yang sempurna dapat menghasilkan donat dengan kadar air, warna, kerenyahan, dan pengembangan ukuran yang sempurna [1]. Untuk mendapatkan donat yang matang dengan sempurna pada kenyataannya tidak mudah. Masalah yang sering dihadapi adalah bagian luar donat matang namun bagian dalam belum matang sempurna. Hal ini dipengaruhi oleh banyak hal, yaitu parameter-parameter thermal donat dan bahan baku donat yang dipanggang. Parameter lain seperti posisi pemanas pada oven, temperatur ruang oven, kecepatan aliran udara, tekanan udara di dalam oven, juga mempengaruhi proses pemanggangan donat di dalam oven [2]. Namun, dalam kasus ini dibuat model pemanggangan donat di dalam oven yang sederhana. Parameter yang diperhitungkan dalam pemodelan ini adalah konduktivitas panas donat, emisivitas donat, ukuran donat, temperatur oven, dan temperatur donat. Parameter yang lain dianggap konstan dan tidak berpengaruh selama proses pemanggangan. Selama proses pemanggangan, perambatan panas yang terjadi adalah proses radiasi, konduksi, dan konveksi. Dari ke tiga proses tersebut, perambatan panas secara radiasi
23
Komputasi Fisika 2: Distribusi Panas Donat ..
adalah proses yang sangat dominan [3], sehingga dalam pemodelan ini dipilih perambatan panas dari oven ke donat seluruhnya merupakan proses radiasi, sedangkan proses perambatan panas di dalam donat itu sendiri terjadi secara konduksi. Pemodelan yang melihat beberapa parameter yang mempengaruhi proses pematangan donat ini dapat menentukan temperatur oven dan waktu pemanggangan yang tepat sehingga dapat menghasilkan donat yang matang dengan sempurna, baik bagian luar maupun bagian dalam.
2.2 Teori Terdapat tiga cara perambatan panas, yaitu konveksi, konduksi, dan radiasi. Pada proese pemanggangan donat terjadi perambatan panas secara radiasi dari oven ke donat dan perambatan panas secara konduksi di dalam donat. Perambatan panas secara radiasi adalah perambatan panas yang dapat merambat pada ruang hampa. Perambatan panas secara radiasi ini dapat terjadi meskipun tidak ada medium penghantar. Stefan-Boltzman menyatakan energi panas yang diradiasikan oleh suatu benda mengikuti persamaan [4]
∂Q = σAT 4 ∂t .
(2.1) Sedangkan transfer energi secara radiasi antara dua buah benda mengikuti persamaan [4]
(
)
∂Q 4 4 = εσA Ta − Tb ∂t ,
(2.2)
dengan ε adalah emisitivitas benda, σ konstanta Stefan-Boltzman (5,670373x10-8J2 -1 -4 s K ) [4], A adalah luas benda (m2), Ta adalah temperatur tinggi (K) dan Tb adalah temperatur rendah (K). Panas yang diterima donat dari oven kemudian digunakan untuk memanaskan donat mulai dari tepi hingga ke bagian dalam donat. Proses perambatan panas ini terjadi melalui proses konduksi, yang mengikuti Persamaan (2.3) [4]
Q = mc∆T ,
(2.3)
dengan m adalah massa benda (kg), c adalah kapasitas kalor benda (Jkg-1K-1) dan ∆T adalah perbedaan temperatur (K). Perambatan panas di dalam donat tidak terjadi secara serentak di semua bagian donat, namun merambat sedikit demi sedikit dari tepi ke dalam donat sebagai fungsi waktu. Perambatan panas sebagai fungsi waktu dan posisi ini mengikuti Hukum Fourier [4]
∆Q ∆T = − kA ∆x ∆t
24
(2.4)
Komputasi Fisika 2: Distribusi Panas Donat ..
Gambar 2.1. Dimensi donat
jari-jari luar donat (r1): 0,05 m; jari-jari lingkaran dalam donat (r2): 0,015 m; tebal donat (t): 0,025 m. Berdasarkan dimensi ini, volume, luas permukaan dan donat dapat ditentukan sebagai berikut. Volume Donat
V = (L A1 − L A 2 ) t
(
= πr1 − πr2 2
(
2
)
)t
= 5 2 − 1,5 2 2,5 π = 56,875π cm 3 = 56,875 x 10 −6 m 3 Luas Donat
A = 2(L A ) + LS1 + LS 2 = 2(22,75 π ) + 2πr1 + 2πr2
= 45,5 π + 2π (5 + 1,5)
= 58,5 π cm 2 = 58,5 π x 10 −4 m 2 Untuk mendapatkan massa donat, ditentukan dari massa jenis donat, yaitu 1,12118×103 Kgm-3 [5].
m = ρ xV
= 1,2118 x 10 3 kgm −3 x 56,875 x 10 −6 m 3 = 68,92 x 10 −3 kg 2.3 Metode numerik Konstanta-konstanta yang digunakan dalam pemodelan ini adalah:
25
Komputasi Fisika 2: Distribusi Panas Donat ..
c = 2,7 x 10 −3 Jkg −1 K −1 [6] σ = 5,670373 x 10 −8 Jm −2 s −1 K −4 ρ = 1,2118 x 10 3 kgm −3 ε = 0,85 [7] Perambatan panas secara radiasi dari oven ke donat mengikuti Persamaan (2.3), sedangkan perambatan panas di dalam donat terjadi secara konduksi mengikuti Persamaan (2.3). Panas yang diterima oleh donat dari oven akan digunakan oleh donat untuk memanaskan seluruh bagian donat dan mengikuti persamaan benda mengikuti persamaan:
(
)
εσA To 4 − Td 4 =
ρVcdTd
(2.5)
dt
T dTd σεA = dt 4 ∫0 ρVc ∫T T − T 4 o d t
d ,t
(2.6)
d ,0
−1 Td
T tan + tanh −1 d σεA To To t= 3 ρVc 2To
Td , t
(2.7)
Td , 0
Untuk lebih sederhana didefinisikan konstanta K
K=
σAε ρVc
T tan + tanh −1 d To To Kt = 2To 3 −1 Td
(2.8)
Td , t
(2.9)
Td , 0
dengan memisalkan
Td , t tan −1 TO a1 =
T + tanh −1 d ,t TO 3 2TO
dan
26
(2.10)
Komputasi Fisika 2: Distribusi Panas Donat ..
Td ,0 T + tanh −1 d ,0 tan −1 To To a2 = 2To 3
Kt = a1 − a 2 t=
(2.11)
(2.12)
a1 − a 2 K .
(2.13) Persamaan (2.13) menyatakan merupakan waktu yang dibutuhkan untuk menaikkan temperatur donat dari Td,0 sampai Td,t. Sebagai contoh jika dihitung berapa waktu yang dibutuhkan untuk menaikkan temperatur donat dari 25°C menjadi 120°C: Td,t = 25°C = 298 K Td,0 = 120°C = 393 K Toven = 190°C = 463 K Bagian Persamaan (1.10) dan (1.11) menjadi
393 −1 393 tan −1 + tanh 463 463 a1 = 2 x 463 3 = 9,852 x 10−9 K −3 298 −1 298 tan −1 + tanh 463 463 a2 = 2 x 4633 = 6,731 x 10−9 K −3 , dengan demikian didapatkan waktu untuk memanaskan donat dari 25°C menjadi 120°C,
K=
=
σAε 0 ρVC
5,67037 x 10 −8 Jm −2 s −1 K −4 x 58,5 π x 10 −4 m 2 x 0,85 1,2118 x 10 3 kgm −3 x 56,875 π x 10 −6 m 3 x 2,7 x 10 −3 Jkg −1 K −1
= 1,5152 x 10−12 K −3s −1
t=
(9,852 − 6,731) x 10 −9 K −3 1,5152 x 10 −12 K −3 s −1 3
= 2,0598 x 10 s
27
Komputasi Fisika 2: Distribusi Panas Donat ..
= 34,3299 menit Agar dapat memperlihatkan perambatan panas di dalam donat, maka dibuatlah model yang dapat menyatakan temperatur donat sebagai fungsi waktu dan posisi (T[x,t]). Perambatan panas di posisi dan waktu tertentu di dalam donat dapat dinyatakan dengan mengikuti Persamaan (2.4). Metode numerik yang digunakan untuk menyelesaikan Persamaan (2.4) adalah metode beda hingga. Metode beda hingga adalah metode yang biasa digunakan untuk menyelesaikan persamaan diferensial. Metode beda hingga ini biasanya disebut “finite difference”. Metode ini menggunakan pendekatan ekspansi Taylor di titik acuan (x). Terdapat tiga jenis metode beda hingga, yaitu forward difference, backward difference, dan central difference. Pada kasus perambatan panas di dalam donat, digunakan metode forward difference [8].
f (x + ∆x ) = f (x ) +
∂ 2 f ∆x 2 ∂ n f ∆x n ∂f ∆x + 2 +L+ n ∂x ∂x 2 ∂x n!
f ( x + ∆x ) − f ( x ) ∂ 2 f ∆x 2 ∂ n f ∆x n ∂f − 2 −L− n = ∆x ∂x ∂x 2 ∂x n!
(2.14)
(2.15)
2.4 Algoritma Simulasi perambatan panas pada proses pemanggangan donat dilakukan dengan menggunakan algoritma berikut ini untuk memperoleh waktu sampai donat matang. L1 ε, σ, ρ, k, cdonat, p, dfs, gamma ? L2
r1, r2, A, L, dx ?
L3
Tdo, To, Tmatang(dalam), Tmatang(luar) ?
L4
ntd,Tdo1, a1, a2, Tr, Xbatas, X, Xtemp, t, n ?
L5
P =(ε * σ * A)/(m * cdonat)
L6
ntd = To – Tdo
L7
t=0
L8
Tdo1[0]=Tdo
L9
a1[0]=(atan(Td01[0]/To)+atanh(Td01[0]/To))/2*(pow(To,3)
L10
a2= atan(Td01/To)+atanh(Td01/To))/2*(pow(To,3)
L11
Tr[0]=( a1[0]-a2)/p
L12
t=i
L13
Tdo1[i]=Tdo1[i-1]+i
L14
a1[i]=(atan(Td01[i]/To)+atanh(Td01[i]/To))/2*(pow(To,3)
L15
Tr[i]=( a1[i]-a2)/p
L16
i=i+1
28
Komputasi Fisika 2: Distribusi Panas Donat ..
L17
i
L18
L = r1 – r2
L19
dx = L/n
L20
dfs = k/(ρ * cdonat)
L21
dt=1
L22
gamma = dfs*(dt/(dx*dx))
L23
Xbatas = To
L24
j=0
L25
X[j] = Tdo; Xtemp[j] = Tdo
L26
j = j+1
L27
j <= n → L25
L28
t = t + dt
L29
j=0
L30
if Tr[j]==t → Xbatas = Td01[j]
L31
j = j+1
L32
j < ntd → L30
L33
X[0]=Xbatas; X[n]=Xbatas;
L34
i=1
L35
X[i]=gamma*Xtemp[i-1]+(1-2*gamma*Xtemp[i]+gamma*Xtemp[i+1])
L36
i=i+1
L37
i < n → L35
L38
i=0
L39
Xtemp[i] = X[i]
L40
i=i+1
L41
i <= n → L39
2.5 Hasil dan diskusi Parameter-parameter simulasi yang digunakan diberikan dalam Tabel 2.1 berikut. Tabel 2.1 Parameter-parameter simulasi.
Symbol
ρ c
Nilai
Code 3
-3
1,121118 × 10 kgm -8
-1
2,7 × 10 Jkg K
29
-1
rho cdonat
Komputasi Fisika 2: Distribusi Panas Donat ..
σ
5,670373 × 10-8 Jm-2s-1K-4
sigma
ε0
0,85
em
r1
0,05 m
r2
0,015 m
A
58,5π × 10-4 m2
L
0,035 m
a L -3
m
(68,92 - 689,2) × 10 kg
M
Tdo
298 K
Td0
To
393-463 K
To
Tmatang(dalam)
383 K
Tmatang_1
Tmatang (luar)
403 K
Tmatang_2
Perubahan temperatur pada bagian tepi donat diperlihatkan pada Gambar 1.2(a), 1.3(a), dan 1.4(a), sedangkan perubahan temperatur pada bagian tengah donat ditunjukkan oleh Gambar 1.2(b), 1.3(a), 1.4(a). Terlihat bahwa pada pada waktu awal temperatur di tepi donat mengalami kenaikan yang signifikan, namun pada tengah donat, belum mengalami kenaikan. Hal ini terjadi karena panas merambat dari tepi donat sehingga membutuhkan waktu beberapa detik untuk dapat menaikkan temperatur tengah donat. Hal ini terjadi pada semua variasi massa dan temperatur oven. Dari grafik terlihat pula bahwa saat tepi donat mengalami kenaikan temperatur kemudian kenaikan temperatur berhenti sesaat, terlihat dari grafik yang garis mendatar. Kenaikan temperatur pada tepi donat ini berhenti sesaat karena panas yang diterima oleh tepi donat digunakan untuk menaikkan temperatur di bagian donat yang lebih dalam, sehingga terlihat pada bagian tengah donat kenaikan temperatur relatif lebih linier dibanding dengan bagian tepi donat. Sedangkan pada temperatur yang cukup tinggi mendekati temperatur kematangan, perubahan temperatur mulai landai sampai akhirnya donat matang pada bagian tengah dan pinggirnya.
(a) (b) Gambar 2.2 Grafik Temperatur (K) terhadap waktu (s) pada massa donat 0,21 kg dan temperatur oven 393 K (a) pada tepi donat dan (b) pada tengah donat.
30
Komputasi Fisika 2: Distribusi Panas Donat ..
(a) (b) Gambar 2.3 Grafik Temperatur (K) terhadap waktu (s) pada massa donat 0,21 kg dan temperatur oven 483 K (a) pada tepi donat dan (b) pada tengah donat.
(a) (b) Gambar 2.4 Grafik Temperatur (K) terhadap waktu (s) pada massa donat 1,08 kg dan temperatur oven 483 K (a) pada tepi donat dan (b) pada tengah donat.
Gambar 2.2 dan 2.3 merupakan grafik temperatur terhadap waktu dengan variasi temperatur oven. Dari Gambar 2.2 dan 2.3 ini terlihat adanya perubahan temperatur oven yang lebih tinggi menyebabkan perubahan suhu di dalam donat lebih cepat, dan waktu matang donat terlihat cukup signifikan perbedaannya. Namun, untuk variasi massa donat, yang ditunjukkan oleh Gambar 2.3 dan Gambar 2.4, terlihat perbedaan yang cukup signifikan. Donat yang memiliki massa lebih besar, pada Gambar 2.4, terlihat bahwa perubahan temperatur terhadap waktu lebih landai, baik di tepi maupun di tengah donat. Hal ini menunjukkan bahwa bila massa donat meningkat maka untuk menaikkan temperatur perlu waktu yang lebih lama. Waktu yang dibutuhkan oleh donat dengan massa dan temperatur oven mengikuti Persamaan (2.16)
t = 1,9738 × 10 4 mdonat − 1,0421Toven
31
(2.16)
Komputasi Fisika 2: Distribusi Panas Donat ..
Gambar 2.5. Grafik kontur dari perubahan temperatur pada setiap bagian donat terhadap waktu.
Gambar 2.6. Grafik kontur dari waktu yang diperlukan donat untuk matang terhadap massa donat (jumlah donat) dengan temperatur oven.
Persebaran panas pada donat terhadap waktu ditunjukkan pada Gambar 2.5. Dari Gambar 2.5 dapat dilihat peristiwa kenaikan temperatur untuk setiap bagian donat yang telah dibuat. Kenaikan temperatur tiap bagian donat naik secara perlahan sesuai dengan teori. Dari model yang telah dibangun dapat dilihat pada Gambar 2.6 bahwa semakin banyak donat yang dipanggang dalam oven maka waktu yang dibutuhkan semakin lama, terlebih pada temperatur oven yang rendah. Hal tersebut sesuai dengan teori dan kenyataan yang ada di lapangan. Hal menarik pada Gambar 2.6 jika ditinjau lebih lanjut waktu terbaik untuk memanggang donat adalah pada temperatur oven 463 K atau 190 °C untuk satu buah donat. Menurut Thornes (2001) donat biasanya digoreng dengan metode deep frying pada temperatur 190 °C [9], meskipun
32
Komputasi Fisika 2: Distribusi Panas Donat ..
temperatur ini merupakan temperatur minyak namun dapat diasumsikan bahwa temperatur oven yang optimum untuk memanggang donat juga pada temperatur tersebut karena metode deep frying merupakan metode menggoreng dengan minyak banyak dan seluruh bagian donat terendam dalam minyak. Seluruh bagian donat terendam dalam minyak ini membangun asumsi bahwa panas merambat dari seluruh bagian donat, seperti pada perambatan panas di oven. Pemodelan perambatan panas pada donat ini belum memperhitungkan kalor yang dibuang ke lingkungan. Hal ini belum diperhitungkan secara numerik karena pada saat dihitung secara analitik muncul bilangan imaginer. Bilangan imaginer ini belum diketahui apa arti fisisnya dalam kasus ini, sehingga dilakukan pemodelan secara numerik tanpa memperhitungkan kalor yang dibuang ke lingkungan. Hal ini mungkin dapat dikembangkan di kemudian hari, sehingga pemodelan semakin mendekati eksperimen.
2.6 Kesimpulan Perambatan panas pada proses pemanggangan donat secara radiasi dan konduksi memperlihatkan bahwa semakin besar massa donat, untuk temperatur oven yang sama akan memerlukan waktu yang lebih lama agar mencapai kematangan donat baik pada bagian dalam maupun bagian luar donat. Selain massa, temperatur oven yang semakin tinggi, untuk massa donat yang sama, akan mempersingkat waktu pemanggangan temperatur optimum oven untuk memanggang satu buah donat adalah 190°C.
2.7 Referensi 1.
2.
3.
4. 5.
6.
7.
J.P. Ploteau, V. Nicolas, P. Glouannec, “Numerical and Experimental Characterization of a Batch Bread Baking Oven”, Apllied Thermas Engineering 48 (issue/nomor), 289-295 (2012). M. Sakin, F.K. Ertekin, C. Ilicali, “Convection and Radiation Combined Surface Heat Transfer Coefficient in Baking Oven”, Journal of Food Engineering 94, 344-349 (2009). N. Chhanwal, A. Anishaparvin, D. Indrani, K.S.M.S Raghavarao, C. Anandharamakrishnan, “Computational Fluid Dynamics (CFD) Modeling of an Electrical Heating Oven for Bread-Baking Process”, Journal of Food Engineering 100, 452-460 (2010). D. Halliday, R. Resnick, J. Walker, “Fundamental of Physics”, Wiley, 9th Ed, United State, 2010, p. 606, 624, 628, 629. G.M. Campbell, C.D. Rielly, P.J. Fryer, P.A. SADD, “Measurement and Interpretation of Dough Densities”, American Association of Cereal Chemist 70 (5), 517-521 (1993). T.G. Matuda, P.P.A. Filho, C.C. Tadini, “Enthalpy and Heat Capacity of Bread Dough at Freezing and Refrigeration Temperatures”, CIGR Section IV International Symposium on Future of Food Engineering, Warsaw, Poland, 2006. P.J. Fellows, “Food Processing Technology”, CRC Press, 2nd Ed, New York, 2000, p. 381.
33
Komputasi Fisika 2: Distribusi Panas Donat ..
8. 9.
M.N. Ozisick, “Finite Difference Methods in Heat Tranfer”, CRC Press, London, 1994, p.21. N. Thornes, “Food Preparation and Cooking: Cookery Units”, City&Guilds, 2nd Ed, United Kingdom, 2001, p. 192.
2.8 Lampiran A. Keterangan penggunaan program dan skrip Tabel 2.2 Program dan skrip serta hasil keluarannya.
Berkas donat_2.1.cpp
Piranti lunak
Keluaran
C++
File data variasi suhu terhadap waktu dan posisi; File data variasi waktu matang yang dipengaruhi oleh massa dan suhu oven.
Lampiran B
Contoh file output : data-m-1-to70.txt (data posisi-waktu-suhu, ada banyak file) dan data-m-T-t.txt (data massa donat-suhu oven-waktu, hanya 1 file) AWK-tengah-10 (dijalankan di bash)
AWK
Data untuk diplot : d10_tengah.txt d10.txt
C
AWK-pinggir-10 (dijalankan di bash)
AWK
Data untuk diplot : d10_pinggir_rp_bkn_sb.txt
D
AWK-tengah-170 (dijalankan di bash)
AWK
Data untuk diplot : d170_tengah.txt d10.txt
E
AWK-pinggir-170 (dijalankan di bash)
AWK
Data untuk diplot : d170_pinggir_rp_bkn_sb.txt
F
34
Komputasi Fisika 2: Distribusi Panas Donat ..
Tabel 2.3 Program dan skrip serta hasil keluarannya (lanjutan).
Berkas
Piranti lunak
Keluaran
Lampiran
AWK-pinggir-570 (dijalankan di bash)
AWK
Data untuk diplot : d170_pinggir_rp_bkn_sb.txt
H
plotgrafik-t-Tpinggir-10.gps
Gnuplot
Gambar 1.2 (a)
I
plotgrafik-t-Ttengah-10.gps
Gnuplot
Gambar 1.2 (b)
J
plotgrafik-t-Tpinggir-170.gps
Gnuplot
Gambar 1.3 (a)
K
plotgrafik-t-Ttengah-170.gps
Gnuplot
Gambar 1.3 (b)
L
plotgrafik-t-Tpinggir-570.gps
Gnuplot
Gambar 1.4 (a)
M
plotgrafik-t-Ttengah-570.gps
Gnuplot
Gambar 1.4 (b)
N
plotgrafik-m-Tt.gps
Gnuplot
Gambar 1.6
O
plotsetengah.gps
Gnuplot
Gambar 1.5
P
B. Program donat_2.1.cpp /* PROGRAM DONAT VER 2.1 UPDATE : print data dan iterasi untuk banyak variasi massa donat dan suhu oven Compile : g++ donat_2.1.cpp -o donat_2.1 Execute : ./donat_2.1 2016-05-26 Create this program */ #include #include #include #include #include<string> #include<sstream>
35
Komputasi Fisika 2: Distribusi Panas Donat ..
using namespace std; //Parameter //------------------------------------------------------------------------//Proses Radiasi double em = 0.85; //emisivitas donat double sigma = 5.6703e-08; //konstanta boltzmann dlm cm double cdonat = 2.7e03; //kapasitas panas spesifik donat J/kg double mdonat = 0.2165; //massa satu donat double a = 0.0184; //luas permukaan donat dalam meter double Td0 = 298; //suhu awal donat dalam kelvin (25 C) //Dimensi donat long double L = 0.035; int n = 20; int tengah = (n/2)+1; long double dx = L/n;
//Panjang donat dalam meter //Banyaknya diskritisasi //perubahan x
//Proses konduksi double rho = 1.2118e3; //massa jenis donat kg/m3 double con = 0.592865; //konduktivitas termal donat w/mK double dfs = con/(rho*cdonat); //konstanta difusitas double dt = 1; //perubahan waktu double gm = dfs*(dt/(dx*dx)); //konstanta difusi //Parameter temperatur double tmateng_1 = 388; double tmateng_2 = 403;
//batas mateng donat di dalem //batas mateng di pinggir
int main(int argc, char *argv[]) { //program name //const char *pname = "donat_2.0"; //usage //cout << "running: "<< pname << " [mdonat suhuoven outputfile]" << endl; //BAGIAN RADIASI //----------------------------------------------------------------------//const char *nfile = "data-M-T-time.txt"; //const char *mfile = "data-T-x-.txt"; int nd = 10; double Toa = 393; //variasi suhu oven awal int nt = 70; //suhu oven akhir - suhu oven awal, banyaknya variasi int id, ito; //iterator donat dan suhu oven //data massa-suhu oven-waktu matang const char *nfile = "data-m-T-t.txt";
36
Komputasi Fisika 2: Distribusi Panas Donat ..
ofstream nfout; nfout.open(nfile); nfout << "#m \tToven \tt(waktu)" << endl; for(ito = 0; ito<=nt ; ito++) //iterasi untuk suhu oven { for(id = 1; id<=nd ; id++) //iterasi untuk massa donat { //BAGIAN RADIASI //--------------------------------------------------------------------double m = id*mdonat; //massa seluruh donat double p = (sigma*em*a)/(m*cdonat); double To = Toa + ito; //suhu oven yg berubah int nTd = (To-Td0); double Td1[nTd], a1[nTd]; variabel int tr[nTd];
//banyak iterasi //td=suhu donat;
a1
sebuah
//waktu penanda syarat batas berubah
//saat t=0 double a2;
//hasil integral saat kondisi
t=0 a2 = (atan(Td0/To) + atanh(Td0/To))/(2*pow(To,3)); Td1[0] = Td0; a1[0] = (atan(Td1[0]/To) + atanh(Td1[0]/To))/(2*pow(To,3)); tr[0] = (a1[0]-a2)/p; //iterasi int i,j; //parameter iterasi for(i=1; i
37
Komputasi Fisika 2: Distribusi Panas Donat ..
ofstream fout; fout.open(mfile); //data head fout << "#data m = " << m << " ; To = " << To << endl; fout << "#\t x \t time \t T" << endl; int t=0; int tend=100000; while(ttmateng_2 || x[tengah]>tmateng_1) break; } double tmenit = t/60; //fout <<"\t "<< nd <<"\t "<< To <<"\t "<< t <<endl; fout.close(); nfout << m << "\t" << To << "\t" << t << endl; } } nfout.close(); return 0; }
38
Komputasi Fisika 2: Distribusi Panas Donat ..
C. Skrip perintah AWK-tengah-10 (dijalankan di bash) $ awk '{if($1 == 0.0175) print $0}' data-m-1-to0.txt > d10_tengah.txt
D. Skrip perintah AWK-pinggir-10 (dijalankan di bash) $ awk '{if($1 == 0.00175) d10_pinggir_tp_bkn_sb.txt
print
$0}'
data-m-1-to0.txt
>
E. Skrip perintah AWK-tengah-170 (dijalankan di bash) $ awk '{if($1 == 0.0175) print $0}' data-m-1-to70.txt > d170_tengah.txt
F. Skrip perintah AWK-pinggir-170 (dijalankan di bash) $ awk '{if($1 == 0.00175) d170_pinggir_tp_bkn_sb.txt
print
$0}'
data-m-1-to70.txt
>
G. Skrip perintah AWK-tengah-570 (dijalankan di bash) $ awk '{if($1 == 0.0175) print $0}' data-m-5-to70.txt > d570_tengah.txt
H. Skrip perintah AWK-pinggir-570 (dijalankan di bash) $ awk '{if($1 == 0.00175) d570_pinggir_tp_bkn_sb.txt
print
$0}'
data-m-5-to70.txt
>
I. Skrip Gnuplot plotgrafik-t-T-pinggir-10.gps #plot perubahan temperatur terhadap waktu di pinggir set term png set output 'd10_pinggir_tp_bkn_sb.png’ set xlabel 'Waktu (detik)' set ylabel 'Temperatur (K)' set title 'Perubahan Temperatur thd Waktu di pinggir (m = 0.21 To = 393 K)' p 'd10_pinggir_tp_bkn_sb.txt’ u 2:3
J. Skrip Gnuplot plotgrafik-t-T-tengah-10.gps #plot perubahan temperatur terhadap waktu di tengah set term png set output 'd10_tengah.png' set xlabel 'Waktu (detik)' set ylabel 'Temperatur (K)'
39
Komputasi Fisika 2: Distribusi Panas Donat ..
set title 'Perubahan Temperatur thd Waktu di tengah (m = 0.21 To = 393 K)' p 'd10_tengah.txt' u 2:3
K. Skrip Gnuplot plotgrafik-t-T-pinggir-170.gps #plot perubahan temperatur terhadap waktu di pinggir set term png set output 'd170_pinggir_tp_bkn_sb.png’ set xlabel 'Waktu (detik)' set ylabel 'Temperatur (K)' set title 'Perubahan Temperatur thd Waktu di pinggir (m = 0.21 To = 463 K)' p 'd170_pinggir_tp_bkn_sb.txt’ u 2:3
L. Skrip Gnuplot plotgrafik-t-T-tengah-170.gps #plot perubahan temperatur terhadap waktu di tengah set term png set output 'd170_tengah.png' set xlabel 'Waktu (detik)' set ylabel 'Temperatur (K)' set title 'Perubahan Temperatur thd Waktu di tengah (m = 0.21 To = 463 K)' p 'd170_tengah.txt' u 2:3
M. Skrip Gnuplot plotgrafik-t-T-pinggir-570.gps #plot perubahan temperatur terhadap waktu di pinggir set term png set output 'd570_pinggir_tp_bkn_sb.png’ set xlabel 'Waktu (detik)' set ylabel 'Temperatur (K)' set title 'Perubahan Temperatur thd Waktu di pinggir (m = 1.08 To = 393 K)' p 'd570_pinggir_tp_bkn_sb.txt’ u 2:3
N. Skrip Gnuplot plotgrafik-t-T-tengah-570.gps #plot perubahan temperatur terhadap waktu di tengah set term png set output 'd570_tengah.png' set xlabel 'Waktu (detik)' set ylabel 'Temperatur (K)' set title 'Perubahan Temperatur thd Waktu di tengah (m = 1.08 To = 463 K)' p 'd570_tengah.txt' u 2:3
40
Komputasi Fisika 2: Distribusi Panas Donat ..
O. Skrip Gnuplot plotgrafik-m-T-t.gps #plot kontur massa-temperatur oven-waktu matang (non logaritmik) set term png set output 'plot-m-T-t.png' set title 'Kontur Massa-Temperatur oven-Waktu matang' set xlabel 'massa donat (kg)' set ylabel 'temperatur oven (K)' set cblabel 'waktu (detik)' p 'data-m-T-t.txt' w image
P. Skrip Gnuplot plotsetengah.gps #plot kontur perubahan temperatur pada donat terhadap waktu, posisi #donat dari pinggir sampai tengah set term png set output 'donat-panas-170.png' set title 'Kontur perubahan temperatur terhadap waktu' set xlabel 'Posisi dari pinggir ke tengah donat (meter)' set ylabel 'waktu (detik)' set xrange [0:0.0175] set cblabel 'temperatur donat (K)' set palette model HSV set palette rgb 5,2,2 p 'data-m-1-to70.txt' w image
41
Komputasi Fisika 2: Distribusi Panas Donat ..
42
Penerapan metode beda hingga dalam penyelesaian berbagai macam persamaan diferensial dari osilator harmonis hingga Klein-Gordon
3
Muhammad Fitrah Alfian Rangga Sakti | [email protected] Banyak kasus fisis yang terjadi di alam yang sudah dapat dimodelkan atau dituliskan dalam persamaan matematis seperti dalam bentuk persamaan diferensial. Namun, ada kalanya persamaan diferensial tidak dapat diselesaikan secara analitik dan eksak sehingga metode numerik menjadi jalan lainnya. Metode beda hingga sebagai salah satu metode numerik dapat digunakan untuk menyelesaikan masalah tersebut. Kasus osilator harmonis, osilator harmonis teredam, eksponensial, dan persamaan KleinGordon-Maxwell (sederhana) serta persamaan Klein-Gordon dalam koordinat bola. Variasi parameter numerik dan iterasi terbalik dilakukan untuk mendapatkan solusinya diinginkan. Pada persamaan Klein-Gordon, solusi didapatkan dengan cara menghindari singularitas r = 0 dengan menggantinya dengan nilai konstan.
3.1 Pendahuluan Kasus-kasus fisis yang terjadi di alam telah banyak yang dapat dimodelkan atau dituliskan secara matematis, namun memang masih banyak juga kasus yang diidealisasikan agar mudah dirumuskan. Perumusan matematis ini umumnya adalah berupa persamaan diferensial yang dapat menghasilkan solusi yang dapat menjelaskan fenomena fisis di alam. Persamaan diferensial ini dapat diselesaikan secara analitik dan eksak maupun secara numerik. Namun, ada kalanya persamaan diferensial berbentuk non-linear atau juga berorde tinggi sehingga sulit diselesaikan secara analitik dan eksas oleh manusia sehingga dibutuhkanlah bantuan metode numerik. Metode numerik pada dasarnya adalah suatu metode pendekatan untuk mencari solusi yang diinginkan. Metode beda hingga adalah salah satu metode numerik yang telah banyak digunakan untuk menyelesaikan persamaan diferensial. Metode ini dilakukan dengan mengganti turunan suatu fungsi (solusi yang ingin dicari) dengan pendekatan beda hingga.
3.2 Teori Metode Beda Hingga Pertama kita anggap persamaan yang dasar untuk kita aproksimasi turunannya hingga membenruk fungsi yang kita ketahui dengan formula beda hingga yang didasarkan hanya pada nilai dari fungsi ersebut pada titik-titik diskrit tertentu. Selain itu kita juga bisa bisa menyelidiki beberapa hal penting terkait konsep akurasi orde dari pendekatan beda hingga ini mulai dari kasus yang sederhana [1].
43
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
Misalkan ada sebuah fungsi u ( x ) yang merepresentasikan sebuah fungsi dari variabel x , yang diasumsikan bersifat halus atau dapat terturunkan hingga beberapa kali dan setiap turunannya adalah fungsi yang terdefinisi dengan baik pada interval tertentu dari x . Lalu kita akan mengaproksimasi dari turunan pertama u ' ( x ) dengan pendekatan beda hingga yang didasarkan pada nilai fungsi u ( x ) pada titik didekat x . Dalam bentuk persamaan, pendekatan turunan pertamanya akan menjadi
D+ u ( x ) =
u ( x + h ) −u ( x ) , h
(1.1)
untuk nilai h yang kecil. Ini termotivasi dari definisi standar dari turunan, yaitu saat nilai h → 0 . Persamaan (1.1) adalah saat kita mencari kemiringan dari garis interpolasi u pada titik x dan x + h seperti pada Gambar 1. Selain persamaan (1.1) yang menggunakan nilai x ≥ x , pendekatan untuk turunan u juga dapat dievaluasi menjadi
D− u ( x ) =
u ( x ) −u ( x − h ) . h
(1.2)
Persamaan (1.1) dan (1.2) memberikan pendekatan dengan akurasi hingga orde pertama yang berarti error yang dihasilkan sebanding dengan h . Kemungkinan lain adalah pendekatan dari tengah, yaitu
D0 u ( x ) =
u ( x + h ) −u ( x − h ) . 2h
(1.3)
Gambar 1.1. Variasi pendekatan untuk u ' ( x ) yang diinterpretasikan sebagai kemiringan garis [1]. Pada dasarnya pendekatan beda hingga didapatkan dari ekspansi deret Taylor dari suatu fungsi [2]. Berikut ada hasil ekspansi sampai dua suku pertamanya
44
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
f ( x ) ≈ f ( x0 ) +
df ( x0 ) ( x − x0 ) , dx
(1.4)
atau dalam bentuk lain persamaan (1.4) menjadi
f ( x + ∆x ) ≈ f ( x ) +
df ( x ) ∆x , dx
(1.5)
di mana
f '( x ) =
df ( x ) f ( x + ∆x ) − f ( x ) ≈ , dx ∆x
(1.6)
yang ekuivalen dengan persamaan (1.1). Untuk persamaan (1.2) ekuivalen dengan
f '( x ) =
df ( x ) f ( x ) − f ( x − ∆x ) . ≈ dx ∆x
(1.7)
Sehingga untuk mendapatkan turunan keduanya kita bisa gunakan persamaan (1.6) dan (1.7), yaitu:
f ' '( x ) ≈
f ' ( x + ∆x ) − f '( x ) f ( x + ∆x ) − 2 f ( x ) + f ( x − ∆x ) = . (1.8) ∆x ∆x 2
3.3 Osilator Harmonis dan Osilator Harmonis Teredam Osilator harmonis adalah solusi persamaan diferensial yang menggambarkan gerak teratur dengan frekuensi atau periode tertentu [3]. Solusi osilator harmonis ini juga disebuat sebagai gerak periodik atau gerak harmonis. Untuk mendapatkan solusi persamaan diferensial untuk gerak harmonis, kita mulai dari hukum kedua Newton
v v v F = ma = − kx .
(1.9)
di mana k = mω 2 . Maka bisa kita dapatkan persamaan gerak berikut:
&xr& + ω 2 xv = 0 .
(2.0)
Solusi umum dan analitik dari persamaan (2.0) adalah
x ( t ) = A sin( ωt ) + B cos( ωt ) .
(2.1)
Untuk osilator harmonis teredam, terdapat suku gaya tambahan sebagai fungsi kecepatan objek seperti pada persamaan (2.2).
v v v Fd = − bv = − bx& .
(2.2)
di mana b adalah konstanta redaman. Maka bisa kita dapatkan persamaan gerak berikut:
45
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
b k &xr& + xv& + xv = 0 . m m
(2.3)
Solusi analitik dari persamaan (2.3) adalah
x ( t ) = Ae − bt / 2 m sin( ωt ) + Be − bt / 2 m cos( ωt ) , di mana ω =
(2.4)
k b2 . − m 4 m2
3.4 Fungsi Eksponensial Persamaan diferensial untuk solusi yang berupa fungsi eksponensial biasanya didapatkan dari suatu sistem fisis yang mengalami pertumbuhan atau peluruhan. Contoh kasus fisika dengan sistem tersebut adalah peluruhan radioaktif. Secara umum, persamaan diferensial untuk kasus ini adalah
&xr& − c 2 xv = 0 .
(2.5)
di mana c adalah konstanta yang menunjukkan peluruhan atau pertumbuhan. Solusi umum dari persamaan (2.5) adalah
x ( t ) = Ae ct + Be − ct .
(2.6)
Suku pertama solusi (2.6) menunjukkan solusi pertumbuhan eksponensial dan suku kedua menunjukkan solusi peluruhan eksponensial.
3.5 Persamaan Klein-Gordon-Maxwell Pada [4] dibahas solusi persamaan diferensial yang menggambarkan gerak dari medan skalar dan medan gauge pada bintang Boson, yaitu
e λ +1 e −ν rC ' 2 − r 2 q2
φ ' ' = − e λ ( −1+ e −ν C 2 ) φ + e λ rφ 2φ ' −
C ' ' = 2 e λ q 2 Cφ 2 + e λ −ν rC 2φ 2 C ' − C '
(
)
2 − rφ ' 2 . r
φ ' , (2.7) (2.8)
di mana ϕ adalah medan skalar yang merupakan fungsi posisi r dan C adalah medan gauge yang juga fungsi r. Kedua medan tersebut telah dibuat tidak berdimensi. Lalu untuk penyederhanaan, diambil hanya dua suku untuk masing-masing persamaan (2.7) dan (2.8), yaitu
φ ' ' = − C 2φ ,
(2.9)
C ' ' = Cφ 2 .
(3.0)
46
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
Persamaan (2.9) dan (3.0) tidak dapat diselesaikan dengan cara analitik dan eksak sehingga kita akan terapkan metode numerik beda hingga.
3.6 Persamaan Klein-Gordon Setelah asumsi penyederhanaan persamaan Klein-Gordon-Maxwell, kita akan mencari solusi dari persamaan diferensial yang hanya memiliki komponen KleinGordon tanpa adanya medan gauge seperti pada [5]. Persamaan Klein-Gordon berikut juga bersifat non-linear karena terdapat suku medan yang berpangkat lebih dari 1. Persamaan tersebut juga mendeskripsikan persamaan gerak dri medan skalar pada bintang Boson (bila terkopel dengan gravitasi) atau pada Q-ball (tidak terkopel dengan gravitasi). Persamaannya adalah sebagai berikut
2 r
φ ' ' + φ ' + ω s2φ −
1 dU ( φ ) =0 , 2 dφ
(3.1)
di mana U( φ ) = λ (b φ 2 - a φ 4 + φ 6 ) . a, b, dan λ adalah konstanta. Frekuensi
2 , di mana eigen ω s terbatas pada ω 2 <ω s2 < ω max min 1 2
2 = U ' ' ( 0 ) = λb , ω max
2 = min ω min φ
[ ]( )
U (φ ) a2 . =λ b− 2 4 φ
(3.2)
(3.3)
Persamaan (3.1) juga dapat dibentuk menjadi dua persamaan diferensial orde-1, yaitu
φ '=
θ
,
r2 1 dU ( φ ) θ '= r 2 − ω s2φ . 2 dφ
(
)
(3.4)
(3.5)
Persamaan (3.4) dan (3.5) ini tidak dapat diselesaikan dengan cara analitik dan eksak sehingga kita akan terapkan metode numerik beda hingga.
3.7 Metode numerik Metode beda hingga digunakan untuk menyelesaikan seluruh kasus persamaan diferensial di atas. Persamaan (1.7) dan (1.8) diterapkan pada persamaan diferensial (2.0), (2.3), (2.5), (2.9), (3.0), (3.4) dan (3.5). Untuk kasus osilator harmonis dan harmonis teredam, secara berurutan, persamaannya menjadi:
47
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
[
]
k x ( t + ∆t ) = 2 − ( ∆t ) 2 x ( t ) − x ( t − ∆t ) , m x ( t + ∆t ) =
(
m ( ∆t ) 2 m − b∆t
)[(
)
]
(3.6)
x ( t − ∆t ) b k . (3.7) x ( t )− − ( ∆t ) 2 ( ∆t ) 2 m∆t m 2
−
Lalu untuk fungsi eksponensial persamaannya menjadi
[
]
x ( t + ∆t ) = 2 + c 2 ( ∆t ) 2 x ( t ) − x ( t − ∆t ) .
(3.8)
Persamaan (2.9) dan (3.0), secara berurutan, menjadi
[ ] C ( r + ∆r ) =[ 2 + φ 2 ( r )( ∆r ) 2 ]C ( r ) − C ( r − ∆r ) . φ ( r + ∆r ) = 2 − C 2 ( r )( ∆r ) 2 φ ( r ) −φ ( r − ∆r ) ,
(3.9) (4.0)
Lalu persamaan Klein-Gordon (3.4) dan (3.5) menjadi
θ (r ) = θ (r − ∆r ) − (∆r )r 2
[ω s2φ (r) − λ (3φ 5 (r) − 2aφ 3 (r) + bφ (r))], φ ( r ) = φ ( r − ∆r ) +
θ (r) r2
(4.1)
∆r .
(4.2)
Persamaan (4.1) dan (4.2) adalah persamaan yang menggunakan metode beda hingga yang ekuivalen dengan metode Euler [6]. Cara ini dilakukan untuk mempermudah dan menghindarkan titik singular r=0.
3.8 Algoritma 1.
Osilator Harmonis dan Harmonis Teredam
Penyelesaian persamaan diferensial osilator harmonis dan harmonis teredam diselesaikan dengan algoritma berikut untuk mendapatkan x(t), di mana untuk kasus tak teredam b=0. Penyelesaian menggunakan syarat batas berupa nilai awal (initial value). Nilai awal akan mempengaruhi apakah solusi yang didapatkan fungsi sinus (x0=0) atau cosinus (x0=konstan). L1.
b,k,m?
L2.
N, x0, x1, dt?
L3.
tmin?
L4.
t= tmin
L5.
i=0
48
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
L6.
x={mdt2/(m-bdt)}{(2/dt2-b/(mdt)-k/m) x1- x0/(dt)2
L7.
x0=x1
L8.
x1=x
L9.
t= tmin +dt
L10.
i
2.
Persamaan Diferensial Pertumbuhan dan Peluruhan Eksponensial
Penyelesaian persamaan diferensial osilator harmonis dan harmonis teredam diselesaikan dengan algoritma berikut untuk mendapatkan x(t). Yang membedakan pertumbuhan atau peluruhan adalah tanda pada nilai parameter dt. Untuk pertumbuhan nilai dt haruslah positif dan untuk peluruhan sebaliknya. Penyelesaian menggunakan syarat batas berupa nilai awal (initial value). L1.
c?
L2.
N, x0, x1, dt?
L3.
tmin?
L4.
t= tmin
L5.
i=0
L6.
x=(2+c2dt2)x1-x0
L7.
x0=x1
L8.
x1=x
L9.
t= tmin +dt
L10.
i
3.
Persamaan Klein-Gordon-Maxwell
Penyelesaian persamaan diferensial Klein-Gordon-Maxwell ini dilakukan dengan metode beda hingga dan menggunakan syarat batas berupa nilai awal (initial value). L1.
N?
L2.
C0,C1,f0,f1,dr?
L3.
rmin?
L4.
r= rmin
L5.
i=0
L6.
C=(2+f12dr2)C1-C0
L7.
C0=C1
49
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
L8.
C1=C
L9.
f=(2-C12dr2)f1-f0
L10.
f0=f1
L11.
f1=f
L12.
r= rmin +dr
L13.
i
4.
Persamaan Klein-Gordon
Penyelesaian persamaan diferensial Klein-Gordon ini dilakukan dengan metode Euler dalam skema beda hingga [6] dan menggunakan syarat batas berupa nilai batas (boundary value) [5]. Pada saat r sangat besar, nilai medannya harus meluruh menjadi 0. Untuk menghindari singularitas di r=0, dapat digunakan nilai medan awal berupa konstanta saat di titik tersebut. L1.
N, lam, a, b, w?
L2.
phi, theta, dr?
L3.
rmin?
L4.
r = rmin
L5.
Jika r = 0
L6.
phi = konstan
L7.
theta = konstan
L8.
Jika r>0
L9.
phi = phi + dr (theta / r2)
L10.
theta = theta + r2 dr [λ(3phi5 – 2a phi3 +b phi) – w2 phi]
L11.
r= rmin +dr
L12.
phi>0 → L5
50
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
3.9 Hasil dan diskusi 1. Osilator Harmonis dan Harmonis Teredam Parameter-parameter simulasi osilator harmonis yang digunakan diberikan dalam Tabel 1.1 berikut. Tabel 1.1 Parameter-parameter simulasi osilator harmonis dan harmonis teredam.
Symbol
Nilai
Code
k
100
k
m
1
m
N
1000 -1
-2
-3
N -4
-5
dt
10 , 10 ,10 , 10 , 10
dt
tmin
0
tmin
x(t)
0, 1, 1.5, 2
x1
x(t-∆t)
0, 1, 1.5, 2
x0
Parameter standar yang digunakan adalah dt = 10-3, x(t) = 0, dan x(t-∆t) = 0 untuk solusi sinus bila tidak divariasikan. Sedangkan parameter standar yang digunakan untuk solusi cosinus adalah dt = 10-3, x(t) = 1, dan x(t-∆t) = 1. Variasi dt, x(t) dan x(t∆t) diberikan dalam Gambar 1.2 – 1.5, berturut-turut.
Gambar 1.2 Solusi x(t) sebagai fungsi dari waktu t untuk solusi sinus.
51
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
Gambar 1.3 Solusi x(t) sebagai fungsi dari waktu t untuk solusi sinus.
Gambar 1.4 Solusi x(t) sebagai fungsi dari waktu t untuk solusi cosinus.
52
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
Gambar 1.5 Posisi benda x(t) sebagai fungsi dari waktu t untuk solusi cosinus. Gambar 1.2 – 1.5 menunjukkan solusi sinus dan cosinus. Solusi tersebut sesuai dengan solusi analitik (2.1) Gambar 1.2 adalah solusi sinus dengan variasi dt di mana pengaruh variasi dt adalah pada amplitudonya. Semakin kecil dt, maka semakin besar amplitude gelombangnya. Gambar 1.3 menunjukkan solusi sinus dengan variasi x(t) dan x(t-∆t), di mana selisih kedua nilai tersebut mempengaruhi tanda dan besar amplitudonya. Bila x(t)-x(t-∆t) negatif, maka amplitudonya negatif dan sebaliknya. Semakin besar kedua nilai tersebut juga menyebabkan semakin besar pula amplitudonya. Selanjutnya Gambar 1.4 dan 1.5 menunjukkan solusi cosinus. Pada Gambar 1.4, nilai dt yang semakin kecil membuat solusinya semakin akurat. Sedangkan variasi pada Gambar 1.5 memiliki arti yang sama seperti pada Gambar 1.3.
Parameter-parameter simulasi osilator harmonis teredam yang digunakan diberikan dalam Tabel 1.2 berikut. Tabel 1.2 Parameter-parameter simulasi osilator harmonis teredam.
Symbol k
Nilai -1
-2
-1
-2
Code -3
-4
-3
-4
10 , 10 ,10 , 10
m
1
m
b
10 , 10 ,10 , 10
N
1000 -3
k b N
dt
10
tmin
0
tmin
x(t)
0
x1
x(t-∆t)
1
x0
53
dt
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
Parameter standar yang digunakan adalah b, k = 10-3, bila tidak divariasikan. Variasi k dan b diberikan dalam Gambar 1.6 – 1.7, berturut-turut.
Gambar 1.6 Solusi x(t) sebagai fungsi dari waktu t dengan variasi k.
Gambar 1.7 Solusi x(t) sebagai fungsi dari waktu t dengan variasi b. Gambar 1.6 menunjukkan solusi dengan variasi k (konstanta pegas) di mana semakin kecil nilai k, maka semakin besar amplitudo gelombangnya karena energi potensial dari solusi tersebut akan semakin kecil. Sedangkan Gambar 1.7 menunjukkan solusi dengan variasi b (koefisien redaman) di mana semakin kecil koefisien redamannya, maka amplitudonya semakin besar. Solusi ini sesuai dengan solusi analitik di persamaan (2.4).
54
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
2. Persamaan Diferensial Pertumbuhan dan Peluruhan Eksponensial Parameter-parameter persamaan diferensial pertumbuhan eksponensial yang digunakan diberikan dalam Tabel 1.3 berikut. Tabel 1.3 Parameter-parameter persamaan diferensial pertumbuhan eksponensial.
Symbol
Nilai
c
0.1
N
100, 1000, 10000 -1
-2
Code c
-3
N
dt
10 , 10 ,10
dt
tmin
0
tmin
x(t)
0, 1
x1
x(t-∆t)
0, 1
x0
Parameter standar yang digunakan adalah dt = 10-3, x(t) = 0, dan x(t-∆t) = 0, bila tidak divariasikan. Variasi dt (dan N) dan x(t-∆t)- x(t) diberikan dalam Gambar 1.8 dan 1.9, berturut-turut.
Gambar 1.8 Solusi x(t) sebagai fungsi dari waktu t dengan variasi dt..
55
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
Gambar 1.9 Solusi x(t) sebagai fungsi dari waktu t dengan variasi x(t-∆t)- x(t). Gambar 1.8 dan 1.9 menunjukkan solusi persamaan diferensial pertumbuhan eksponensial yang sesuai dengan solusi analitik (2.6) saat B = 0. Iterasi dimulai dari t = 0 dengan dt bernilai positif sehingga r akan bertambah hingga menjadi 10. Pada Gambar 1.8, semakin kecil dt (semakin besar N) menyebabkan solusinya semakin besar. Pada gambar 1.9, selisih nilai x(t) dan x(t-∆t) menyebabkan perubahan kemiringan kurva atau jika bernilai 0 maka tidak ada pertumbuhan yang terjadi.
Parameter-parameter persamaan diferensial perluruhan eksponensial yang digunakan diberikan dalam Tabel 1.4 berikut. Tabel 1.4 Parameter-parameter persamaan diferensial perluruhan eksponensial.
Symbol
Nilai
Code
c
0.1, 0.01, 0.001
c
N
10000, 100000
N
-2
-3
dt
10 ,10
dt
tmin
100
tmin
x(t)
0, 0.001
x1
x(t-∆t)
0, 0.001
x0
Parameter standar yang digunakan adalah dt = 10-3, x(t) = 0, dan x(t-∆t) = 0, bila tidak divariasikan. Variasi dt dan x(t-∆t)- x(t) diberikan dalam Gambar 2.0 – 2.2, berturut-turut.
56
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
Gambar 2.0 Solusi x(t) sebagai fungsi dari waktu t dengan variasi x(t-∆t)- x(t).
Gambar 2.1 Solusi x(t) sebagai fungsi dari waktu t dengan variasi c.
57
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
Gambar 2.2 Solusi x(t) sebagai fungsi dari waktu t dengan variasi c =0.1. Gambar 2.0 - 2.2 menunjukkan solusi persamaan diferensial peluruhan eksponensial yang sesuai dengan solusi analitik (2.6) saat A = 0. Iterasi dimulai dari t = 100 dengan dt bernilai negatif sehingga r akan berkurang hingga menjadi 0. Gambar 2.0 menunjukkan variasi selisih nilai x(t) dan x(t-∆t) yang bersifat sama dengan solusi pertumbuhan eksponensial di Gambar 1.9. Gambar 2.1 dan 2.2 menunjukkan solusi dengan variasi c di mana semakin besar c, maka semakin besar pula nilai solusi di r = 0. Untuk c yang kecil pun solusinya tidak terlihat berbentuk eksponensial tetapi hanya linear. Sehingga agar eksponensial didapatkan perlu c yang cukup besar.
3. Persamaan Klein-Gordon-Maxwell Parameter-parameter persamaan Klein-Gordon-Maxwell yang digunakan diberikan dalam Tabel 1.5 berikut. Tabel 1.5 Parameter-parameter persamaan Klein-Gordon-Maxwell.
Symbol
Nilai
dr
10
-3
rmin
0
C(r ) C(r-∆r)
dr rmin
0 -3
-3
-3
-3
C1 -3
-3
-3
-3
10 , 4x10 , 7x10 , 10x10
ϕ(r ) ϕ(r-∆r)
Code
0
C0 f1
10 , 4x10 , 7x10 , 10x10
f0
Variasi ϕ(r-∆r) dan C(r-∆r) diberikan dalam Gambar 2.3 – 2.6, berturut-turut.
58
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
Gambar 2.3 Solusi C(r) sebagai fungsi dari posisi r dengan variasi ϕ0..
Gambar 2.4. Solusi ϕ (r) sebagai fungsi dari posisi r dengan variasi ϕ0.
59
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
Gambar 2.5 Solusi C(r) sebagai fungsi dari posisi r dengan variasi C0..
Gambar 2.6 Solusi ϕ (r) sebagai fungsi dari posisi r dengan variasi C0. Gambar 2.3 dan 2.4 menunjukan solusi C(r) dan ϕ(r) dengan variasi ϕ0. Kedua gambar tersebut menunjukkan bahwa solusinya memiliki amplitudo yang semakin besar untuk ϕ0 yang semakin kecil. Gambar 2.5 dan 2.6 menunjukan solusi C(r) dan ϕ(r) dengan variasi C0. Kedua gambar tersebut menunjukkan bahwa solusinya memiliki amplitudo yang semakin kecil untuk C0 yang semakin kecil.
60
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
4. Persamaan Klein-Gordon Parameter-parameter persamaan Klein-Gordon yang digunakan diberikan dalam Tabel 1.6 berikut. Tabel 1.6 Parameter-parameter persamaan Klein-Gordon.
Symbol
Nilai -3
Code
dr
10
dr
r
0
r
lam
1
λ
a
2
a
b
1.1
b
ωs
1.047, 1.01, 0.972, 0.6, 0.4152
w
θ(r-∆r)
0
theta
ϕ(r-∆r)
0.12, 0.58, 0.78, 1.001, 1.03
phi
Solusi dari ref. [5] dan dengan metode Euler diberikan dalam Gambar 2.7 – 2.8, berturut-turut.
Gambar 2.7 Solusi ϕ sebagai fungsi posisi r dari ref. [5] dengan variasi ϕ(r-∆r) dan ωs.
61
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
Gambar 2.8 Solusi ϕ sebagai fungsi posisi r dari metode Euler dengan variasi ϕ(r-∆r) dan ωs. Gambar 2.7 dan 2.8 menunjukan solusi ϕ sebagai fungsi posisi r dari ref. [5] dan metode Euler. Solusi dengan metode Euler ternyata tidak bisa sesuai dengan ref. [5] ketika nilai ϕ(r-∆r) = 1.001 dan ωs = 0.6. Lalu pada ϕ(r-∆r) = 1.03 dan ωs = 0.4152 penulis mendapatkan solusi yang singular sehingga dapat terlihat bahwa metode Euler ini tidak mampu mencapai semua solusi yang diinginkan pada ref. [5] yang menggunakan paket pemrograman [7].
3.10 Kesimpulan Metode beda hingga telah dapat diterapkan dalam berbagai persamaan diferensial dengan beberapa variasi seperti stepsize (dt dan dr) serta nilai syarat batas di awal sehingga sesuai dengan solusi analitik yang ada. Namun, untuk metode Euler (masih dalam skema beda hingga) yang hanya menggunakan turunan orde pertama tidak berhasil mendapatkan solusi sesuai dengan referensi [5] yang menggunakan pemgrograman lain. Namun, cara ini berhasil digunakan untuk menghindari nilai singular di r = 0.
3.11 Referensi 1. R. J. LeVeque, “Finite Difference Methods for Ordinary and Partial Differential Equations”, University of Washington, Washington, 2007, p. 3. 2. S. Viridi, “Aplikasi Metode Beda Hingga untuk Persamaan Diferensial Terkopel”, Catatan Kuliah, Departemen Fisika, ITB, 2015. 3. Halliday, Resnick, “Fundamentals of Physics”, 9th Ed., Cleveland State University, USA, 2011, p. 386. 4. D. Pugliese, H. Quevedo, J. A. Rueda H., R. Ruffini, “Charged Boson Star”, Phys. Rev. D 88, 2013, p. 024053.
62
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
5. B. Kleihaus, J. Kunz, M. List, “Rotating Boson Stars and Q-Balls”, arXiv: grqc/0505143v1, 2005. 6. S. Dalziel, “First order ordinary differential equations”, http://www.damtp.cam.ac.uk/lab/people/sd/lectures/nummeth98/odes.htm, 1998, diakses pada 19 Mei 2016. 7. U. Ascher, J. Christiansen, R. D. Russell, “A collocation solver for mixed order systems of boundary value problems”, Mathematics of Computation 33, 1979, p. 659.
3.12 Lampiran 1. Osilator Harmonis dan Harmonis Teredam A. Keterangan penggunaan program dan skrip Tabel 1.7 Program dan skrip serta hasil keluarannya. Program / Skrip Piranti lunak PR2.cpp C++ x(t) vs. t_var dt.gle GLE x(t) vs. t_var x0-x1.gle GLE x(t) vs. t_var dt_1_1.gle GLE x(t) vs. t_var x0-x1_dt 1E-4.gle GLE PR2_var k.gle GLE PR2_var b.gle GLE
Keluaran x(t) Gambar 1.2 Gambar 1.3 Gambar 1.4 Gambar 1.5 Gambar 1.6 Gambar 1.7
B. PR2.cpp #include #include #include #include
using namespace std; int main(int argc, char*argv[]) { if(argc<7) { cout << "PR2 dt N x0 x1 m b k" << endl; return 1; } double dt = atof(argv[1]); int N = (int) atof(argv[2]); double x0 = atof(argv[3]); double x1 = atof(argv[4]); double m = atof(argv[5]); double b = atof(argv[6]); double k = atof(argv[7]); double tmin = 0; double t = tmin;
63
Lampiran B C D E F G H
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
cout << "#r\tx" << endl; ofstream tulis; tulis.open("PR2.txt"); for(int i = 0 ; i <= N; i++){ double x = ((m*dt*dt*dt)/(m*dt-b*dt*dt))*(((2/(dt*dt))b/(m*dt)-k/m)*x1-x0/(dt*dt)); x0 = x1; x1 = x; cout << t << "\t"; cout << x << endl; tulis << t << "\t" << x << endl; t += dt; } return 0; }
C. x(t) vs. t_var dt.gle size 12 10 begin graph title "Grafik x(t) vs. t (variasi dt)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -200000 max 200000 data "fdm_02_dt_1E-1.txt" d1 line color red lwidth 0.05 end graph begin key hei 0.3 nobox pos br text "1\times 10^{-1}" line color red lwidth 0.1 text "1\times 10^{-2}" lstyle 2 color blue lwidth 0.1 text "1\times 10^{-3}" lstyle 6 color green lwidth 0.1 text "1\times 10^{-4}" lstyle 8 color yellow lwidth 0.1 text "1\times 10^{-5}" lstyle 4 color black lwidth 0.1 end key begin graph title "Grafik x(t) vs. t (variasi dt)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -200000 max 200000 data "fdm_02_dt_1E-2.txt" d1 lstyle 2 color blue lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t (variasi dt)" xtitle "t"
64
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
ytitle "x(t)" xaxis min 0 max 10 yaxis min -200000 max 200000 data "fdm_02_dt_1E-3.txt" d1 lstyle 6 color green lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t (variasi dt)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -200000 max 200000 data "fdm_02_dt_1E-4.txt" d1 lstyle 8 color yellow lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t (variasi dt)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -200000 max 200000 data "fdm_02_dt_1E-5.txt" d1 lstyle 4 color black lwidth 0.05 end graph
D. x(t) vs. t_var x0-x1.gle size 12 10 begin graph title "Grafik x(t) vs. t (variasi x_0 - x_1)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -200 max 200 data "fdm_02_x0-x1_0-0.txt" d1 line color red lwidth 0.05 end graph begin key hei 0.3 nobox pos br text "0 - 0" line color red lwidth 0.1 text "1 - 0" lstyle 2 color blue lwidth 0.1 text "0 - 1" lstyle 6 color green lwidth 0.1 text "1 - 1" lstyle 8 color yellow lwidth 0.1 end key begin graph title "Grafik x(t) vs. t (variasi x_0 - x_1)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -200 max 200 data "fdm_02_x0-x1_1-0.txt" d1 lstyle 2 color blue lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t (variasi x_0 - x_1)" xtitle "t" ytitle "x(t)"
65
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
xaxis min 0 max 10 yaxis min -200 max 200 data "fdm_02_x0-x1_0-1.txt" d1 lstyle 6 color green lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t (variasi x_0 - x_1)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -200 max 200 data "fdm_02_x0-x1_1-1.txt" d1 lstyle 8 color yellow lwidth 0.05 end graph
E. x(t) vs. t_var dt_1_1.gle size 12 10 begin graph title "Grafik x(t) vs. t (variasi dt)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -1 max 1 data "fdm_02_x0-x1_1-1_dt_1E-1.txt" d1 line color red lwidth 0.05 end graph begin key hei 0.3 nobox pos br text "1\times 10^{-1}" line color red lwidth 0.1 text "1\times 10^{-2}" lstyle 2 color blue lwidth 0.1 text "1\times 10^{-3}" lstyle 6 color green lwidth 0.1 text "1\times 10^{-4}" lstyle 8 color yellow lwidth 0.1 end key begin graph title "Grafik x(t) vs. t (variasi dt)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -1 max 1 data "fdm_02_x0-x1_1-1_dt_1E-2.txt" d1 lstyle 2 color blue lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t (variasi dt)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -1 max 1 data "fdm_02_x0-x1_1-1_dt_1E-3.txt" d1 lstyle 6 color green lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t (variasi dt)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10
66
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
yaxis min -1 max 1 data "fdm_02_x0-x1_1-1_dt_1E-4.txt" d1 lstyle 8 color yellow lwidth 0.05 end graph
F. x(t) vs. t_var x0-x1_dt 1E-4.gle size 12 10 begin graph title "Grafik x(t) vs. t (variasi x_0-x_1)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -2 max 2 data "fdm_02_x0-x1_1-1_dt_1E-4.txt" d1 line color red lwidth 0.05 end graph begin key hei 0.3 nobox pos br text "1.0 - 1.0" line color red lwidth 0.1 text "1.5 - 1.5" lstyle 2 color blue lwidth 0.1 text "2.0 - 2.0" lstyle 6 color green lwidth 0.1 end key begin graph title "Grafik x(t) vs. t (variasi x_0-x_1)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -2 max 2 data "fdm_02_x0-x1_1.5-1.5_dt_1E-4.txt" d1 lstyle 2 color blue lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t (variasi x_0-x_1)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -2 max 2 data "fdm_02_x0-x1_2-2_dt_1E-4.txt" d1 lstyle 6 color green lwidth 0.05 end graph
G. PR2_var k.gle size 12 10 begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 50 yaxis min -60000 max 20000 data "PR2_1E-3_50E4_1_0_1_1E-3_1E-1.txt" d1 lstyle 1 color red lwidth 0.05 end graph begin key hei 0.4
67
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
nobox pos bl text "k = 10^{-1}" lstyle 1 color red lwidth 0.1 text "k = 10^{-2}" lstyle 2 color green lwidth 0.1 text "k = 10^{-3}" lstyle 4 color blue lwidth 0.1 text "k = 10^{-4}" lstyle 5 color yellow lwidth 0.1 end key begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 50 yaxis min -60000 max 20000 data "PR2_1E-3_50E4_1_0_1_1E-3_1E-2.txt" d1 lstyle 2 color green lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 50 yaxis min -60000 max 20000 data "PR2_1E-3_50E4_1_0_1_1E-3_1E-3.txt" d1 lstyle 4 color blue lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 50 yaxis min -60000 max 20000 data "PR2_1E-3_50E4_1_0_1_1E-3_1E-4.txt" d1 lstyle 5 color yellow lwidth 0.05 end graph
H. PR2_var b.gle size 12 10 begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 50 yaxis min -5000 max 5000 data "PR2_1E-3_50E4_1_0_1_1E-1_1.txt" d1 lstyle 1 color red lwidth 0.05 end graph begin key hei 0.4 nobox pos bl text "b = 10^{-1}" lstyle 1 color red lwidth 0.1 text "b = 10^{-2}" lstyle 2 color green lwidth 0.1 text "b = 10^{-3}" lstyle 4 color blue lwidth 0.1 text "b = 10^{-4}" lstyle 5 color yellow lwidth 0.1 end key begin graph title "Grafik x(t) vs. t" xtitle "t"
68
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
ytitle "x(t)" xaxis min 0 max 50 yaxis min -5000 max 5000 data "PR2_1E-3_50E4_1_0_1_1E-2_1.txt" d1 lstyle 2 color green lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 50 yaxis min -5000 max 5000 data "PR2_1E-3_50E4_1_0_1_1E-3_1.txt" d1 lstyle 4 color blue lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 50 yaxis min -5000 max 5000 data "PR2_1E-3_50E4_1_0_1_1E-4_1.txt" d1 lstyle 5 color yellow lwidth 0.05 end graph
2. Persamaan Diferensial Pertumbuhan dan Peluruhan Eksponensial A. Keterangan penggunaan program dan skrip Tabel 1.8 Program dan skrip serta hasil keluarannya. Program / Skrip Piranti lunak PR1.cpp C++ PR1_var_dt.gle GLE PR1_var_x0-x1.gle GLE PR1min_var_x0-x1.gle GLE PR1min_varc.gle GLE PR1min_varc2.gle GLE B. PR1.cpp #include #include #include #include
using namespace std; int main(int argc, char*argv[]) { if(argc<6) { cout << "PR1 dt N x0 x1 c" << endl; } double dt = atof(argv[1]); int N = (int) atof(argv[2]);
69
Keluaran x(t) Gambar 1.8 Gambar 1.9 Gambar 2.0 Gambar 2.1 Gambar 2.2
Lampiran B C D E F G
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
double x0 = atof(argv[3]); double x1 = atof(argv[4]); double c = atof(argv[5]); double tmin = 100; double t = tmin; cout << "t\tx" << endl; ofstream tulis; tulis.open("PR1.txt"); for(int i = 0 ; i <= N; i++){ double x = (2 + c * c * dt * dt) * x1 - x0; x0 = x1; x1 = x; cout << t << "\t"; cout << x << endl; tulis << t <<"\t" << x << endl; t += dt; } return 0; }
C. PR1_var_dt.gle size 12 10 begin graph title "Grafik x(t) vs. t (var dt)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -450000 max 450000 data "PR1_var dt.txt" d1 lstyle 1 color red lwidth 0.05 end graph begin key hei 0.4 nobox pos bl text "dt = 10^{-1}" lstyle 1 color red lwidth 0.1 text "dt = 10^{-2}" lstyle 2 color green lwidth 0.1 text "dt = 10^{-3}" lstyle 4 color blue lwidth 0.1 end key begin graph title "Grafik x(t) vs. t (var dt)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -450000 max 450000 data "PR1_var dt2.txt" d1 lstyle 2 color green lwidth 0.05
70
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
end graph begin graph title "Grafik x(t) vs. t (var dt)" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -450000 max 450000 data "PR1_var dt3.txt" d1 lstyle 4 color blue lwidth 0.05 end graph
D. PR1_var_x0-x1.gle size 12 10 begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -450000 max 450000 data "PR1_x0-x1_0-0.txt" d1 lstyle 1 color red lwidth 0.05 end graph begin key hei 0.4 nobox pos bl text "0 - 0" lstyle 1 color red lwidth 0.1 text "0 - 1" lstyle 2 color green lwidth 0.1 text "1 - 0" lstyle 4 color blue lwidth 0.1 text "1 - 1" lstyle 5 color yellow lwidth 0.1 end key begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -450000 max 450000 data "PR1_x0-x1_0-1.txt" d1 lstyle 2 color green lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -450000 max 450000 data "PR1_x0-x1_1-0.txt" d1 lstyle 4 color blue lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 10 yaxis min -450000 max 450000 data "PR1_x0-x1_1-1.txt" d1 lstyle 5 color yellow lwidth 0.05 end graph
71
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
E. PR1min_var_x0-x1.gle size 12 10 begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 100 yaxis min -20 max 20 data "PR1a.txt" d1 lstyle 1 color red lwidth 0.05 end graph begin key hei 0.4 nobox pos bl text "0 - 0.001" lstyle 1 color red lwidth 0.1 text "0.001 - 0" lstyle 2 color green lwidth 0.1 text "0.001 - 0.001" lstyle 4 color blue lwidth 0.1 text "0 - 0" lstyle 5 color yellow lwidth 0.1 end key begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 100 yaxis min -20 max 20 data "PR1d.txt" d1 lstyle 2 color green lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 100 yaxis min -20 max 20 data "PR1e.txt" d1 lstyle 4 color blue lwidth 0.05 end graph begin graph title "Grafik x(t) vs. t" xtitle "t" ytitle "x(t)" xaxis min 0 max 100 yaxis min -20 max 20 data "PR1f.txt" d1 lstyle 5 color yellow lwidth 0.05 end graph
F. PR1min_varc.gle size 12 10 begin graph title "Grafik x(t) vs. t (var c)" xtitle "t" ytitle "x(t)" xaxis min 0 max 100 yaxis min -12 max 0
72
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
data "PR1a.txt" d1 lstyle 1 color red lwidth 0.05 end graph begin key hei 0.4 nobox pos tl text "c = 0.001" lstyle 1 color red lwidth 0.1 text "c = 0.01" lstyle 2 color green lwidth 0.1 end key begin graph title "Grafik x(t) vs. t (var c)" xtitle "t" ytitle "x(t)" xaxis min 0 max 100 yaxis min -12 max 0 data "PR1b.txt" d1 lstyle 2 color green lwidth 0.05 end graph
G. PR1min_varc2.gle size 12 10 begin graph title "Grafik x(t) vs. t (var c)" xtitle "t" ytitle "x(t)" xaxis min 0 max 100 yaxis min -12000 max 0 data "PR1c.txt" d1 lstyle 4 color blue lwidth 0.05 end graph
3. Persamaan Klein-Gordon-Maxwell A. Keterangan penggunaan program dan skrip Tabel 1.9 Program dan skrip serta hasil keluarannya. Program / Skrip Piranti lunak Keluaran fdm_01.cpp C++ C(r) dan ϕ(r) C vs. r variasi phi0.gle GLE Gambar 2.3 Phi vs. r variasi phi0.gle GLE Gambar 2.4 C vs. r variasi C0.gle GLE Gambar 2.5 Phi vs. r variasi C0.gle GLE Gambar 2.6 B. fdm_01.cpp #include #include #include using namespace std; int main(int argc, char*argv[]) { if(argc<7) {
73
Lampiran B C D E F
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
cout << "fdm_01 dr N C0 C1 f0 f1" << endl; return 1; } double dr = atof(argv[1]); int N = (int) atof(argv[2]); double double double double
C0 C1 f0 f1
= = = =
atof(argv[3]); atof(argv[4]); atof(argv[5]); atof(argv[6]);
double rmin = 0; double r = rmin; cout << "#r\tC\tf" << endl; ofstream tulis; tulis.open("data_1E-2_1E3_01E-3_0_01E-3_0.txt"); for(int i = 0 ; i <= N; i++){ double C = (2 + f1 * f1 * dr * dr) * C1 - C0; C0 = C1; C1 = C; double f = (2 - C1 * C1 * dr * dr) * f1 - f0; f0 = f1; f1 = f; cout << r << "\t"; cout << C << "\t"; cout << f << endl; tulis << r << "\t" << C << "\t" << f << endl; r += dr; } return 0; }
C. C vs. r variasi phi0.gle size 12 10 set lwidth 0.02 begin graph title "Grafik C(r) vs. r" xtitle "r" ytitle "C(r)" ! xaxis min 0 max 0.01 yaxis min -70 max 0 data "a.txt" d1 lstyle 5 color red lwidth 0.05 end graph begin key hei 0.4 nobox
74
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
pos bl text "1\times 10^{-3}" lstyle 5 color red lwidth 0.1 text "4\times 10^{-3}" lstyle 2 color green lwidth 0.1 text "7\times 10^{-3}" lstyle 7 color blue lwidth 0.1 text "10\times 10^{-3}" line color yellow lwidth 0.1 end key begin graph title "Grafik C(r) vs. r" xtitle "r" ytitle "C(r)" ! xaxis min 0 max 0.01 yaxis min -70 max 0 data "b.txt" d1 lstyle 2 color green lwidth 0.05 end graph begin graph title "Grafik C(r) vs. r" xtitle "r" ytitle "C(r)" ! xaxis min 0 max 0.01 yaxis min -70 max 0 data "c.txt" d1 lstyle 7 color blue lwidth 0.05 end graph begin graph title "Grafik C(r) vs. r" xtitle "r" ytitle "C(r)" ! xaxis min 0 max 0.01 yaxis min -70 max 0 data "d.txt" d1 line color yellow lwidth 0.05 end graph
D. Phi vs. r variasi phi0.gle size 12 10 begin graph title "Grafik \phi(r) vs. r" xtitle "r" ytitle "\phi(r)" ! xaxis min 0 max 0.01 yaxis min -1.2 max 0.8 data "a.txt" d2 lstyle 5 color red end graph begin key hei 0.4 nobox pos br text "1\times 10^{-3}" lstyle 5 color red lwidth 0.1 text "4\times 10^{-3}" lstyle 2 color green lwidth 0.1 text "7\times 10^{-3}" lstyle 7 color blue lwidth 0.1 text "10\times 10^{-3}" line color yellow lwidth 0.1 end key begin graph title "Grafik \phi(r) vs. r" xtitle "r"
75
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
ytitle "\phi(r)" xaxis min 0 max 0.01 yaxis min -1.2 max 0.8 data "b.txt" d2 lstyle 2 color green end graph begin graph title "Grafik \phi(r) vs. r" xtitle "r" ytitle "\phi(r)" ! xaxis min 0 max 0.01 yaxis min -1.2 max 0.8 data "c.txt" d2 lstyle 7 color blue end graph begin graph title "Grafik \phi(r) vs. r" xtitle "r" ytitle "\phi(r)" ! xaxis min 0 max 0.01 yaxis min -1.2 max 0.8 data "d.txt" d2 line color yellow end graph !
E. C vs. r variasi C0.gle size 12 10 begin graph title "Grafik C(r) vs. r" xtitle "r" ytitle "C(r)" ! xaxis min 0 max 0.01 yaxis min -12 max 0 data "1.txt" d1 lstyle 5 color red lwidth 0.05 end graph begin key hei 0.4 nobox pos bl text "1\times 10^{-3}" lstyle 5 color red lwidth 0.1 text "4\times 10^{-3}" lstyle 2 color green lwidth 0.1 text "7\times 10^{-3}" lstyle 7 color blue lwidth 0.1 text "10\times 10^{-3}" line color yellow lwidth 0.1 end key begin graph title "Grafik C(r) vs. r" xtitle "r" ytitle "C(r)" ! xaxis min 0 max 0.01 yaxis min -12 max 0 data "2.txt" d1 lstyle 2 color green lwidth 0.05 end graph begin graph title "Grafik C(r) vs. r" xtitle "r"
76
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
ytitle "C(r)" xaxis min 0 max 0.01 yaxis min -12 max 0 data "3.txt" d1 lstyle 7 color blue lwidth 0.05 end graph begin graph title "Grafik C(r) vs. r" xtitle "r" ytitle "C(r)" ! xaxis min 0 max 0.01 yaxis min -12 max 0 data "4.txt" d1 line color yellow lwidth 0.05 end graph !
F. Phi vs. r variasi C0.gle size 12 10 begin graph title "Grafik \phi(r) vs. r" xtitle "r" ytitle "\phi(r)" ! xaxis min 0 max 0.01 yaxis min -0.4 max 0.3 data "1.txt" d2 lstyle 5 color red lwidth 0.05 end graph begin key hei 0.3 nobox pos bl text "1\times 10^{-3}" lstyle 5 color red lwidth 0.1 text "4\times 10^{-3}" lstyle 2 color green lwidth 0.1 text "7\times 10^{-3}" lstyle 7 color blue lwidth 0.1 text "10\times 10^{-3}" line color yellow lwidth 0.1 end key begin graph title "Grafik \phi(r) vs. r" xtitle "r" ytitle "\phi(r)" ! xaxis min 0 max 0.01 yaxis min -0.4 max 0.3 data "2.txt" d2 lstyle 2 color green lwidth 0.05 end graph begin graph title "Grafik \phi(r) vs. r" xtitle "r" ytitle "\phi(r)" ! xaxis min 0 max 0.01 yaxis min -0.4 max 0.3 data "3.txt" d2 lstyle 7 color blue lwidth 0.05 end graph begin graph title "Grafik \phi(r) vs. r" xtitle "r" ytitle "\phi(r)"
77
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
!
xaxis min 0 max 0.01 yaxis min -0.4 max 0.3 data "4.txt" d2 line color yellow lwidth 0.05 end graph
4. Persamaan Klein-Gordon A. Keterangan penggunaan program dan skrip Tabel 2.0 Program dan skrip serta hasil keluarannya.
Program / Skrip
Piranti lunak
Keluaran
Lampiran
KG.cpp
C++
ϕ(r) dan θ(r)
B
Klein-Gordon_All.gle
GLE
Gambar 2.8
C
B. KG.cpp #include #include #include #include
using namespace std; int main() { double lam = 1.0; double a = 2.0; double b = 1.1; double w = 0.4152; double r = 0.0; double dr = 0.001; double phi = 0.972; double theta = 0.0; ofstream tulis; tulis.open("KleinGordon.txt"); do { if (r == 0.0) { phi = phi + 0.0; theta = theta + 0.0; } else { phi = phi + dr*(theta/(r*r)); theta = theta + dr*r*r*( lam*(3*pow(phi,5)-2*a*pow(phi,3)+b*phi) w*w*phi); } cout << r << "\t" << phi << "\t" << theta <<endl; tulis << r << "\t" << phi << "\t" << theta <<endl;
78
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
r = r + dr; } while (phi> 0.00); }
C. Klein-Gordon_All.gle size 11 10 begin graph title "Medan \phi\space\ vs \it{r}" xtitle "Radius \it{r}" ytitle "\phi(\it{r})" xaxis min 0 max 38 yaxis min 0 max 1.2 data "KleinGordon1.txt" d1 line color red lwidth 0.06 end graph begin key hei 0.3 nobox pos tr text "\omega = 1.0470" lstyle 1 color red lwidth 0.06 text "\omega = 1.0100" lstyle 3 color green lwidth 0.06 text "\omega = 0.9720" lstyle 5 color blue lwidth 0.06 text "\omega = 0.6000" lstyle 7 color yellow lwidth 0.06 end key begin graph title "Medan \phi\space\ vs \it{r}" xtitle "Radius \it{r}" ytitle "\phi(\it{r})" xaxis min 0 max 38 yaxis min 0 max 1.2 data "KleinGordon2.txt" d1 line color green lwidth 0.06 end graph begin graph title "Medan \phi\space\ vs \it{r}" xtitle "Radius \it{r}" ytitle "\phi(\it{r})" xaxis min 0 max 38 yaxis min 0 max 1.2 data "KleinGordon3.txt" d1 line color blue lwidth 0.06 end graph begin graph title "Medan \phi\space\ vs \it{r}" xtitle "Radius \it{r}" ytitle "\phi(\it{r})" xaxis min 0 max 38 yaxis min 0 max 1.2 data "KleinGordon4.txt" d1 line color yellow lwidth 0.06 end graph
79
Komputasi Fisika 2: 3 Penerapan metode beda hingga ..
80
4
Karambol ditinjau dari segi fisika granular
Ali Akbar Ahmad Sibaq Ukhrowi Ulwi Chandra Widyananda Winardhi Oki Dwi Saputro Rayhan Makarim Basuki Pede Karambol adalah suatu permainan sederhana yang melibatkan dua buah cakram yang ditumbukkan satu dan lainnya. Objektifnya adalah memasukkan cakram pada lubang yang ada seperti pada permainan biliar. Tumbukkan antara cakram-cakram ini dapat disimulasikan dari segi Dinamika Molekuler. Setiap cakram dengan massa sama (m), jari-jari yang sama (r) dan posisinya masing-masing (x,y). Skema yang digunakan adalah skema lenting sempurna dengan adanya gesekan antara cakram dengan papan karambol.
4.1 Pendahuluan Permainan adalah hal yang tidak bisa terlepas dari dunia yang dijalani seseorang setiap harinya. Melewati permainan tersebut seseorang dapat dikatakan melepas penat dari kesibukkan sehari-hari baik bersama teman atau seorang diri. Ada banyak sekali jenis permainan, permainan online yang sering dimainkan oleh anak-anak jaman sekarang dan permainan fisik yang sering dimainkan oleh anak-anak jaman dahulu. Beberapa contoh permainan jaman dahulu adalah bermain gundu, biliar, gasing, karambol, dan masih banyak lagi. Karambol adalah jenis permainan meja yang seperti biliar dan terkadang dikenal sebagai finger billiards (“biliar jari”)[1]. Permainan ini menggunakan cakram kecil sebagai pengganti bola dan menggunakan jari sebagai pengganti stik biliar.
81
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
Gambar 4.1. Meja karambol beserta cakram kecil pengganti bola[2] Interaksi dan tumbukkan antara cakram kecil pada karambol dapat dimodelkan menggunakan pemodelan granular bahkan lebih jauhnya dapat dibuat menjadi suatu game telepon selular menggunakan pemodelan granular ini. Cakram kecil ini bertranslasi ketika diberikan gaya dan menumbuk cakram lain sehingga terjadi interaksi gaya normal yang menyebabkan cakram tersebut bisa bergerak bersama, memantul, ataupun terbelokkan arah geraknya.
4.2 Teori Karambol berasal dari India dan menyebar luas diperkirakan sekitar tahun 1970-an. Karambol memiliki banyak nama seperti carrum, couronne, carum, karam, karom, karum, dan finger billiards[1]. Karambol mempunyai jenis bola khusus yang digunakan. Bentuknya pipih seperti koin logam seperti token yang digunakan dalam permainan judi di Las Vegas. Cakram pada kasus ini dianggap sebagai suatu partikel bulat pipih yang memiliki massa, jari-jari, dan posisi. Massa dari setiap cakram dibuat sama m, jari-jarinya dinyatakan dengan r, dan posisinya dinyatakan dengan x.
Gambar 4.2 Model tumbukan cakram karambol.
82
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
Bola karambol yang bergerak dengan kecepatan awal v akan menumbuk bola karambol lainnya dan terjadi gaya kontak yaitu gaya normal, N antara kedua bola karambol. Tumbukan yang terjadi dapat dibedakan menjadi dua jenis, yaitu tumbukan bola karambol dengan massa yang sama (dengan bola karambol lainnya) dan tumbukan dengan massa yang sangat besar (dinding pembatas). Untuk tumbukan dengan bola karambol lainnya, dapat digunakan persamaan di bawah ini.
v2 f = v1i Dari rumus diatas dapat dilihat bahwa bola hanya bertukar kecepatan saja. Pada tumbukan bola karambol dengan dinding, dapat dilihat persamaan di bawah ini.
v1 f = −v1i Dari rumus diatas dapat dilihat bahwa dinding tidak bergerak, hanya bola karambol yang memiliki kecepatan yang sama dengan arah yang berlawanan. Interaksi yang terjadi antara cakram A dan B yaitu gaya normal dituliskan sebagai berikut :
N ,ij = k N ξ ij − γ N
dξ ij dt
.
(4.1)
k N merupakan konsanta pegas dan γN merupakan konstanta disipasi. Digunakannya persamaan ini dengan asumsi bahwa bola karambol memiliki sifat elastik yang muncul saat kedua benda bertumbukan, dan tumbukan yang terjadi memiliki disipasi, karena terjadi pengurangan energi kinetik benda saat terjadi tumbukan menjadi bunyi dan panas. Gaya pada Persamaan 1.1 menyebabkan bola karambol yang saling bertumbukan akan menjadi saling menjauhi, dengan menggunakan hukum Newton II.
meff
d 2ξ dξ = −k N ξ − γN 2 dt dt
dengan
meff =
mi .m j mi + m j
ξ (t ) = e−αt B sin ωτ Dengan
α=
γN 2meff
83
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
ω = ω0 2 −
γN 4meff
kN meff
ω0 =
Ketika cakram memantul dan mengenai tembok akan ada interaksi yang muncul antara cakram dengan tembok yang dinyatakan sebagai berikut :
ρ n =mn .vn f bbn =2
pn t coll
(4.2) (4.3)
Dengan pn adalah momentum ketika cakram n menumbuk tembok, fw adalah gaya yang dihasilkan dari tumbukan tersebut, dan tcoll adalah selang waktu ketika tumbukan terjadi. Variabel ξij menggambarkan irisan (overlap) antara kedua cakram yang diasumsikan berbentuk bulat pipih[3] :
1 ξ ij = max 0, (Di + D ) j − |xij | 2
(4.4)
4.3 Metode numerik Metode numerik yang digunakan pada tugas kali ini adalah metode euler. Berdasarkan persamaan Newton 2
∑
i 0
Fi = mai
Dimana i menunjukkan indeks dari tiap cakram. Pada awalnya tiap-tiap cakram tidak memiliki percepatan, dimana cakram tersebut bergerak akibat adanya kecepatan awal saja, setelah cakram berinteraksi dengan cakram atau dinding maka akan ada percepatan yang diakibatkan iteraksi tersebut, sehingga percepatan tiap cakramnya menjadi
ai = ( f il + f ik + fbbi ) / mi Dimana Nil merupakan gaya normal pada cakram i akibat berinteraksi dengan cakram l, sedangkan fbbi merupakan gaya pantul cakram ketika bertabrakan dengan dinding.Selanjutnya kecepatan dan posisi tiap cakram didapatkan dengan metode euler,
v(t + dt ) = v(t ) + a(t ).dt
84
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
r (t + dt ) = r (t ) + a(t ).dt 4.4 Algoritma Simulasi tumbukan partikel monoatomik dengan partikel diatomik dilakukan dengan menggunakan algoritma berikut ini untuk memperoleh vf. L1. ma, mb, mc? L2.
d a, d b, d c ?
L3.
tbeg, tend, dt, k, Tn, eN?
L4.
va,, vb, vc ?
L5.
xa, xb, xc?
L6.
meff = (ma* mb) / (ma+ mb)
L7.
t = tbeg.
L8.
tcoll ?
L9.
x01 = x0 – x1, |x01| = (x01·x01)1/2.
L10.
ξ01 = max[0, 0.5·(D0 + D1) – |x01|].
L11.
v01 = v0 – v1.
L12.
dξ01/dt = –v01.
L13.
f01 = kN·ξ01 – γN·dξ01/dt, f10 = –f01.
L14.
fbb1 = 2 m1 v1/ tcoll.
L15.
fa= f01 + fbb0 + f02 , fb= f10 + fbb1 + f12 , fc= f20 + fbb2 + f21
L16.
a0 = fa / m0, a1 = fb / m1, a2 = fc / m2.
L17.
v0 = v0 + a0·dt, v1 = v1 + a1·dt, v2 = v2 + a2·dt.
L18.
x0 = x0 + v0·dt, x1 = x1 + v1·dt, x2 = x2 + v2·dt.
L19.
t < tend → L9.
4.5 Hasil dan diskusi Parameter-parameter simulasi yang digunakan diberikan dalam Tabel 1.1 berikut. Tabel 4.1 Parameter-parameter simulasi.
Symbol
Nilai
Code
kN
495.97
kN
γN
0.9691
gammaN
meff
0.5
meff
r
(0.8,0),(0.5,01),(0.2,0)
A.r,B.r,C.r
85
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
d
0.5
C.d, A.d, B.d
l_w
2,2
lengthx,lengthy
-4
tbeg, tend, ∆t, Tdata
0, 5, 10 , 0.01
tbeg, tend, dt, Tdata
vi
(0,2-8),(0,0),(0,0)
B.v, A.v, C.v
t_c
0.0001
timecoll
Parameter standar yang digunakan adalah m=1, posisi bola a,b dan c, yaitu (0.8, 0, 0), (0.5, -1, 0), (0.2,0,0). Percepatan dari tiap bola dengan variasi vby = 8,7,6,5,4. diberikan dalam Gambar 1.2 – 1.4, berturut-turut.
Gambar 4.3 Percepatan pada bola 1 untuk tiap vby Dari gambar 4.3-4.5 bisa kita lihat adanya keanehan yaitu percepatan yang tiba tiba meningkat pesat hingga mencapai 104 . Hal itu terjadi untuk hampir seluruh kasus vby. Pada gambar 4.3 yaitu tinjauan bola 1 terlihat hanya kasus vby = 4 saja yang tidak ada lonjakan percepatan. Sementara pada gambar 4.4 hanya kasus vby = 8 dan 6 saja yang memiliki lonjakan percepatan. Pada gambar 4.5 hanya kasus vby = 7 saja yang tidak memiliki lonjakan percepatan. Untuk bisa menganalisis lonjakan tersebut kita perlu menguraikan gaya satu per satu. Gaya yang bertindak adalah gaya tumbuk bola a dengan bola b, gaya tumbuk bola a dengan bola c, gaya tumbuk bola b dengan bola c, serta gaya pantul dinding. Tinjauan akan dilakukan pada bola a kasus vby = 8. Gaya pantul dan gaya tumbuk bola a dengan bola b bisa dilihat pada gambar 4.6 dan 4.7.
86
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
Gambar 4.4 Percepatan pada bola 2 untuk tiap vby
Gambar 4.5 Percepatan pada bola 3 untuk tiap vby
Pada gambar 4.6 dapat kita lihat bahwa gaya pantul tiba tiba meningkat di sekitar waktu 9.6 dan 73. Sementara pada gambar 4.7 bisa kita lihat tidak ada gaya yang meningkat secara signifikan hingga 104. Jadi bisa disimpulkan bahwa percepatan yang meningkat secara signifikan adalah akibat gaya pantul dinding. Jika dihitung memang gaya pantul akan menghasilkan nilai 104 akibat variabel tcoll memiliki orde 10-4. Pemilihan nilai ini berdasarkan trial error untuk kasus yang paling fisis. Nilai itu akan membuat kecepatan bola
87
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
menjadi minusnya sehingga bola berbalik arah. Jika nilai tcoll hanya berorde 10 2 maka bola akan menjadi diam di dinding. Gaya pantul pada gambar 4.6 hanya tercatat ada dua kali. Padahal bila dilihat secara animasi akan ada banyak sekali kasus pantulan antara bola A terhadap dinding. Kemungkinan besar nilai gaya pantul ini tidak terekam secara detail akibat perekaman waktu yang tidak seluruhnya. Nilai gaya pantul yang direkam setelah tumbukan dengan dinding akan bernilai nol. Itu menjelaskan kenapa sedikit sekali gaya pantul yang tercatat padahal secara animasi terjadi banyak pantulan. Apabila kita tinjau gambar 4.8, kecepatan berjalan normal tanpa ada lonjakan kecepatan secara tiba tiba, hal ini sejalan dengan asumsi bahwa sebenarnya percepatan tidak melonjak begitu saja, tetapi memang tidak terekam seluruhnya.
Gambar 4.6. Gaya pantul dinding terhadap bola A. Gaya tumbukan antara bola B dengan bola A terjadi berkali kali seperti terlihat pada gambar 4.7. Hal itu sesuai dengan animasi yang sudah dijalankan, bahwa memang terjadi banyak kasus bola A menumbuk bola B. Gambar 4.9 menunjukan bagaimana kasus tumbukan dan pantulan terjadi di waktu 9-10. Saat menumbuk bola A dan bola B bertabrakan, terjadi perubahan arah dan kecepatan di kedua bola. Sementara itu, saat bola menuju dinding bola akan memantul kembali. Untuk bola C yang tidak mengalami peristiwa pantulan atau tumbukan akan berjalan seperti biasa.
88
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
Gambar 4.7. Gaya tumbuk bola B terhadap bola A.
Gambar 4.8. Kecepatan bola A terhadap waktu
89
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
Gambar 4.9. Penjelasan peristiwa saat t=9 hingga 10. 4.6 Kesimpulan Simulasi karambol telah dilakukan dengan mengatur gaya pantul terhadap dinding. Gaya pantul ini didapat dengan memodelkan tumbukan dalam waktu tertentu pada dinding.
4.7 Referensi 1. 2.
https://id.wikipedia.org/wiki/Karambol [diakses tanggal 25 Mei 2016, pukul 15.43] https://shesaride.files.wordpress.com/2015/11/karambol.jpg
4.8 Lampiran A. Keterangan penggunaan program dan skrip Tabel 4.2 Program dan skrip serta hasil keluarannya.
Program / Skrip
Piranti lunak
Keluaran
Lampiran
Run1.cpp
C++
vf
B
drawgiff.m
matlab
Animasi, dan Gambar 1.8
D
Plot
matlab
Gambar 1.21.7
90
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
B. Program run1.cpp #include #include #include #include #include
using namespace std; #include #include #include #include
"vect3.h" "forces.h" "ball.h" "mdynamics.h"
vect3 bounce(ball timecoll){
ball1,
double
lengthx,
double
lengthy,
double
vect3 fbounce=vect3(0,0,0); if (ball1.r.x+0.5*ball1.d >= lengthx || ball1.r.x-0.5*ball1.d <= lengthx || ball1.r.y+0.5*ball1.d >= lengthy || ball1.r.y-0.5*ball1.d <= -lengthy){ fbounce = fW (ball1, timecoll); } return fbounce; }
vect3 overlap(ball balla, ball ballb,double kN, double gammaN){ vect3 fnorm=vect3(0,0,0); if (abs(balla.r.x-ballb.r.x)<=balla.d ballb.r.y)<=balla.d ){ fnorm=fN(balla,ballb,kN,gammaN); } return fnorm; } int main (int argc, char *argv[]){ double double double double double
dt = tbeg tend m1 = q1 =
atof(argv[1]); = atof (argv[2]); = atof(argv[3]); atof(argv[4]); atof(argv[5]);
91
&&
abs(balla.r.y-
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
double m2 = atof(argv[6]); double q2 = atof(argv[7]); double theta0_1 = atof(argv[8]); double theta0_2 = atof(argv[9]); double k = atof(argv[10]); const char *ofn = argv[11]; */ double double double double double double
tbeg = 0; tend = 100; dt = 1e-4; k = 3000; eN = 0.8; TN = 0.1;
ball A, B, C; // Deklarasi benda A dan B // Parameter yang divariasikan A.m = 1; C.m= 1; B.m = 1; double meff = (A.m*B.m)/(A.m+B.m); double gammaN = (2* meff/ TN) * log(1/eN); double kN = (gammaN * gammaN) / (4*meff) + (meff*M_PI*M_PI)/(TN*TN);
//Define iteration parameters double Tdata = 0.01; int Nt = 1 + (int) floor((tend - tbeg) / dt); int Ndata = 1 + (int) floor(Tdata / dt); vect3 rA0 = vect3(0.8, 0, 0); // Poros benda A vect3 rB0 = vect3(0.5, -1, 0); // Poros benda B vect3 rC0 = vect3(0.2,0,0); // Poros benda B double l = 1; A.r.x A.r.y B.r.x B.r.y C.r.x C.r.y A.d = B.d = C.d = A.v = A.a = B.v = B.a = C.v = C.a =
= rA0.x; = rA0.y; = rB0.x; = rB0.y; = rC0.x; = rC0.y; 0.5; 0.5; 0.5; vect3(0,0,0); vect3 (0,0,0); vect3(0,8,0); vect3(0,0,0); vect3 (0,0,0); vect3 (0,0,0);
92
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
//Open output file ofstream fout; fout.open("data.txt"); //Display data header //Perform iteration int idata = 0; for (int it = 0; it < Nt; it++) { //Calculate time double t = tbeg + it * dt; //Watch counter for displaying data if(idata == (Ndata - 1)) { idata = 0; } //Display data only for certain period
vect3 vect3 vect3 vect3 vect3 vect3
fAB fBA fCA fCB fAC fBC
= = = = = =
overlap(A,B, overlap(B,A, overlap(C,A, overlap(C,B, overlap(A,C, overlap(B,C,
kN, kN, kN, kN, kN, kN,
gammaN);// gammaN); gammaN); gammaN); gammaN); gammaN);
vect3 fbbA = bounce (A, 2, 2, 0.0001); vect3 fbbB = bounce (B, 2, 2, 0.0001); vect3 fbbC = bounce (C, 2, 2, 0.0001);
if ( cout cout cout }
it%10000==0){ << it << endl; << fbbA.x << " " << fbbA.y <<" " << fbbA.z << endl; << fAB.x << " " <
vect3 fA = fbbA +fAC + fAB ;// Menjumlah gaya-gaya vect3 fB = fbbB +fBA + fBC ;// Menjumlah gaya-gaya vect3 fC = fbbC +fCB + fCA ;
A.a = fA / A.m;// Hukum 2 Newton B.a = fB / B.m;// Hukum 2 Newton C.a = fC / C.m; intEuler(A, dt);// Integrasi numerik intEuler(B, dt);// Integrasi numerik intEuler(C, dt); if (idata == 0){
93
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
fout fout fout fout fout fout fout fout fout fout fout fout fout fout fout fout fout fout fout fout fout fout fout fout fout
<< << << << << << << << << << << << << << << << << << << << << << << << <<
t << "\t"; setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2) setprecision(2)
<< << << << << << << << << << << << << << << << << << << << << << << <<
A.r.x << "\t"; A.r.y << "\t"; B.r.x << "\t"; B.r.y << "\t"; C.r.x << "\t"; C.r.y << "\t"; A.v.x << "\t"; A.v.y << "\t"; B.v.x << "\t"; B.v.y << "\t"; C.v.x << "\t"; C.v.y << "\t"; fbbA.x << "\t"; fbbA.y << "\t"; fAB.x << "\t"; fAB.y << "\t"; fC.x << "\t"; fC.y << "\t"; A.a.x << "\t"; A.a.y << "\t"; B.a.x << "\t"; B.a.y << "\t"; C.a.x << "\t"; C.a.y << endl;
} //Increase counter for displaying data idata++; } // Close output file fout.close();
C. Program forces.h dengan tambahan gaya pantul //Terminate program with success state return 0; } /* forces.h Library for 3-d interaction forces Sparisoma Viridi | [email protected] 20160403 Create this library. */ #include #include "vect3.h" #include "ball.h" #ifndef FORCES_H #define FORCES_H // Define some types of interaction force vect3 fG(ball, vect3);
94
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
vect3 vect3 vect3 vect3 vect3 vect3 vect3 vect3 vect3 vect3
fG(ball, double, vect3); fG(ball, ball, double); fFF(ball, double); fE(ball, vect3); fE(ball, double, vect3); fE(ball, ball, double); fS(ball, double, vect3); fS(ball, double, vect3, double); fW(ball, double); fN(ball, ball, double, double);
// Calculate gravitation force in gravitation field g vect3 fG(ball b, vect3 g) { double m = b.m; vect3 f = m * g; return f; } // Calculate gravitation force in gravitation field g // from a point rc vect3 fG(ball b, double g, vect3 rc) { double m = b.m; vect3 r = b.r; vect3 n = (r - rc) >> 1; vect3 f = - m * g * n; return f; } // Calculate gravitation force between two balls // with gravitation constant G vect3 fG(ball b1, ball b2, double kG) { vect3 r1 = b1.r; vect3 r2 = b2.r; double m1 = b1.m; double m2 = b2.m; vect3 r12 = r1 - r2; vect3 n12 = r12 >> 1; double l12 = r12.length(); vect3 f = - kG * ((m1 * m2) / (l12 * l12)) * n12; return f; } // Calculate electric force in electric field E vect3 fE(ball b, vect3 E) { double q = b.q; vect3 f = q * E; return f; } vect3 fFF(ball b, double eta) { double D = b.d; vect3 f = -3 * M_PI * eta * D * b.v; return f; } // Calculate electric force in electric field E // from a point rc vect3 fE(ball b, double E, vect3 rc) {
95
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
double q = b.q; vect3 r = b.r; vect3 n = (r - rc) >> 1; vect3 f = - q * E * n; return f; } // Calculate electric force between two balls // with electrostatik constant kE vect3 fE(ball b1, ball b2, double kE) { vect3 r1 = b1.r; vect3 r2 = b2.r; double q1 = b1.q; double q2 = b2.q; vect3 r12 = r1 - r2; vect3 n12 = r12 >> 1; double l12 = r12.length(); vect3 f = kE * ((q1 * q2) / (l12 * l12)) * n12; return f; } // Calculate spring force with spring constant kS // from a point rc vect3 fS(ball b, double kS, vect3 rc) { vect3 r = b.r; vect3 f = - kS * (r - rc); return f; } vect3 fS(ball vect3 r = vect3 l = double dl vect3 f = return f; }
b, double kS, vect3 rc, double lo) { b.r; r - rc; = l.length() - lo; -kS * dl * (l >> 1);
vect3 fW(ball b1, double timecoll) { double m1 = b1.m; vect3 v1 = b1.v; vect3 momentum2x = v1 * m1 * (-2); vect3 f = momentum2x/timecoll; return f; } // Calculate normal force between two balls with // constants kN and gN vect3 fN(ball b1, ball b2, double kN, double gN) { double d1 = b1.d; double d2 = b2.d; vect3 r1 = b1.r; vect3 r2 = b2.r; vect3 v1 = b1.v; vect3 v2 = b2.v; vect3 r12 = r1 - r2; vect3 n12 = r12 >> 1; double l12 = r12.length(); double xi12 = max(0.0, 0.5 * (d1 + d2) - l12);
96
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
vect3 v12 = v1 - v2; double s12 = v12.length(); double xidot12 = -s12; vect3 f = (kN * xi12 + gN * xidot12) * n12; return f; } #endif
D. Program drawgiff.m for n =1:length(unnamed) Ay = unnamed(n,3); Ax = unnamed(n,2); By = unnamed(n,5); Bx = unnamed(n,4); Cy = unnamed(n,7); Cx = unnamed(n,6); figure(1) plot(Ax,Ay,'xblue') hold on plot(Bx,By,'*r') plot(Cx,Cy,'.black') hold off
title(unnamed(n,1)); xlim([-2 2]) ylim([-2 2]) drawnow frame = getframe(1); im = frame2im(frame); [imind,cm] = rgb2ind(im,256); if n == 1; imwrite(imind,cm,filename,'gif', 'Loopcount',inf,'DelayTime',10); else imwrite(imind,cm,filename,'gif','WriteMode','append','Del ayTime',10); end end
97
Komputasi Fisika 2: 4 Karambol ditinjau dari ..
98
Gerakan tali sebagai rantai granular bermuatan dan bermassa dalam medan listrik seragam dan periodik
5
Casmika Saputra Bram Y. Setiadi Wahyu Trisvianto Zulfikar L. Maulana Pengaruh medan listrik E yang seragam (uniform) dan periodik dengan frekuesi ω pada sebuah tali bermassa, diibaratkan sebagai partikel berbentuk bola bermuatan q yang berupa rantai granular yang dihubungkan dengan pegas berkonstanta k dan bermassa m. Rantai berada dalam pengaruh medan gravitasi g dan medan listrik E. Variasi parameter dilakukan untuk massa partikel m, konstanta pegas k, frekuensi perubahan medan listrik ω, amplitudo/besar medan listrik A dan besar gravitasi g. Analisa dilakukan pada posisi pusat massa tali xCM terhadap variasi setiap parameter. Posisi awal tali dibuat dalam keadaan diam dan variasi parameter yang satu dibuat dengan tidak mengubah parameter yang lain. Terdapat kebergantungan perubahan simpangan xCM terhadap setiap parameter yang diuji.
5.1 Pendahuluan Dewasa ini terdapat minat yang besar dari fisikawan untuk mempelajari material granular dan sifat yang dimilikinya sebagai respon terhatap vibrasi, khususnya vibrasi vertikal [1, 2]. Vibrasi sendiri merupakan representasi entitas yang merambat dan membawa sejumlah energi, baik energi potensial dan energi kinetik [3]. Secara fisis, vibrasi merupakan osilasi mekanik terhadap suatu titik kesetimbangan [4]. Pada partikel bermuatan listrik, gaya elektrostatik akan tercipta sebagai interaksi antara kedua objek yang bermuatan yang nilainya sebanding dengan perkalian skalar dari besarnya muatan dan berbanding terbalik terhadap kuadrat jarak keduanya [5]. Sementara medan listrik dihasilkan oleh setiap partikel bermuatan pada ruang di sekitarnya [6]. Dalam tulisan ini dibahas tali yang diasumsikan sebagai rantai granular yang bermuatan. Gerakan vibrasi tali disebabkan pengaruh medan listrik periodik dan gaya gravitasi. Hasil akhir yang diamati adalah simpangan maksimum pusat massa tali/rantai granular sebagai fungsi dari amplitudo, frekuensi medan, massa partikel, muatan partikel, dan medan gravitasi.
5.2 Teori Partikel bermuatan yang terangkai secara majemuk linear direpresentasikan sebagai seutas tali. Partikel-partikel ini seakan terhubung melalui sebuah pegas yang memiliki
99
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
konstanta k. Menggunakan analogi ini maka diketahui bahwa gaya yang bekerja antapartikel adalah
v v FS = −k s ⋅ x m ,
(5.1)
dengan ks merupakan konstanta pegas dan xm merupakan jarak antara pusat massa partikel dengan partikel lain yang bersebelahan (partikel tetangga)
uv
v
v
x m = r n ±1 − r n .
(5.2)
Vektor rn menunjukkan posisi partikel ke-n dalam rantai, sehingga xm merupakan selisih antara pusat massa partikel n dengan partikel lain yang terdekat dengannya (n±1). Setiap partikel bola yang membentuk rangkaian tali merupakan bola bermuatan dengan muatan sebesar q sehingga timbul gaya listrik FE akibat medan E. Sedangkan interaksi Coulomb antarpartikel dalam rantai dianggap tidak ada.
v FE = E ⋅ q
(5.3)
Medan listrik yand diberikan merupakan medan listrik periodik yang berubah beraturan terhadap waktu (tervibrasi) yang nilainya
uv E = A sin(ω t)
(5.4)
dengan nilai A merupakan amplitudo medan, atau nilai medan listrik (E) maksimal. Sementara tali sendiri masih dipengaruhi oleh gaya gravitasi menuju pusat bumi dengan nilai
v uuv Fg = W = m ⋅ g .
(5.5)
Dalam simulasi diperhitungkan pula pengaruh resonansi yang mungkin terjadi yang secara umum dinyatakan dalam persamaan
A(ω) ∝
ka
(ω − Ω)
2
.
+a
(5.6)
2
Dengan a merupakan parameter damping dari osilasi dan Ω adalah frekuensi alami dalam kasus ini merupakan frekuensi pergerakan tali tanpa pengaruh dari medan listrik, sementara ω merupakan driving frequency atau dalam kasus ini merupakan frekuensi dari medan listrik E yang diberikan pada tali [7]. A merupakan fungsi amplitudo vibrasi pusat massa yang nilainya bergantung pada frekuensi medan listrik. Ilustrasi dari pergerakan rantai granular bermuatan terhadap medan listrik dan perubahan parameter yang diberikan disajikan pada gambar 5.1.
100
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
Gambar 5.1. Model tali rantai granular (20 partikel) bermuatan: (a) pada kondisi awal (t = 0), (b) t = 14, (c) t = 29, (d) t = 40 dengan E = Asin(ωt). Posisi pusat massa ditunjukan oleh titik berwarna biru (●)
5.3 Algoritma Simulasi gerakan tali sebagai rantai granular bermuatan dan bermassa dalam medan listrik seragam dan periodik dilakukan dengan menggunakan algoritma berikut ini untuk memperoleh xmax sebagai fungsi A, f, M, Q, dan g. L1. A, f, M, Q, g? L2.
tbeg, tend, dt, Tdata?
L3.
A = 0.01, f = 0.05, M = 1, Q = 1, g = 0.1 (default parameter)
L4.
x(A, f, M, Q, g) = ?
L5.
ndata = 100
L6.
Nt = ? (jumlah iterasi)
L7.
Ndata = Nt / ndata
L8.
dl = 0.5 (jarak antarpartikel), k = 5000(konstanta pegas)
L9.
kg = (0, -g, 0) (vektor 3D medan gravitasi)
101
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
L10.
N = 20 (banyak partikel per pendulum)
L11.
ro = (0, 10, 0) (vektor 3D poros pendulum)
L12.
i=0
L13.
mpartikel = M, qpartikel = Q
L14.
rpartikel = ro – (dl·i·sin(θ/2π), dl·i·cos(θ/2π),0), (vektor translasi 3D, θ=radian)
L15.
i++
L16.
i
L17.
idata = frame = Amin = Amax = Aabs = Arms = tempN = 0
L18.
it = 0
L19.
t = tbeg + it·dt
L20.
idata == Ndata, idata=0
L21.
ω = 2πf
L22.
E = (Asinωt,0,0) vektor 3D medan magnet
L23.
fs, fg, fe ?
L24.
fg0=m0·g (interaksi gaya gravitasi pada partikel ke-10)
L25.
N
cmass=
∑
xi mi xi
N
xi vi xi
i =1
L26. vcmass=
∑ i =1
L27.
i=1
L28.
fsi = – ( k·(xi – xi–1 ) + k·(xi+1 – xi) )
L29.
fgi = mi · g
L30.
fei = E · Qi
L31.
i++
L32.
i < N – 1 → L28.
L33.
fs19= – k · (x19 – x18)
L34.
fg19=m19·g (interaksi gaya gravitasi pada partikel ke-19)
L35.
fe19= E · Q19
L36.
i=1
102
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
L37.
ai =
fsi + fgi + fei mi
L38.
vi = ∫ ai dt
L39.
ri = ∫ vi dt
L40.
i++
L41.
i < N – 1 → L33.
L42.
Jika it > 0
L43.
Jika Amin > cmass.x
L44.
Ya, Amin = cmass.x
L45.
Tidak, lanjut
L46.
Jika Amax < cmass.x
L47.
Ya, Amax = cmass.x
L48.
Tidak, lanjut
L49.
Aabs = Aabs + | cmass.x |
L50.
Arms = Arms + (cmass.x)2
L51.
tempN++
L52.
idata++
L53.
it < Nt → L19
L54.
Aabs = Aabs / tempN
L55.
Amrs = Arms / tempN
L56.
Tampilkan Amin, Amax, Aabs, Arms
103
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
5.4 Hasil dan diskusi Parameter-parameter simulasi yang digunakan diberikan dalam Tabel 5.1 berikut. Tabel 5.1 Parameter-parameter simulasi.
Symbol
Nilai
Code
A
0.01
A
f
0.05
f
m
1
M
q
1
Q
g
0.1
g
θ
0
tbeg, tend, ∆t
0, 50, 10
theta -4
tbeg, tend, dt
Parameter standar yang digunakan adalah A = 0.01, f = 0.05, m = 1, q = 1, g = 0.1, dan θ = 0.5 bila tidak divariasikan. Variasi A, f, m, q, dan g diberikan dalam Gambar 1.2 – 1.6, berturut-turut.
Gambar 5.2 Nilai simpangan maksimum pusat massa rantai granular xmax sebagai fungsi dari massa jenis amplitudo medan listrik A.
Pemvariasian yang pertama dilakukan pengubahan amplitudo bagi medan listrik E, seperti yang telah dipaparkan di atas dinyatakan sebagai fungsi Asin(ωt) – dalam hal ini A memiliki range antara 0 hingga 0.2 dengan rentang setiap variasi adalah 0.01. Pada gambar 5.2 di atas diperoleh bahwa fungsi xmax(A) memiliki relasi yang hampir linear dan dinyatakan dalam
104
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
x max ( A ) = −57.689A 2 + 33.332A – 0.0856 .
(5.7)
Kesebandingan yang diperoleh sebagai respon simpangan terhadap amplitudo medan listrik dimungkinkan terjadi karena gaya listrik memiliki kesebandingan dengan nilai medan listrik, sehingga dengan parameter lain yang konstan, peningkatan medan listrik maksimal (A) akan menyebabkan gaya listrik yang berinteraksi dengan tali juga meningkat.
Gambar 5.3 Nilai simpangan maksimum pusat massa rantai granular xmax sebagai fungsi dari frekuensi medan listrik f.
Variasi yang kedua adalah variasi nilai frekuensi dengan rentag 0 hingga 0.09. Pada simulasi yang dibuat, diperoleh output nilai simpangan pusat massa maksimal berada pada kisaran nilai f pada 0.02 seperti yang nampak pada gambar 5.3. Hal ini disebabkan adanya resonansi antara frekuensi natural dari tali (rantai granular) dengan driving frequency/frekuensi dari lingkungan yang diberikan pada sistem, sehingga terjadi penguatan (amplifikasi) yang menyebabkan simpangan memiliki nilai yang lebih besar. Fungsi xmax(f) adalah
xmax (f) =
0.048 0.012 + ( f − 0.02)2
105
(5.8)
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
Gambar 5.4 Kurva simpangan pusat massa sebagai respon simpangan sebesar θ
Analisa lanjutan dilakukan untuk menghitung frekuensi natural pada rantai. Hal ini dilakukan dengan cara mengayunkan rantai dengan memberi sudut awal simpangan sebesar θ pada daerah yang tidak terpengaruh medan magnet E. Respon simpangan pusat massa yang diperoleh ditunjukkan pada gambar 5.4 di atas. Untuk mencari frekuensi simpangan, dilakukan Fast Fourier Transform (FFT) pada data simpangan terhadap waktu, gambar 5.4.
Gambar 5.5 Respon FFT gambar 1.4, puncak pada frekuensi 0.02. Frekuensi ini selanjutnya disebut frekuensi natural sistem rantai.
Dari FFT yang dilakukan, diperoleh puncak kurva (peak) terjadi pada nilai frekuensi 0.02. Frekuensi inilah yang selanjutnya disebut sebagai frekuensi natural sistem rantai.
106
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
Gambar 5.6 Simpangan pusat massa rantai ketika diberi frekuensi 0.1
Ketika diberikan driving frequency sebesar 0.1, diperoleh simpangan pusat massa pada posisi x ditunjukkan oleh gambar 5.6. Dapat dilihat bahwa terdapat semacam gangguan berupa vibrasi dengan frekuensi yang lebih tinggi dari frekuensi natural seperti yang ditunjukkan pada gambar 5.4. Untuk menganalisa nilai frekuensi, dilakukan FFT pada data gelombang, gambar 5.6.
Gambar 5.7 Respon FFT gambar 1.6, puncak pada frekuensi 0.02 dan puncak kedua pada frekuensi 0.1.
Hasil FFT gambar 5.7 menunjukkan adanya frekuensi dominan lain selain frekuensi natural, yakni pada nilai 0.1 atau sama dengan driving frequency medan listrik yang diberikan ke sistem.
107
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
Gambar 5.8 Nilai simpangan maksimum pusat massa rantai granular xmax sebagai fungsi dari amplitudo massa partikel m.
Pada pemvariasian massa diberikan rentang massa partikel antara 0 hingga 2, relatif terhadap massa awal yang bernilai 1. Dalam kasus ini diperoleh hubungan logaritmik antara simpangan maksimal pusat massa dengan massa partikel yang digunakan. Semakin kecil massa partikel, maka dengan parameter lain yang bernilai sama simpangan maksimal akan lebih besar dibanding pada rantai granular dengan massa partikel lebih besar. Persamaan dari fungsi adalah
x max ( m ) = −1.535 ⋅ ln(m) + 1.5857 .
(5.9)
Analisa kasus ini adalah seiring dengan membesarnya massa partikel, maka dapat kita asumsikan massa tali secara keseluruhan juga lebih besar. Dengan massa yang lebih besar maka tali akan memiliki gaya berat (terkena implikasi gaya gravitasi) yang lebih besar sehingga gaya listrik kurang memberi pengaruh signifikan.
Gambar 5.9 Nilai simpangan maksimum pusat massa rantai granular xmax sebagai fungsi dari muatan partikel q.
108
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
Variasi keempat dilakukan pada parameter muatan listrik pada partikel (rantai granular). Nilai yang diberikan pada muatan partikel adalah antara 0 hingga 2 dengan kenaikan sebesar 0.1. Hubungan yang diperoleh antara simpangan maksimal dan variasi q adalah linear yang bisa dinyatakan dengan persamaan
x max ( q ) = 1.3382q + 0.0474 .
(5.10)
Sama halnya dengan pemvariasian nilai amplitudo dari medan listrik, variasi muatan partikel akan berimbas pada gaya listrik dengan medan listrik periodik yang diberikan.
Gambar 5.10 Nilai simpangan maksimum pusat massa rantai granular xmax sebagai fungsi dari medan gravitasi g.
Terakhir adalah pemvariasian nilai konstanta gravitasi yang akan memberi dampak pada gaya gravitasi atau gaya berat yang bekerja pada setiap partikel dalam rantai granular. Pada kondisi awal, diberika konstanta gravitasi 0.1. Variasi dilakukan dengan mengubah nilai gravitasi dari 0 hingga 0.2. Pada simulasi diperoleh hasil yang berbanding terbalik anara simpangan maksimal dengan konstanta gravitasi, atau dengan kata lain simpangan maksimal terjadi ketika nilai gravitasi lebih kecil, begitu pula sebaliknya. Hal ini dimungkinkan karena mengecilnya konstanta gravitasi akan membuat gaya berat tali semakin kecil sehingga dampak yang ditimbulkan oleh vektor yang sejajar dengan sumbu x (vektor resultan ke arah sumbu x) menjadi semakin besar. Secara matematis hubungan antara simpangan maksimal dan konstanta gravitasi g adalah
x max ( g ) = −0.591 ⋅ ln(g) + 0.0718 .
(5.11)
Melalui pemvariasian kelima paramter di atas maka secara umum simpangan pusat massa maksimal dapat didefinisikan secara matematis sebagai 1/5
x max (A, f , m, q, g) = x A (A) ⋅ x f (f ) ⋅ x m (m) ⋅ x q (q) ⋅ x g (g)
109
(5.12)
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
5.5 Kesimpulan Gerakan ayunan tali dapat disimulasikan sebagai gerak rantai granular bermuatan dan bermassa. Sistem berada dalam medan listrik seragam periodik dan medan gravitasi. Posisi rantai dapat diwakilkan dengan menentukan posisi pusat massa rantai xCM. Simpangan pusat massa maksimum dipengaruhi oleh amplitudo medan listrik A, frekuensi medan listrik f, massa partikel m, muatan partikel q, dan medan gravitasi g. Pengaruh parameter tersebut ditunjukkan pada persamaan 5.12.
5.6 Referensi 1. 2. 3. 4. 5. 6. 7.
Jaeger, H. M., S.R. Nagel, 1992. Science 255. pp.1523. Evesque, P. 1992. Contemp. Phys. 33. pp. 245. Sen, Surajit., et. al. 2008. Solitary Waves in the Granular Chain. Physics Report. DOI:10.1016/j.physrep.2007.10.007 Takács, G., B. Rohal’-Ilkiv. 2012. Model Predictive Vibration Control. Springer-Verlag London Limited. DOI: 10.1007/978-1-4471-2333-0_2 Coulomb, Charles-Augustin d. 1785. Premier mémoire sur l’électricité et le magnétisme, Histoire de l’Académie Royale des Sciences, pages 569-577 Thidé, Bo. 2004. Electromagnetic Field Theory.Upsilon Books: Uppsala, Sweden. pp. 2-3. Siegman, A.E. 1986. Lasers. University Science Books. pp. 105–108.
110
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
5.7 Lampiran A. Keterangan penggunaan program dan skrip Tabel 5.2 Program dan skrip serta hasil keluarannya.
Program / Skrip
Piranti lunak
Keluaran
Lampir an
*.gif, plot_sek.gps, data.txt, AmplitudoPendulum.txt, data-freq.txt, data-maxmin.txt, draw[index].png
B
sim.cpp
C++
vect3.h
C++
C
forces.h
C++
D
ball.h
C++
E
mydinamics.h
C++
F
variasi.sh
Bash command
Semua parameter dan simpangan maksimum
G
plot_sek.gps
Gnuplot
Gambar 1.2 – Gambar 1.6
H
B. Program sim.cpp /* sim.cpp Compile: g++ sim.cpp -o run Execute: ./run [options] */ #include #include #include #include
using namespace std; #include "vect3.h" #include "forces.h" #include "ball.h"
111
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
#include "mdynamics.h" void plot_sek(ball *point, int number, int index, vect3 field, double amp, double time, vect3 cm) { ofstream sout; const char *ofn = "plot_sek.gps"; sout.open(ofn); sout << "set term png size 600,500 font \"Times, 20\"" << endl; sout << "set size 1,1" << endl; sout << "set style fill solid 1" << endl; sout << "set style arrow 1 head filled size screen 0.03,30,45 ls 2" << endl; sout << "set style arrow 2 nohead lc 1 lw 5" << endl; for(int i = 0; i < number-1; i++) { sout << "set object circle at "<< point[i].r.x << "," << point[i].r.y << " size 0.1 front fc rgb \"red\" fs" << endl; sout << "set arrow nohead from "<< point[i].r.x << "," << point[i].r.y << " to "<< point[i+1].r.x << "," << point[i+1].r.y << " as 2" << endl; } sout << "set object circle at "<< point[number-1].r.x << "," << point[number-1].r.y << " size 0.1 front fc rgb \"red\" fs" << endl; sout << "set object circle at "<< cm.x << "," << cm.y << " size 0.1 front fc rgb \"blue\" fs" << endl; double arr; if(field.x == 0) arr = 0; else arr = field.x/amp; sout << "set arrow from -3,4.5 to " << (-3 + 2 * arr) << ",4.5 as 1" << endl; sout << "set label \"E(t) = "<< field.x << "\" at -4.5,5 front font \"Times,16\"" << endl; sout << "set label \"t = "<< time <<"\" at -4,1 front font \"Times,16\"" << endl; sout << "set xlabel \"x\" font \"Times, 21\"" << endl; sout << "set xtics 1 font \"Times, 16\"" << endl; sout << "set xrange [-5:5]" << endl; sout sout sout sout
<< << << <<
"set "set "set "set
ylabel \"y\" font \"Times, 21\"" << endl; ytics 1 font \"Times, 16\"" << endl; yrange [0:10]" << endl; style fill solid 1" << endl;
if(index > 999) sout<<"set output \"draw-"<< index <<".png\""<<endl; if(index < 1000 && index > 99) sout<<"set output \"draw-0"<< index <<".png\""<<endl; if(index < 100 && index > 9)sout<<"set output \"draw-00"<< index <<".png\""<<endl; if(index < 10)sout<<"set output \"draw-000"<< index <<".png\""<<endl; sout << "plot 10 notitle w l lw 1 lc 1" << endl;
112
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
sout.close(); system("gnuplot plot_sek.gps"); } int main (int argc, char *argv[]){ //Define program name const char *pname = "run"; double A; double f; double M; double Q; double g; double theta; double dt; double tend; int ndata; //Verbose usage if(argc < 9){ cout << "Usage : " << pname << " "; cout << "[A f m q g theta dt tend n_data]"; cout << endl; cout << "A\tamplitude of electric field" << endl; cout << "f\tfrequency electric field" << endl; cout << "m\tmass" << endl; cout << "q\tcharge" << endl; cout << "g\tgravity field" << endl; cout << "theta\tSudut awal pendulum" << endl; cout << "dt\ttime step" << endl; cout << "tend\tend of time" << endl; cout << "n_data\tn data" << endl; cout << endl; cout << "============== Run using default parameter =============" << endl; A = 0.01; f = 0.05; M = 1; Q = 1; g = 0.1; theta = 0; dt = 1e-4; tend = 50; ndata = 100; } else { A = atof(argv[1]); f = atof(argv[2]); M = atof(argv[3]); Q = atof(argv[4]); g = atof(argv[5]); theta = atof(argv[6]); dt = atof(argv[7]); tend = atof(argv[8]); ndata = atoi(argv[9]);
113
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
} const char *ofn = "data.txt"; const char *ofn2 = "data-max-min.txt"; const char *ofn3 = "data-freq.txt"; double tbeg = 0; long int Nt = 1 + (long int) floor((tend - tbeg) / dt); // Jumlah iterasi long int Ndata = Nt / ndata; double dl = 0.5; double k = 5000; vect3 kg(0, -g, 0); // Medan Gravitasi const int N = 20; // Banyak partikel per pendulum ball pendulum[N]; vect3 temp; // Temporary variable for compare data vect3 ro(0, 10, 0);
// Posisi Poros Pendulum
//Definisi posisi awal tiap partikel for(int i=0; i
114
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
//Calculate time double t = tbeg + it * dt; //Watch counter for displaying data if(idata == Ndata) { idata = 0; } vect3 fs[N]; //spring vect3 fg[N]; //garavitasi vect3 fe[N]; //medan listrik //Definisikan besaran medan listrik double omega = f * 2 * M_PI; //awalnya 0.04 vect3 E = vect3(A*sin(omega*t),0,0); fg[0] = fG(pendulum[0], kg); vect3 cmass = com(pendulum, N); vect3 vcmass = vcom(pendulum, N); //Display data only for certain period if (idata == 0){ //system("clear"); //cout << "index : " << 100*frame/ndata << "%" <<endl; fout << t << "\t"; for(int i=0; i
115
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
} if(it > 0) { if((vcmass.x * temp.x) <= 0) { fout2 << t << "\t" << cmass.x << "\t" << cmass.y << "\t" << vcmass.x << "\t" << vcmass.y << endl; } if(Amin > cmass.x) Amin = cmass.x; // Amplitudo Minimum if(Amax < cmass.x) Amax = cmass.x; // Amplitudo Maximum Aabs += abs(cmass.x); Arms += cmass.x * cmass.x; tempN ++; fout3 << t << "\t" << cmass.x << "\t" << cmass.y << "\t" << vcmass.x << "\t" << vcmass.y << endl; } temp = vcmass; //Increase counter for displaying data idata++; } // Close output file fout.close(); fout2.close(); fout3.close(); ofstream fout4; fout4.open("AmplitudoPendulum.txt"); fout4 << "A minimum\t: " << Amin << endl; fout4 << "A maximum\t: " << Amax << endl; fout4 << "|A| rerata\t: " << Aabs/tempN << endl; fout4 << "A rms\t\t: " << sqrt(Arms/tempN) << endl; fout4.close(); //Terminate program with success state //cout << "Generate pendulum.gif" << endl; system("convert *.png pendulum.gif"); //cout << "Done!" << endl; cout << Amin << "\t\t" << Amax << "\t\t" << Aabs/tempN << "\t\t" << sqrt(Arms/tempN) << endl; return 0; }
C. Skrip vect3.h /* vect3.h */ #include #include <sstream> using namespace std;
116
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
#ifndef VECT3_H #define VECT3_H struct vect3 { double x, y, z; vect3(void); vect3(double, double, double); vect3(const vect3&); ~vect3(void); // Deconstractor string strval(void); // Untuk tampilan vektor (x, y, z) string strtab(void); // Untuk tampilan tabular double length(void); // Menghasilkan panjang vektor dari suatu vect3 vect3 norm(void); // Menghasilkan Vektor Normal dari suatu vect3 }; string vect3::strval(void) { // Untuk tampilan vektor (x, y, z) stringstream ss; ss << "("; ss << x << ", "; ss << y << ", "; ss << z << ""; ss << ")"; string s = ss.str(); return s; } string vect3::strtab(void) { // Untuk tampilan tabular stringstream ss; ss << x << "\t"; ss << y << "\t"; ss << z << endl; string s = ss.str(); return s; } vect3 operator+(vect3, vect3); // Penjumlahan Vect3 vect3 operator-(vect3, vect3); // Pengurangan Vect3 vect3 operator*(vect3, vect3); // Cross Product Vect3 vect3 operator*(double, vect3); // Perkalian skalar dengan Vect3 vect3 operator*(vect3, double); // Perkalian Vect3 dengan Skalar vect3 operator/(vect3, double); // Pembagian Vect3 dengan Skalar double operator|(vect3, vect3); // Dot Product Vect3 dengan Vect3 vect3 operator>>(vect3, double); // Membuat Vect3 memiliki besar (panjang) tertentu // Penjabaran Fungsi - Fungsi double vect3::length(void) { vect3 r(x, y, z); double s = r|r; return sqrt(s); } vect3 vect3::norm(void) { vect3 r(x, y, z); r = r / r.length(); return r; }
117
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
vect3 operator+(vect3 r1, vect3 r2) { vect3 r3; r3.x = r1.x + r2.x; r3.y = r1.y + r2.y; r3.z = r1.z + r2.z; return r3; } vect3 operator-(vect3 r1, vect3 r2) { vect3 r3; r3.x = r1.x - r2.x; r3.y = r1.y - r2.y; r3.z = r1.z - r2.z; return r3; } vect3 operator*(vect3 vect3 r; r.x = r1.y * r2.z r.y = r1.z * r2.x r.z = r1.x * r2.y return r; }
r1, vect3 r2) { - r1.z * r2.y; - r1.x * r2.z; - r1.y * r2.x;
vect3 operator*(double a, vect3 r) { vect3 s; s.x = a * r.x; s.y = a * r.y; s.z = a * r.z; return s; } vect3 operator*(vect3 r, double a) { vect3 s; s.x = a * r.x; s.y = a * r.y; s.z = a * r.z; return s; } vect3 operator/(vect3 r, double a) { vect3 s; s.x = r.x / a; s.y = r.y / a; s.z = r.z / a; return s; } double operator|(vect3 r1, vect3 r2) { return r1.x*r2.x + r1.y*r2.y + r1.z*r2.z; } vect3 operator>>(vect3 r, double a) { double l = r.length(); if(l != 0) { vect3 rr = r/l; rr = rr * a; return rr;
118
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
} else { vect3 rr; return rr; } } vect3::vect3(void) { x = 0; y = 0; z = 0; } vect3::vect3(double xx, double yy, double zz) { x = xx; y = yy; z = zz; } vect3::vect3(const vect3& r) { x = r.x; y = r.y; z = r.z; } vect3::~vect3(void) { x = 0; y = 0; z = 0; } #endif
D. Skrip forces.h /* forces.h Library for 3-d interaction forces Sparisoma Viridi | [email protected] 20160403 Create this library. */ #include #include "vect3.h" #include "ball.h" #ifndef FORCES_H #define FORCES_H // Define some types of interaction force vect3 fG(ball, vect3); vect3 fG(ball, double, vect3); vect3 fG(ball, ball, double); vect3 fFF(ball, double); vect3 fE(ball, vect3); vect3 fE(ball, double, vect3); vect3 fE(ball, ball, double); vect3 fS(ball, double, vect3); vect3 fS(ball, double, vect3, double); vect3 fN(ball, ball, double, double);
119
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
vect3 fS(ball, ball, double, double); // Calculate gravitation force in gravitation field g vect3 fG(ball b, vect3 g) { double m = b.m; vect3 f = m * g; return f; } // Calculate gravitation force in gravitation field g // from a point rc vect3 fG(ball b, double g, vect3 rc) { double m = b.m; vect3 r = b.r; vect3 n = (r - rc) >> 1; vect3 f = - m * g * n; return f; } // Calculate gravitation force between two balls // with gravitation constant G vect3 fG(ball b1, ball b2, double kG) { vect3 r1 = b1.r; vect3 r2 = b2.r; double m1 = b1.m; double m2 = b2.m; vect3 r12 = r1 - r2; vect3 n12 = r12 >> 1; double l12 = r12.length(); vect3 f = - kG * ((m1 * m2) / (l12 * l12)) * n12; return f; } // Calculate electric force in electric field E vect3 fE(ball b, vect3 E) { double q = b.q; vect3 f = q * E; return f; } //fricion force from fluid vect3 fFF(ball b, double eta) { double D = b.d; vect3 f = -3 * M_PI * eta * D * b.v; return f; } // Calculate electric force in electric field E // from a point rc vect3 fE(ball b, double E, vect3 rc) { double q = b.q; vect3 r = b.r; vect3 n = (r - rc) >> 1; vect3 f = - q * E * n; return f; } // Calculate electric force between two balls
120
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
// with electrostatik constant kE vect3 fE(ball b1, ball b2, double kE) { vect3 r1 = b1.r; vect3 r2 = b2.r; double q1 = b1.q; double q2 = b2.q; vect3 r12 = r1 - r2; vect3 n12 = r12 >> 1; double l12 = r12.length(); vect3 f = kE * ((q1 * q2) / (l12 * l12)) * n12; return f; } // Calculate spring force with spring constant kS // from a point rc vect3 fS(ball b, double kS, vect3 rc) { vect3 r = b.r; vect3 f = - kS * (r - rc); return f; } vect3 fS(ball vect3 r = vect3 l = double dl vect3 f = return f; }
b, double kS, vect3 rc, double lo) { b.r; r - rc; = l.length() - lo; -kS * dl * (l >> 1);
// Calculate normal force between two balls with // constants kN and gN vect3 fN(ball b1, ball b2, double kN, double gN) { double d1 = b1.d; double d2 = b2.d; vect3 r1 = b1.r; vect3 r2 = b2.r; vect3 v1 = b1.v; vect3 v2 = b2.v; vect3 r12 = r1 - r2; vect3 n12 = r12 >> 1; double l12 = r12.length(); double xi12 = max(0.0, 0.5 * (d1 + d2) - l12); vect3 v12 = v1 - v2; double s12 = v12.length(); double xidot12 = -s12; vect3 f = (kN * xi12 + gN * xidot12) * n12; return f; } // Calculate force between two balls with vect3 fS(ball b1, ball b2, double d, double k) { vect3 r1 = b1.r; vect3 r2 = b2.r; vect3 r12 = r1 - r2; vect3 n12 = r12 >> 1; double l12 = r12.length(); double xi12 = l12 - d;
121
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
vect3 f = - k * xi12 * n12; return f; } #endif
E. Skrip ball.h #include #include <sstream> #include "vect3.h" using namespace std; #ifndef BALL_H #define BALL_H struct ball { string label; int id; double m; double d; double q; vect3 r; vect3 v; vect3 a; ball(void); ball(string, int); ~ball(void); string strval(void); void setmdq(double, double, double); void setrva(vect3, vect3, vect3); }; // Define default constructor ball::ball(void) { label = "BALL"; id = 0; m = 0; d = 0; q = 0; r = vect3(); v = vect3(); a = vect3(); } // Define constructor with label and id ball::ball(string l, int i) { label = l; id = i; m = 0; d = 0; q = 0; r = vect3(); v = vect3(); a = vect3(); } // Define default destructor
122
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
ball::~ball(void) { label = ""; id = 0; m = 0; d = 0; q = 0; r = vect3(); v = vect3(); a = vect3(); } // Get values of ball in certain format string ball::strval(void) { stringstream ss; ss << "# Ball" << endl; ss << "LABEL\t " << label << endl; ss << "ID\t " << id << endl; ss << "MASS\t " << m << endl; ss << "DIAMTR\t " << d << endl; ss << "CHARGE\t " << q << endl; ss << "POST3D\t " << r.strval() << endl; ss << "VELO3D\t " << v.strval() << endl; ss << "ACCL3D\t " << a.strval(); return ss.str(); } // Set value of mass, diameter, charge void ball::setmdq(double mm, double dd, double qq) { m = mm; d = dd; q = qq; } // Set value of position, velocity, acceleration void ball::setrva(vect3 rr, vect3 vv, vect3 aa) { r = rr; v = vv; a = aa; } // Sistem Pusat Massa Banyak "ball" // Center of Mass (com) vect3 com(ball *pendulum, int l) { double mi; vect3 mri; for(int i = 0; i < l; i++) { mri = mri + pendulum[i].r * pendulum[i].m; mi = mi + pendulum[i].m; } return mri/mi; } // Velocity of Center of Mass (vcom) vect3 vcom(ball *pendulum, int l) { double mi; vect3 mvi;
123
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
for(int i = 0; i < l; i++) { mvi = mvi + pendulum[i].v * pendulum[i].m; mi = mi + pendulum[i].m; } return mvi/mi; } #endif
F. Skrip mdynamics.h /* mdynamics.h Library for 3-d molecular dynamics method Sparisoma Viridi | [email protected] 20160403 Create this library. */ #ifndef MDYNAMICS_H #define MDYNAMICS_H void void void void
intEuler(vect3&, vect3&, vect3, double); intEuler(ball&, double); intVerlet(vect3&, vect3&, vect3, double); intVerlet(ball&, double);
// Calculate numerical integration with Euler algorithm void intEuler(vect3& r, vect3& v, vect3 a, double dt) { v = v + a * dt; r = r + v * dt; } void intEuler(ball& Ball, double dt) { intEuler(Ball.r, Ball.v, Ball.a, dt); } // Calculate numerical integration with Verlet algorithm void intVerlet(vect3& r, vect3& v, vect3 a, double dt) { r = r + v * dt + 0.5 * a * dt * dt; v = v + a * dt; } void intVerlet(ball& Ball, double dt) { intVerlet(Ball.r, Ball.v, Ball.a, dt); } #endif
G. Skrip variasi.sh #!bash A=0.05 f=0.05 em=1 qi=1 ge=0.1 g++ sim.cpp -o rbl
124
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
#variasi amplitude E echo "------------------- Ini mulai variasi amplitude E" echo -e "#A_e \t f_e \t m \t q \t g \t\t====\t\t A_min \t\t A_max \t\t |A|rata2 \t\t A_rms" for A_e in 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 do var_A=$(./rbl $A_e $f $em $qi $ge 0 1e-4 50 100) echo -e "$A_e \t $f \t $em \t $qi \t $ge \t\t====\t\t $var_A" done #variasi frekuensi E echo "------------------- Ini mulai variasi frekuensi E" echo -e "#A_e \t f_e \t m \t q \t g \t\t====\t\t A_min \t\t A_max \t\t |A|rata2 \t\t A_rms" for f_e in 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 do var_f=$(./rbl $A $f_e $em $qi $ge 0 1e-4 50 100) echo -e "$A \t $f_e \t $em \t $qi \t $ge \t\t====\t\t $var_f" done #variasi m echo "------------------- Ini mulai variasi mass" echo -e "#A_e \t f_e \t m \t q \t g \t\t====\t\t A_min \t\t A_max \t\t |A|rata2 \t\t A_rms" for m in 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 do var_m=$(./rbl $A $f $m $qi $ge 0 1e-4 50 100) echo -e "$A \t $f \t $m \t $qi \t $ge \t\t====\t\t $var_m" done #variasi q echo "------------------- Ini mulai variasi muatan" echo -e "#A_e \t f_e \t m \t q \t g \t\t====\t\t A_min \t\t A_max \t\t |A|rata2 \t\t A_rms" for q in 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 do var_q=$(./rbl $A $f $em $q $ge 0 1e-4 50 100) echo -e "$A \t $f \t $em \t $q \t $ge \t\t====\t\t $var_q" done #variasi g echo "------------------- Ini mulai variasi gravitasi" echo -e "#A_e \t f_e \t m \t q \t g \t\t====\t\t A_min \t\t A_max \t\t |A|rata2 \t\t A_rms" for g in 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 do var_g=$(./rbl $A $f $em $qi $g 0 1e-4 50 100) echo -e "$A \t $f \t $em \t $qi \t $g \t\t====\t\t $var_g" done
H. Skrip plot_sek.gps
125
Komputasi Fisika 2: 5 Gerakan tali sebagai rantai granular ..
set term png size 600,500 font "Times, 20" set size 1,1 set style fill solid 1 set style arrow 1 head filled size screen 0.03,30,45 ls 2 set style arrow 2 nohead lc 1 lw 5 set object circle at 0,10 size 0.1 front fc rgb "red" fs set arrow nohead from 0,10 to 0.022438,9.5 as 2 set object circle at 0.022438,9.5 size 0.1 front fc rgb "red" fs set arrow nohead from 0.022438,9.5 to 0.0444148,9 as 2 set object circle at 0.0444148,9 size 0.1 front fc rgb "red" fs set arrow nohead from 0.0444148,9 to 0.0596654,8.49978 as 2 set object circle at 0.0596654,8.49978 size 0.1 front fc rgb "red" fs set arrow nohead from 0.0596654,8.49978 to 0.0873636,8.00012 as 2 set object circle at 0.0873636,8.00012 size 0.1 front fc rgb "red" fs set arrow nohead from 0.0873636,8.00012 to 0.106858,7.5001 as 2 set object circle at 0.106858,7.5001 size 0.1 front fc rgb "red" fs set arrow nohead from 0.106858,7.5001 to 0.126313,7.0001 as 2 set object circle at 0.126313,7.0001 size 0.1 front fc rgb "red" fs set arrow nohead from 0.126313,7.0001 to 0.135592,6.49984 as 2 set object circle at 0.135592,6.49984 size 0.1 front fc rgb "red" fs set arrow nohead from 0.135592,6.49984 to 0.157262,5.99998 as 2 set object circle at 0.157262,5.99998 size 0.1 front fc rgb "red" fs set arrow nohead from 0.157262,5.99998 to 0.161721,5.4997 as 2 set object circle at 0.161721,5.4997 size 0.1 front fc rgb "red" fs set arrow nohead from 0.161721,5.4997 to 0.156131,4.99946 as 2 set object circle at 0.156131,4.99946 size 0.1 front fc rgb "red" fs set arrow nohead from 0.156131,4.99946 to 0.159255,4.49923 as 2 set object circle at 0.159255,4.49923 size 0.1 front fc rgb "red" fs set arrow nohead from 0.159255,4.49923 to 0.132499,3.99975 as 2 set object circle at 0.132499,3.99975 size 0.1 front fc rgb "red" fs set arrow nohead from 0.132499,3.99975 to 0.107189,3.50023 as 2 set object circle at 0.107189,3.50023 size 0.1 front fc rgb "red" fs set arrow nohead from 0.107189,3.50023 to 0.0609776,3.00224 as 2 set object circle at 0.0609776,3.00224 size 0.1 front fc rgb "red" fs set arrow nohead from 0.0609776,3.00224 to 4.59483e-05,2.50586 as 2 set object circle at 4.59483e-05,2.50586 size 0.1 front fc rgb "red" fs set arrow nohead from 4.59483e-05,2.50586 to -0.081134,2.01241 as 2 set object circle at -0.081134,2.01241 size 0.1 front fc rgb "red" fs set arrow nohead from -0.081134,2.01241 to -0.189431,1.52421 as 2 set object circle at -0.189431,1.52421 size 0.1 front fc rgb "red" fs set arrow nohead from -0.189431,1.52421 to -0.335178,1.04589 as 2 set object circle at -0.335178,1.04589 size 0.1 front fc rgb "red" fs set arrow nohead from -0.335178,1.04589 to -0.526707,0.584009 as 2 set object circle at -0.526707,0.584009 size 0.1 front fc rgb "red" fs set object circle at 0.0193193,5.27378 size 0.1 front fc rgb "blue" fs set arrow from -3,4.5 to -3,4.5 as 1 set label "E(t) = 6.12323e-18" at -4.5,5 front font "Times,16" set label "t = 50" at -4,1 front font "Times,16" set xlabel "x" font "Times, 21" set xtics 1 font "Times, 16" set xrange [-5:5] set ylabel "y" font "Times, 21" set ytics 1 font "Times, 16" set yrange [0:10] set style fill solid 1 set output "draw-0100.png" plot 10 notitle w l lw 1 lc 1
126
Simulasi trayektori nanopartikel Au+ yang ditumbuhkan di dalam pengaruh medan listrik, dan medan magnet, di dalam vakum
6
Dewi Mustikasari | [email protected] Suci Khairani | [email protected] Moch. Wisnu Arif Sektiono | [email protected] Teknik penumbuhan film tipis material menggunakan prinsip electrospray dalam ruang vakum disimulasikan dengan menggunakan algoritma metode numeric Euler untuk menentukan kecepatan dan posisi partikel saat dideposisikan di atas substrat. Pengaruh medan magnet, medan listrik dan gesekan dengan gas nitrogen ditinjau sebagai parameter yang mempengaruhi hasil deposisi partikel. Variasi parameter dilakukan untuk medan magnet B, medan listrik E, dan kecepatan awal partikel v. Terdapat kebergantungan keadaan terhadap variasi parameter dan terdapat keadaan optimal untuk keadaan deposisi yang baik. Dari hasil simulasi didapatkan keadaan optimal pada v=1.21 m/s dan dengan nilai E dan B dalam keadaan minimal dan maksimal untuk keadaan deposisi yang disarankan.
6.1 Pendahuluan Teknologi deposisi dengan menggunakan electrospray merupakan salah satu metode deposisi yang dapat digunakan pada penumbuhan suatu film, seperti film anorganik untuk aplikasi sel surya [1], katoda pada baterai sekunder [2], film organik pada perangkat optoelektronik organik [3], dan pelapisan fotoresis pada silikon. Secara umum, electrospray merupakan metode aerolisasi yang melibatkan gaya tegangan permukaan dan listrik pada partikel ion yang melewati saluran kapiler penyemprot sehingga gradien medan elektrik muncul antara ujung kapiler dengan permukaan elektroda [4]. Jika gaya tegang permukaan dan listrik pada partikel yang berada di ujung saluran kapiler, partikel berada di dalam keadaan setimbang. Selain itu, ketidakstabilan kekentalan partikel mempermudah terjadinya penguraian partikel saat penyemprotan dan pemberian muatan yang tinggi. Dengan demikian, partikel dapat terevaporasi dan terdeposisi di atas suatu substrat yang dituju. Partikel yang bermuatan tinggi tersebut akan terdispersi dengan sendirinya (self-dispertion). Partikel tersebut dapat memilik ukuran yang sangat kecil. Pada kasus tertentu, partikel tersebut dapat mencapai ukuran nanometer. Muatan dan ukuran partikel tersebut dapat dikendalikan dengan variasi tegangan dan laju aliran rata-rata partikel yang diberikan. [5]. Partikel yang baik akan tersebar merata dan ukurannya terdistribusi juga merata
127
Komputasi Fisika 2: 6 Simulasi trayektori nanopartikel Au+ ..
[6]. Selain itu, diameter rata-rata partikel dapat dikontrol dengan menyesuaikan parameter deposisi yang diberikan [7]. Untuk mendapatkan pola deposisi yang optimum dengan menggunakan electrosrpay, beberapa parameter harus dioptimisasi. Di dalam makalah ini, tiga parameter akan dikaji dengan metode simulasi untuk memperoleh proses deposisi nanopartikel yang efektif di atas suatu substrat. Tiga parameter tersebut adalah medan listrik, medan magnetik, dan laju awal partikel. Partikel yang ditinjau adalah nanopartikel emas (Au+) yang dideposisi dengan metode electrospray. Di dalam makalah ini, lingkungan penumbuhan diasumsikan sebagai N2 dalam kondisi vakum yang sangat tinggi.
6.2 Teori Di dalam makalah ini, Au+ yang bermassa 2,73 x 10-19 kg [8] diasumsikan sebagai ion yang akan dideposisikan dalam chamber yang berisi gas N2 pada tekanan 10-8 Pa (~10-10 torr) [9]. Ion dilemparkan atau disemprotkan dengan vektor kecepatan awal. Di dalam kasus vakum yang sangat tinggi, udara di dalam chamber diasumsikan memiliki rapat massa ρ yang sangat kecil. Sebelum mencapai substrat, ion Au+ dipengaruhi oleh gaya gesekan udara Fb, gaya magnet FB, dan gaya listrik FE. Substrat tersebut berukuran 5 cm dari y = 25 cm hingga y = 30 cm. Skema alat deposisi ditunjukkan pada Gambar 6.1. Substrat dibuat pada sumbu vertikal dan lintasan yang ditempuh partikel merupakan lintasan trayektori yang dapat dianalisis dengan persamaan Hukum II Newton [10]
Gambar 6.1 Skema alat deposisi nanopartikel Au+.
Di dalam makalah ini, gerak yang ditinjau adalah gerak dua dimensi pada sumbu x dan y. Dengan demikian, gaya-gaya yang bekerja pada partikel yang disemprotkan dibagi ke dalam dua arah, yaitu arah x dan y. Total gaya yang bekerja berkorekspondensi dengan percepatan total partikel tersebut yang ditentukan dengan menggunakan Hukum II Newton [11]. Secara umum, total gaya yang bekerja pada partikel adalah
ur
∑F
r
i
= ma i
i
128
(6.1)
Komputasi Fisika 2: 6 Simulasi trayektori nanopartikel Au+ ..
Total gaya yang bekerja pada sumbu x adalah
∑F
x
= ma x
(6.2)
FBx + FEx - Fbx = ma x
(6.3)
Bqv y + qE x − bvx = m.a x
(6.4)
ax =
1 m
( Bqv
y
+ qE x − bvx )
(6.5)
Gerak dengan lintasan juga melibatkan posisi partikel arah y. Adapun analisis gaya yang digunakan dalam sistem pada sumbu y adalah:
∑F
= ma y
y
(6.6)
FBy + FEy − Fby = ma y
(6.7)
− Bqv x + qE y − bv y = ma y
(6.8)
1
(6.9) ( − Bqvx + qE y − bv y ) m Dengan nilai b merupakan koefisien gesek udara di dalam chamber. Koefisien gesek udara b dinyatakan dalam persamaan [11,12] ay =
b = 6πη r
(6.10)
η = 0.499 ρ vN λ
(6.11)
2
vN =
3RT
2
(6.12)
M
6.3 Metode numerik Metode yang digunakan dalam penelitian ini menggunakan metode numerik dari hukum II Newton pada persamaan (6.1). Dari persamaan (6.5) dan persamaan (6.9), diperoleh persamaan vektor percepatan
r a=
r r ( qE x + qv y B − bvx ) i + ( qE y + qvx B − bv y ) j m 1
(6.13)
Sedangkan besaran – besaran lain yang digunakan dalam alogaritma Euler [12] yaitu untuk menghitung kecepatan dan posisi partikel emas
v x ( t + ∆t ) = v x ( t ) + a x ( t ) ∆ t
129
(6.14)
Komputasi Fisika 2: 6 Simulasi trayektori nanopartikel Au+ ..
v y ( t + ∆t ) = v y ( t ) + a y ( t ) ∆t
(6.15)
Adapun posisi partikel dinyatakan dalam persamaan berikut
x ( t + ∆t ) = x ( t ) + v x ( t ) ∆ t
(6.16)
y ( t + ∆t ) = y ( t ) + v y ( t ) ∆ t
(6.17)
6.4 Algoritma Simulasi penumbuhan nanopartikel emas dua dimensi dilakukan dengan menggunakan alogaritma sebagai berikut ini sehingga diperoleh beberapa variasi medan listrik E, medan magnet B dan kecepatan v atau energi kinetik awal partikel nya K.
L1.
m, q, b?
L2.
ߙ, θ?
L3.
tbeg, tend, dt, Tdata
L4.
E, B, v0, K?
L5.
x0, y0 = 0,0
L6.
E x = E cos α , E y = E sin α a
L7.
v x = v0 cos θ , v y = v0 sin θ
L8.
t = tbeg.
L9.
1
a
x
( t ) = ( qE
x
+ qv
y
( t ) B − bv ( t ) ) x
m
L10.
1
a
y
( t ) = ( qE
y
− qv ( t ) B − bv ( t ) ) x
y
m
L11. L12. L13. L14.
v
x
( t + ∆t ) = v ( t ) + a ( t ) ∆t x
x ( t + ∆t ) = x ( t ) + v v
y
x
x
( t ) ∆t
( t + ∆t ) = v ( t ) + a ( t ) ∆t y
y ( t + ∆t ) = y ( t ) + v
L15.
t < tend → L9.
L16.
t, x, y
y
y
( t ) ∆t
130
Komputasi Fisika 2: 6 Simulasi trayektori nanopartikel Au+ ..
6.5 Hasil dan diskusi Parameter-parameter simulasi yang digunakan ditunjukkan pada Tabel 6.1 berikut. Nilai b dihitung dengan menggunakan parameter-parameter yang ditunjukkan pada Tabel 6.2. Untuk menumbuhkan partikel emas, batas minimal dan maksimal parameter E, B, dan v harus dioptimasi terlebih dahulu. Batas minimal dan batas maksimal nilai E untuk menumbuhkan substrat (B = 5.0, v = 1.21) ditunjukkan pada Gambar 6.2(a) dan Gambar 6.2(b). Gambar 6.2(a) dan Gambar 6.2(b) menunjukkan bahwa batas minimal dan maksimal nilai E yang sesuai untuk penumbuhan nanopartikel emas adalah 0 V/m hingga 4.1 V/m. Tabel 6.1 Parameter-parameter simulasi.
Symbol
Nilai
Code
E
−2.5 - 8.1 (V/m)
E
B
2 - 7 (T)
B
v
1,0 - 2,0 (m/s)
v0
-19
m
2.73 × 10
q
1,602 × 10
(kg)
-19 -19
b
4,11 × 10
θ
90°
α
90°
tbeg, tend, ∆t, Tdata
M
(C)
Q
(Ns/m)
B Teta Alfa
-4
-3
0, 1, 5 × 10 , 10 (s)
tbeg, tend, dt, Tdata
Tabel 6.2 Parameter-parameter untuk menghitung b.
Symbol
Nilai
Satuan
-20
ρ
1 × 10
vM
493,169
3
kg/m m/s 5
Meter
12
kg/(m.s)
λ
5.90 × 10
η
1,45 × 10
d
30
Nm
r
15
Nm
M
28.013
gr/mol
T
273.15
Kelvin
R
8.314
J/(mol.K)
131
Komputasi Fisika 2: 6 Simulasi trayektori nanopartikel Au+ ..
(a)
(b)
(c)
(d)
(e)
(f)
Gambar 6.2 Trayektori partikel yang ditumbuhkan: untuk variasi E pada (a) batas nilai minimal dan (b) batas nilai maksimal; untuk variasi B pada (c) batas nilai minimal dan (d) batas nilai maksimal; untuk variasi v pada (e) batas nilai minimal dan (f) batas nilai maksimal.
Batas minimal dan batas maksimal nilai B untuk menumbuhkan substrat (E = 0, v = 1.21) ditunjukkan pada Gambar 6.2(c) dan Gambar 6.2(d). Gambar 6.2(c) dan Gambar 6.2(d) menunjukkan bahwa batas minimal dan maksimal nilai B yang sesuai
132
Komputasi Fisika 2: 6 Simulasi trayektori nanopartikel Au+ ..
untuk penumbuhan nanopartikel emas adalah 3.55 T hingga 5 T. Batas minimal dan batas maksimal nilai v untuk menumbuhkan substrat (E = 0, B = 5) ditunjukkan pada Gambar 6.2(e) dan Gambar 6.2(f). Gambar 6.2(e) dan Gambar 6.2(f) menunjukkan bahwa batas minimal dan maksimal nilai B yang sesuai untuk penumbuhan nanopartikel emas adalah 1.21 m/s hingga 1.64 m/s, setara dengan 1.248 eV hingga 2.292 eV.
8
B (T)
6
4 B = 1.197 ln ( E + 2.300) + 3.422 |r|=0.785
2 -2
0
2 4 E (V/m)
6
8
Gambar 6.3 Diagram E-B untuk penumbuhan partikel emas pada rentang E dan B sesuai. Garis merah dan hijau berkorespondensi trayektori menuju y = 0.25 m dan y = 0.30 m.
Dengan menganalisis lebih lanjut, diagram E-B dapat ditunjukkan pada Gambar 6.3 untuk memperoleh batas-batas nilai E-B yang efektif untuk penumbuhan partikel emas pada energi kinetik awal partikel 1.248 eV. Masukan yang digunakan untuk membangun diagram E-B adalah berdasarkan pada Tabel 6.1. Pada Gambar 6.3, garis putus-putus menunjukkan batas samping yang masih dapat diperpanjang untuk rentang E dan B yang lebih luas.
6.6 Kesimpulan Trayektori partikel emas (Au+) yang ditumbuhkan pada substrat 5 cm sejauh 0.1 cm telah berhasil disimulasikan. Hasil simulasi menunjukkan adanya batas minimal dan maksimal variabel E, B, dan v supaya partikel ditumbuhkan pada substrat tersebut. Selain itu, diagram E-B untuk v = 1.21 m/s menunjukkan area E-B yang disarankan untuk penumbuhan nanopartikel Au+.
6.7 Referensi 1.
X. Hou, K. L. Choy, “Synthesis and Ccharacteristics of CuInS2 Films for Photovoltaic Application”, Thin Solid Films 480–481 (1), 13–18 (2005).
133
Komputasi Fisika 2: 6 Simulasi trayektori nanopartikel Au+ ..
2.
3.
4.
5.
6.
7.
8.
9.
10.
11. 12.
C. H. Chen, E. M. Kelder, M. J. G. Jak, J. Schoonman, “Electrostatic Spray Deposition of Thin Layers of Cathode Materials for Lithium Battery”, Solid State Ionics 86–88, 1301–1306 (1996). M. Barletta, A. Gisario, V. Tagliaferri, “Electrostatic Spray Deposition (ESD) of Polymeric Powders on Thermoplastic (PA66) Substrate”, Surf. Coat. Technol. 201 (1–2), 296–308 (2006). G. Taylor, “Disintegration of Water Drops in An Electric Field”. Proceedings of the Royal Society of London Series A: Mathematical Physical A, 280 (1382), 383–397 (1964). S. N. Jayasinghe, M. J Edirisinghe, D. Z. Wang, “Controlled Deposition of Nanoparticle Clusters by Electrohydrodynamic Atomization”, Nanotechnology 15, 1519–1523 (2004). P. Nemes, I. Marginean, A. Vertes, “Spraying Mode Effect on Droplet Formation and Ion Chemistry in Electrosprays”, Analytical Chemistry, 79 (8), 3105–3116 (2007). A. M. Ganan-Calvo, J. Dávila, A. Barrero, “Current and Droplet Size in The Electrospraying of Liquids”, Scaling laws. Journal of Aerosol Science, 28 (2), 249–275 (1997). Y. C. Yeh, B. Creran, V. M. Rotello, “Gold Nanoparticles: Preparation, Properties, and Application in Biotechnology”, Nanoscale 4, 1871-1880 (2012). H. J. M. Hanley, J. F. Ely, “The Viscosity and Thermal Conductivity Coefficient of Dilute Nitrogen and Oxygen”, Journal Chem Ref Data 2 (4), 734-754 (1973). N. Nazemifard, J. H. Masliyah, S. Bhattacharjee, “Particle Deposition Onto Micropatterned Charge Heterogeneous Substrate: Trayektori Analysis”, Journal of Colloid and Interface Science 293, 1-15 (2006). N. Marquardt, “Introduction to The Principles of Vacuum Physics”, Proceeding of Vacuum Technology, 1-24, (1999). H. J. Wei, H. M. Tang, “Numerical Methods for Differential Equations”, City University, Hong Kong, p.11, (2003).
6.8 Lampiran A. Keterangan penggunaan program dan skrip Tabel 6.3 Program dan skrip serta hasil keluarannya.
Program / Skrip
Piranti lunak
Keluaran
Lampiran
Gold-growth-bBE.cpp
C++
vf
B
Gold-growth-bBE-yx-E_min.gps
Gnuplot
Gambar 1.2(a)
C
Gold-growth-bBE-yx-E_max.gps
Gnuplot
Gambar 1.2(b)
D
Gold-growth-bBE-yx-B_min.gps
Gnuplot
Gambar 1.2(c)
E
134
Komputasi Fisika 2: 6 Simulasi trayektori nanopartikel Au+ ..
Tabel 6.4 Program dan skrip serta hasil keluarannya (lanjutan).
Program / Skrip
Piranti lunak
Keluaran
Lampiran
Gold-growth-bBE-yx-B_max.gps
Gnuplot
Gambar 1.2(d)
F
Gold-growth-bBE-yx-v_min.gps
Gnuplot
Gambar 1.2(e)
G
Gold-growth-bBE-yx-v_max.gps
Gnuplot
Gambar 1.2(f)
H
E-B.smp
Sma4Win
Gambar 1.3
-
B. Program Gold-growth-bBE.cpp /* Example of molecular dynamics method implementing Euler algorithm for the case of parabolic move with friction and electric field A task of Physical System Computing Adapted from ---------------------------Sparisoma Viridi | [email protected] Compile: g++ md-e-ff.cpp -o md-e-ff Execute: ./md-e-ff [options] ---------------------------20160505 Create this program. */ #include #include #include #include
using namespace std; int main(int argc, char *argv[]) { //Define program name const char *pname = "Gold growth in high-vacuum condition"; //Verbose usage if (argc < 9) { cout << "Usage: " << pname <<" "; cout << "[dt tbeg tend Tdata E B v0 teta alfa b m q ofile]"; cout << endl; cout << "dt\ttime step" << endl; cout << "tbeg\tbegin time" << endl; cout << "tend\tend time" << endl; cout << "Tdata\tsampling time of data (Tdata > dt)"; cout << endl; cout << "E\telectric field" << endl; cout << "B\tmagnetic field" << endl; cout << "v0\tinitial velocity" << endl;
135
Komputasi Fisika 2: 6 Simulasi trayektori nanopartikel Au+ ..
cout << "teta\tinitial degree of Au particle" << endl; cout << "alfa\telectric field direction" << endl; cout << "b\tfriction coefficient" << endl; cout << "m\tmass" << endl; cout << "q\tcharge" << endl; cout << "ofile\toutput file" << endl; return 1; } // Get all arguments double dt = atof(argv[1]); double tbeg = atof(argv[2]); double tend = atof(argv[3]); double Tdata = atof(argv[4]); double E = atof(argv[5]); double B = atof(argv[6]); double v0 = atof(argv[7]); double teta = atof(argv[8]); double alfa = atof(argv[9]); double b = atof(argv[10]); double m = atof(argv[11]); double q = atof(argv[12]); const char *ofn = argv[13]; // Define iteration parameters int Nt = 1 + (int) floor((tend - tbeg) / dt); int Ndata = 1 + (int) floor(Tdata / dt); // Define double rx double ry double Ex double Ey double vx double vy
motion variables and electric field = 0; = 0; = E*cos(3.14159*alfa/180); = E*sin(3.14159*alfa/180); = v0*cos(3.14159*teta/180); = v0*sin(3.14159*teta/180);
// Open output file ofstream fout; fout.open(ofn); // Display data header fout << "# t\trx\try" << endl; // Perform iteration int idata = 0; for(int it = 0; it < Nt; it++) { // Calculate time double t = tbeg + it * dt; // Watch counter for displaying data if(idata == (Ndata - 1)) { idata = 0; } //Display data only for certain period if(idata == 0) { fout << t << "\t"; fout << rx << "\t";
136
Komputasi Fisika 2: 6 Simulasi trayektori nanopartikel Au+ ..
fout << ry << endl; } // vx vy rx ry
Calculate motion variable using Euler algorithm = vx + ((q*Ex/m) + (q*vy*B/m) - (b*vx/m)) * dt; = vy + ((q*Ey/m) - (q*vx*B/m) - (b*vy/m)) * dt; = rx + vx * dt; = ry + vy * dt;
// Increase counter for displaying data idata++; } // Close output file fout.close(); // Terminate program with success state return 0; }
C. Skrip Gnuplot Gold-growth-bBE-yx-E_min.gps /* set set set set set set set set set
term png enhanced output "3. E_min.png" xtics 0.02 xrange [0:0.1] ytics 0.05 yrange [0:0.35] grid xlabel "{/Times-Italic x} {/Oblique (m)}" ylabel "{/Times-Italic y} {/Oblique (m)}"
plot "E_min.txt" u 2:3 every :::0::0 notitle \ w lp pt 1.5 ps 1.5 lw 1, 0.002 lw 0 lc 0 notitle
D. Skrip Gnuplot Gold-growth-bBE-yx-E_max.gps /* set set set set set set set set set
term png enhanced output "4. E_max.png" xtics 0.02 xrange [0:0.1] ytics 0.05 yrange [0:0.35] grid xlabel "{/Times-Italic x} {/Oblique (m)}" ylabel "{/Times-Italic y} {/Oblique (m)}"
plot "E_max.txt" u 2:3 every :::0::0 notitle \ w lp pt 1.5 ps 1.5 lw 1, 0.002 lw 0 lc 0 notitle
E. Skrip Gnuplot Gold-growth-bBE-yx-B_min.gps /* set term png enhanced set output "5. B_min.png"
137
Komputasi Fisika 2: 6 Simulasi trayektori nanopartikel Au+ ..
set set set set set set set
xtics 0.02 xrange [0:0.1] ytics 0.05 yrange [0:0.35] grid xlabel "{/Times-Italic x} {/Oblique (m)}" ylabel "{/Times-Italic y} {/Oblique (m)}"
plot "B_min.txt" u 2:3 every :::0::0 notitle \ w lp pt 1.5 ps 1.5 lw 1, 0.002 lw 0 lc 0 notitle
F. Skrip Gnuplot Gold-growth-bBE-yx-B_max.gps /* set set set set set set set
term png enhanced output "6. B_max.png" xtics 0.02; set xrange ytics 0.05; set yrange grid xlabel "{/Times-Italic ylabel "{/Times-Italic
[0:0.1] [0:0.35] x} {/Oblique (m)}" y} {/Oblique (m)}"
plot "B_max.txt" u 2:3 every :::0::0 notitle \ w lp pt 1.5 ps 1.5 lw 1, 0.002 lw 0 lc 0 notitle
G. Skrip Gnuplot Gold-growth-bBE-yx-v_min.gps /* set set set set set set set set set
term png enhanced output "1. v_min.png" xtics 0.02 xrange [0:0.1] ytics 0.05 yrange [0:0.35] grid xlabel "{/Times-Italic x} {/Oblique (m)}" ylabel "{/Times-Italic y} {/Oblique (m)}"
plot "v_min.txt" u 2:3 every :::0::0 notitle \ w lp pt 1.5 ps 1.5 lw 1, 0.002 lw 0 lc 0 notitle
H. Skrip Gnuplot Gold-growth-bBE-yx-v_max.gps /* set set set set set set set set set
term png enhanced output "2. v_max.png" xtics 0.02 xrange [0:0.1] ytics 0.05 yrange [0:0.35] grid xlabel "{/Times-Italic x} {/Oblique (m)}" ylabel "{/Times-Italic y} {/Oblique (m)}"
plot "v_max.txt" u 2:3 every :::0::0 notitle \ w lp pt 1.5 ps 1.5 lw 1, 0.002 lw 0 lc 0 notitle
138
Pengaruh fraksi volume, tekanan udara, dan diameter nozzle dalam gerak roket air
7
Fairusy Fitria H. | [email protected] Dian Fitrasari | [email protected] Rizki Amaliah | [email protected] Farehah Mohammed | [email protected] Kajian termodinamika, fisika mekanika dan algoritma integrasi numerik Euler merupakan analisis standar perumusan roket air dalam paper ini. Perubahan tekanan yang dialami oleh roket bersifat adiabatik hingga tekanan udara roket mencapai tekanan udara normal ( Patm ). Hukum Bernouli berperan dalam penentuan kecepatan bahan bakar yang keluar dari nozzle. Sedangkan hukum II Newton menjadi dasar analisis gerak roket air yang selanjutnya didefinisikan oleh algoritma Euler dalam perhitungan numerik. Variasi parameter yang ditentukan dalam paper ini yaitu fraksi volume air-udara f, tekanan udara mula-mula Pud,0 dan diameter nozzle d n . Selanjutnya berdasarkan hasil data yang didapatkan, akan dijelaskan pengaruh variasi ketiga parameter terhadap gerak roket air.
7.1 Pendahuluan Apabila dicermati, kemajuan teknologi yang telah tercapai selama ini merupakan hasil dari pengembangan fenomena-fenomena fisika sederhana. Salah satu aplikasi teknologi tersebut ialah roket. Roket merupakan kajian astrofisika yang selalu menarik untuk dibahas. Pengembangan roket ruang angkasa diawali dengan pendekatan roket-roket sederhana yang telah dikembangkan sebelumnya, seperti roket air. Prinsip dasar penggunaan roket air ialah dengan mengeluarkan sejumlah volume air dari nozzle roket yang juga diartikan perbedaan tekanan udara sebagai suplai energi untuk roket [1]. Sering kali, banyak anggapan yang keliru terkait peranan roket air yang sebagai mainan [2]. Faktanya, deskripsi semua variabel fisika yang terlibat pada gerak roket air cukup kompleks dan telah digunakan dalam beberapa dekade untuk mengispirasi siswa mempelajari ilmu fisika dan terapannya [3-4]. Pemodelan roket air dilakukan untuk mengetahui besaran-besaran fisis yang bekerja pada gerak roket.
7.2 Teori Badan utama roket biasanya terbuat dari bahan botol plastik yang dimodifikasi bentuknya sedemikian rupa sehingga meminimalkan besarnya hambatan udara. Bahan
139
Komputasi Fisika 2: 7 .. gerak roket air
bakar utama roket air ialah air yang diisikan ke dalam badan roket dan sejumlah udara yang menempati sisa badan roket. Fraksi volume f untuk variasi parameter didefinisikan sebagai berikut :
f ≡ dengan
Vair , V0
(1)
Vair adalah volum air dan V0 adalah volum botol kosong.
Dalam kajian ini, penentuan variasi nilai f maksimum dibatasi hanya sampai 0.71. Hal ini dikarenakan apabila volume botol terisi hampir penuh oleh air (f tinggi) akan menyebabkan besarnya massa jenis udara yang ada di botol sesaat setelah seluruh air keluar lebih kecil daripada massa jenis udara di atmosfer. Dengan demikian penentuan fraksi maksimum bergantung pada besarnya tekanan udara awal dalam roket.
Gambar 7.1 Menunjukkan skema representasi roket air dengan beberapa variabel utama yang teridentifikasi. [5]
Dalam paper ini, lintasan gerak roket akan dikelompokkan menjadi 4 (empat) fasa, yaitu : 1. Fase 1 – Jika tabung peluncur digunakan, maka akan dihasilkan kecepatan awal akibat perbedaan tekanan udara dengan tekanan atmosfer dan adanya energi oleh panjang tabung peluncur ( t 0 dihitung tepat saat roket lepas dari ujung tabung peluncur).
140
Komputasi Fisika 2: 7 .. gerak roket air
2. Fase 2 – Air yang dikeluarkan berperan sebagai bahan bakar roket, memberikan gaya dorong yang kemudian mempercepat roket. 3. Fase 3 – Udara yang dikeluarkan berperan sebagai bahan bakar roket setelah air di dalam roket kosong, memberikan gaya dorong yang kemudian mempercepat roket. 4. Fase 4 – Roket tidak memiliki gaya dorong lalu melintasi ketinggian maksimumnya dan kemudian jatuh ke tanah. Pada pembahasan ini diasumsikan tidak terdapat sirip (fin) yang terlepas dan pesawat tidak memakai parasut. Oleh karena itu massa roket yang dihitung tanpa massa air dan udara tidak akan berubah. Pada fase awal, perlu didefinisikan jari-jari nozzle rn dan luas permukaan nozzle An , seperti yang dituliskan dalam Persamaan (2) dan (3).
rn =
dn 2
(2) 2
An = πrn
2
πd d = π n = n 4 2
Selain itu diperhitungkan pula jari-jari roket
rr =
2
(3)
rr dan luas permukaan roket Ar .
dr 2
(4) 2
d d 2 Ar = π (rr ) = π r = π . r 4 2
2
(5)
Massa Air Massa air mula-mula dalam botol dengan
ρ air
mair,0 dapat didefinisikan seperti Persamaan (6)
sebagai massa jenis air dan
Vr sebagai volum roket. Merujuk pada
variabel yang digunakan, maka dalam paper ini besarnya massa bergantung pada nilai fraksi yang dipilih.
mair,0 = ρ air fVr
(6)
Laju Alir Air Pada kasus ideal, laju alir air melewati nozzle dapat dihitung menggunakan persamaan Bernoulli yang didasarkan pada kesetimbangan energi disekitar nozzle dan “energi tekan” berubah menjadi “energi kinetik.” Asumsi utama persamaan Bernoulli ialah fluida tidak dapat dimampatkan (yang benar untuk air). Persamaan Bernoulli dimodifikasi menjadi:
141
Komputasi Fisika 2: 7 .. gerak roket air
∆P +
1 ρ∆(v )2 + ρg∆h = 0 2
(7)
Perbedaan tinggi melintang nozzle diabaikan, sehingga persamaan Bernoulli secara sederhana menjadi:
∆P
ρ Perbedaan tekanan
+
( )
1 ∆ v2 = 0 2
(8)
∆P merupakan tekanan udara Pud dikurangi tekanan atmosfer
Patm relatif terhadap kerangka acuan botol, sedangkan kecepatan permukaan air dalam botol dapat diabaikan, sehingga Persamaan (8) secara sederhana menjadi
Pud − Patm
ρ atm
+
(
)
1 2 0 − vair =0 2
(9)
Persamaan (9) dapat diselesaikan secara eksplisit untuk kecepatan bahan bakar air yang keluar dari mulut botol vair = vex .
vex =
2 ⋅ (Pud − Patm )
ρ air
(10)
Ketika efek gesekan dimasukkan, persamaan ini menjadi:
vex = C
2 ⋅ (Pud − Patm )
ρ air
(11)
dimana C merupakan koefisien nozzle, yang bernilai kurang dari 1.0. Nilai C harus ditetapkan secara eksperimental dan bergantung pada faktor-faktor seperti kekasaran permukaan dan bentuk mulut botol. Gambar 7.2 menggambarkan nilai khusus koefisien nozzle berdasarkan geometri nozzle. Karena tidak terdapat data eksperimen, maka nilai koefisien C yang diambil didasarkan pada bentuk leher nozzle yang paling mendekati, yaitu 0.98.
Gambar 7.2 Koefisien keluaran nozzle bergantung pada geometri nozzle [6].
142
Komputasi Fisika 2: 7 .. gerak roket air
Pada sembarang waktu sesaat, nilai massa air yang keluar dari mulut botol
dmair dt
dapat dihitung dengan:
dmair = ρ air An vex dt
= ρ air AnC 2 = CAn 2 ρ air Pada fase 2
Pud − Patm
ρ air Pud − Patm
ρ air
(12)
vex merupakan vair dan fase 3 merupakan vudara .
Volume Udara Volume udara mula-mula
Vud,0 didefinisikan sebagai : Vud , 0 = (1 − f )Vr
(13)
Massa Udara Melalui perbandingan tekanan udara pada gas ideal, massa udara mula-mula mud,0 dapat dituliskan sebagai berikut :
mud,0 = ρ atmVud,0 dengan
Pud,0 Patm
(14)
Pud,0 sebagai tekanan udara mula-mula.
Tekanan Udara Karena sistem mengalami proses adiabatis, artinya tidak terjadi perubahan kalor, sehingga persamaan tekanan gas ideal yang digunakan selama proses keluarnya air yaitu
V Pud = Pud,0 0 Vud dengan
γ
(15)
V0 sebagai volum mula-mula, Vud sebagai volum udara dan γ sebagai
konstanta adiabatik. Dimana
V0 = Vud,0 dan besarnya pertambahan volume udara
sebanding dengan besarnya air yang berkurang atau
dV = An .vex
143
(16)
Komputasi Fisika 2: 7 .. gerak roket air
Apabila besarnya volume udara sudah mencapai volume roket ( Vudara
= Vr ), maka
tekanan udara di dalam botol akan dengan cepat menyesuaikan diri terhadap lingkungan untuk mencapai kesetimbangan. Hal ini dilakukan dengan melakukan ekspansi volume udara ke luar roket. Seperti tampak pada Gambar 1.3, terdapat volum bayangan yang memfasilitasi pertambahan volume udara hingga Pud = Patm dan
ρ ud = ρ atm . Sejumlah volume udara yang berekspansi keluar dari volume roket
diasumsikan sebagai pertambahan volume dV. Dengan demikian massa udara akhir dapat didefinisikan sebagai
mud, f = ρ atm .Vr
(17)
Selama proses ekspansi tersebut, perumusan perubahan tekanan udara sama seperti Persamaan (15), namun besarnya V0 = Vr , dan pertambahan volume udara akan terus berlangsung hingga tekanan udara sama dengan tekanan udara normal ( Pud atau massa akhir udara seperti Persamaan (17). Namun demikian
= Patm )
vex dalam
Persamaan (16) akan menjadi kecepatan bahan bakar yang diakibatkan oleh sejumlah udara yang keluar, seperti Persamaan (18). Dorongan udara Sesaat setelah seluruh air keluar, tekanan udara dan densitas udara di dalam botol lebih tinggi dari lingkungan. Seperti yang telah diuraikan bahwa udara akan mulai bebas berekspansi secara cepat sehingga menghasilkan tambahan dorongan. Secara umum ekspansi yang terjadi mirip dengan yang terjadi pada air, sehingga persamaan kecepatan juga dirumuskan sebagai berikut
vex = 2
Pud − Patm
ρ atm V r o k e t
(18)
∆V
Gambar 7.3 Model volume udara bayangan pada roket untuk mencapai sistem yang stabil (sama dengan udara normal).
144
Komputasi Fisika 2: 7 .. gerak roket air
Massa Total Massa total roket air
mt merupakan jumlah massa roket kosong mr , massa bahan bakar
mair , dan massa bahan bakar udara mud , seperti dirumuskan pada Persamaan
(19).
mt = mud + mair + mr
(19)
Gaya Dorong pada Roket Gaya dorong
Ft diakibatkan oleh adanya sejumlah massa yang keluar dari nozzle
roket. Perumusan matematis
Ft akan ditentukan oleh tiap-tiap kondisi fase sistem
roket . Gaya Dorong Fase 1 Gambar 1.4(a) menunjukkan bejana yang tertutup secara menyeluruh pada tekanan internal yang bekerja pada dinding. Karena arah gaya mengimbangi dinding, maka kesetimbangan akan tercapai dan bejana tidak berpindah. Berbeda halnya, pada gambar 7.4(b), yang salah satu salah satu sisi dindingnya terbuka, sehingga menyebabkan gaya tidak setimbang. Jika tabung peluncur digunakan selama fase 1, gaya yang bekerja pada roket dari gaya tidak seimbang, gaya dorong awal dipengaruhi adanya tabung peluncur sebagai berikut:
Ft = (Pud − Patm ) An (a)
(20) (b)
An Gambar 7.4 Tekanan bekerja pada dinding wadah. (a) Permukaan yang sempurna tertutup. (b) Permukaan terbuka. (Catatan: Panah menunujukkan tekanan yang diterima (Pnet) bekerja pada dinding, yang merupakan tekanan internal dikurangi tekanan eksternal. Gaya dari bagian depan air hidrostatik diabaikan karena kecil) [5].
145
Komputasi Fisika 2: 7 .. gerak roket air
Gaya Dorong Fase 2 dan 3 Perumusan analisis perubahan momentum dalam kasus ini cukup berbeda, disebabkan adanya perubahan massa. Dengan demikian, diperlukan analisis lebih lanjut dalam prinsip konservasi momentum linier pada sistem. Hal ini ditunjukkan dengan ilustrasi Gambar 7.5.
v→
w → ∆m
m
2
1 +∆v v → m ∆m
1 ∆m dan kecepatan w bertumbukan dengan partikel massa m dan menempel. Setelah proses ini, massa partikel menjadi m + ∆m dan berpindah dengan kecepatan v + ∆v . [9]
Gambar 7.5 Massa partikel
Besar perubahan momentum linier sistem terhadap waktu dapat dirumuskan :
∆p ∆v ∆m ∆m =m + ∆v − ( w − v) (21) ∆t ∆t ∆t ∆t Dengan menerapkan limit ∆t → 0 , ∆m → 0 , dan ∆v → 0 , maka Persamaan (21) menjadi :
F=
dp dv dm ( w − v) =m − dt dt dt
Untuk sistem yang bergerak dan mengalami pengurangan massa,
(22)
dm < 0 , maka dt
didapatkan persamaan sebagai berikut :
dv dm =F− ( w − v) dt dt d dm F = − (mv) − w dt dt
m
146
(23)
Komputasi Fisika 2: 7 .. gerak roket air
Dari asumsi ilustrasi serta perumusan di atas maka gaya dorong
Ft pada fase 2 dan 3
dituliskan sebagai berikut :
dmair vair dt dm Ft = − ud vud dt
Ft = −
dimana
(24)
(25)
vair merupakan laju keluarnya air dari roket (Fase 2) dan vud merupakan laju
keluarnya udara dari roket (Fase 3). Gravitasi Gaya gravitasi
Fg diinterpretasikan sebagai gaya akibat percepatan lokal gravitasi,
seperti persamaan berikut :
Fg = − mt g
(26)
dimana g = 9.81 m/s2 = 9.81 N/kg. Hambat/Gesek Gaya hambat
Fd ditentukan oleh persamaan berikut :
1 v Fd = − Cd ρ atm Ar vr2 r 2 vr Koefisien hambatan udara besarnya
ρ atm
(27)
Cd untuk roket adalah sebesar 0.70 [4]. Sedangkan
merupakan konstanta kerapatan udara pada suhu kamar yaitu 1.225
3
kg/m . Tanda minus (-) menunjukkan bahwa gaya hambat selalu bekerja berlawanan arah dengan kecepatan roket. Gaya total (
∑ F ) pada Roket
Gambar 1.1 menunjukkan selama kenaikan, gaya gravitasi gaya total
Ft bekerja pada arah positif, sedangkan
Fg dan gaya hambat Fd bekerja pada arah negatif. Selama kenaikan,
∑ F bekerja pada arah positif. Sedangkan, saat roket mulai turun F
t
=0
sehingga gaya yang bekerja hanya gravitasi yang arahnya ke bawah dan gaya hambat yang berarah ke atas. Karena
Fg > Ft , sehingga
∑ F bekerja pada arah bawah.
Persamaan dibawah mengungkapkan hukum II Newton secara umum, dimana jumlah gaya total merupakan jumlah seluruh gaya yang bekerja pada benda.
∑F = F + F t
147
g
+ Fd
(28)
Komputasi Fisika 2: 7 .. gerak roket air
Percepatan Percepatan roket sebanding dengan jumlah seluruh gaya yang bekerja pada benda
∑F
dibagi massa total
mt , seperti diungkapkan pada Persamaan (29). ar =
∑F
(29)
mt
Fase 1 Jika tabung peluncur tidak digunakan, kecepatan roket mula-mula roket
vr ,0 dan posisi
h adalah
Jika tabung peluncur sepanjang
vr ,0 = 0
(30)
h=0
(31)
Lt digunakan, maka posisi roket saat t 0 menjadi h = Lt
Sedangkan besarnya kecepatan roket saat
(32)
t 0 (saat roket lepas dari ujung tabung
peluncur) ditentukan dengan mengalirkan kesetimbangan energi disekitar sistem tertutup, seperti yang digambarkan pada Gambar 7.6.
Gambar 7.6 Roket selama Fase 1 [5] .
∆Ek + ∆E p + ∆U = Win − Wout + Qin − Qout
(33)
Pada kasus ini diasumsikan terjadi proses ekspansi bebas karena tidak terjadi perubahan suhu, sehingga perubahan energi dalam ∆U nol dan usaha pada output
Wout nol. Selain itu, tidak adanya transfer panas yang melintasi batasan sistem, maka
148
Komputasi Fisika 2: 7 .. gerak roket air
kalor input
Qin dan kalor output Qout juga nol.
Keseimbangan energi secara
sederhana menjadi :
∆Ek + ∆E p = Win
(34)
Dengan definisi umum energi kinetik dan energi potensial serta usaha, Persamaan (34) dapat ditulis menjadi :
1 mt vr2 + mt gLt = Ft Lt 2 Gaya dorong
(35)
Ft Persamaan (35) sama dengan gaya dorong yang diakibatkan oleh
tabung peluncur seperti Persamaan (20). Dengan mengasumsikan bahwa tidak ada air yang hilang selama fase 1, sehingga Persamaan (35) menjadi :
1 mt vr2 + mt gLt = (Pud − Patm )An Lt 2
(36)
secara eksplisit akan didapatkan besarnya kecepatan roket
vr =
2[(Pud − Patm )An Lt − mt gLt ] mt
(37)
Ini merupakan kecepatan akhir untuk fase 1, yang merupakan kecepatan awal untuk fase 2
vr , 0 =
2[(Pud,0 − Patm )An Lt − mt gLt ] mt
(38)
Fase 2, 3, dan 4 Karena kompleksitas persamaan, tidak terdapat solusi yang tepat pada fase 2, 3, dan 4. Pada fase ini, untuk menentukan lintasan roket, program komputer dibtuhkan untuk mengerjakan perhitungan numerik.
7.3 Metode numerik Berdasarkan hukum II Newton
∑ F = ma
r
(39)
Sehingga untuk menentukan percepatan roket :
ar =
∑F
m Berdasarkan definisi persamaan percepatan ar :
149
(40)
Komputasi Fisika 2: 7 .. gerak roket air
dv ∆v v i − v i−1 (41) ≅ = ar ≡ dt ∆t t i − t i−1 Berdasarkan definisi, interval waktu ∆t merupakan waktu yang telah dilewati dari i −1 i waktu sebelumnya t ke waktu selanjutnya t : ∆t ≡ t i − t i−1 t =t i
i −1
(42)
+ ∆t
(43)
Maka, persamaan kecepatan dapat dituliskan sebagai berikut:
v i = v i−1 + a∆t h =h i
i −1
(44)
+ v ∆t i
(45)
dan perumusan untuk massa yaitu: i
dm − a ∆t dt
(46)
i i −1 mud = mud − ρ ud An v∆t
(47)
m i−1 − mai V n = V n−1 + a ρ a
(48)
m =m i a
i −1 a
Untuk volume udara:
7.4 Algoritma Simulasi roket air dibagi dalam empat fase perubahan gerak yang menggunakan algoritma berikut ini untuk memperoleh ar , vr dan h . L0.
Mulai
L1.
Definisi variable-variabel :
L2.
t beg , t end , dt , Tdata
L3.
Parameter input yang digunakan :
f , Pud,0 , dan d n
d r , C , C d , g , Lt , m r , Vr , Patm , ρ air ,
ρ atm , γ L4.
Konversi besaran input ke dalam nilai besaran yang akan digunakan
An =
πd n 2
,
Ar = πd r
2
,
4 4 Vud,0 = (1 − f ) ∗ Vr , mud,0 = ρ atm ∗ f ∗ Vr , mair,0 = ρ air ∗ f ∗ Vr
150
Komputasi Fisika 2: 7 .. gerak roket air
L5.
Definisi parameter dalam gerak roket (hk.II Newton) :
dmair = dmud = dVud = dmex =0, Vud = Vud,0 , mud = mud,0 , mair = mair,0 m t = mr + mair + mud , v r ,0 = 2[(Pud , 0 − Patm )× An − m t × g ]Lt
V P0 = Pud,0 , V0 = Vud,0 , ρ ex = ρ air ; vex =0, Pud = P0 × 0 Vud
γ
Fg = − m t ∗ g , Fd , Fg , Ft = Fg + Ft + Fd , a r = ∑ F / mt L6.
h = Lt , vr = vr , 0 F
L7.
t = t beg
L8.
dmair = dmex ; P0 = Pud,0 ; V0 = Vud,0 ; ρ ex = ρ air
L9.
L10.
vex = C
2[Pud − Patm ]
ρ ex
;
dmex = C * An * ρ ex * vex ; dVud = An * vex γ
V Vud = Vud + dVud * dt ; Pud = P0 × 0 ; mair = mair − dmair * dt ; Vud mud = mud − dmud * dt ; mt = mair + mud + mr ; Fg = −mt * g ;
1 v Fd = − Cd ρ atm Ar vr2 r ; Ft = dmex * vex ; 2 vr
∑F = F
g
+ Fd + Ft ;
ar = ∑ F mt L11.
vr = vr + ar * dt ; h = h + vr * dt
L12.
mair > 0 L8
L13.
γ
mair = 0 ;
dmair = 0 ;
V P0 = Pud,0 × ud,0 , dmud = dmex ; V0 = Vr ; Vr
ρ ex = ρ atm
151
Komputasi Fisika 2: 7 .. gerak roket air
L14.
L15.
vex = C
2[Pud − Patm ]
ρ ex
; dmex
= C * An * ρ ex * vex ; dVud = An * vex γ
V Vud = Vud + dVud * dt ; Pud = P0 × 0 ; Vud mud = mud − dmud * dt ; mt = mud + mr ;
1 v Fd = − Cd ρ atm Ar vr2 r ; Ft = dmex * vex ; 2 vr
Fg = −mt * g ;
∑F = F
g
+ Fd + Ft ;
ar = ∑ F mt L16.
vr = vr + ar * dt ; h = h + vr * dt
L17.
mud > ρ atm * Vr or Pud > P atm L13
L18.
mair = 0 ; dmair = 0 ; dmud = 0 ;
dmex = 0 ; Ft = 0 ;
vex = 0 ;
mud = ρ atm * Vr L19.
Vud = Vud ; Pud = Patm mt = mud + mr Fg = −mt * g ;
1 v Fd = − Cd ρ atm Ar vr2 r 2 vr Ft = 0 ;
∑F = F
g
+ Fd ; ar = ∑ F mt
L20.
vr = vr + ar * dt ; h = h + vr * dt
L21.
h > 0 L8
L22.
Selesai
7.5 Hasil dan diskusi Optimasi nilai dt (time step) diperlukan untuk mendapatkan tingkat akurasi data yang baik. Oleh karena itu perlu dilakukan perbandingan data dari program yang dikembangkan dengan hasil numerik dengan data lain atau data percobaan sebagai acuan. Dalam hal ini data acuan yang digunakan yaitu data numerik oleh Kian [4], karena asumsi dan sistem fisis yang digunakan tidak jauh berbeda. Parameter input dalam menentukan dt ditunjukkan seperti pada Tabel 7.1. Hasil data yang diperoleh dalam menentukan hubungan antara gaya yang bekerja pada roket terhadap waktu tempuh oleh Kian [4] ditunjukkan pada Gambar 7.7(a) dan 7.8(a).
152
Komputasi Fisika 2: 7 .. gerak roket air
Apabila dibandingkan dengan data hasil program, seperti pada Gambar 7.7(b) dan 7.8(b), maka distribusi gaya total dan distribusi percepatan mendekati grafik acuan saat pemilihan dt ≤ 0.0001, sehingga saat dt = 0.0001 data mulai bersifat konvergen. Dengan demikian dt yang digunakan dalam program yaitu 0.0001. Tabel 7.1 Parameter Input Penentuan dt.
Simbol
Pud,0 dn dr dt
Nilai 600000 0.022 0.09 0.1 0.01 0.001 0.0001 0.00001
Satuan Pa m m s
(a)
(b)
Gambar 7.7 (a) Grafik hubungan gaya total roket terhadap waktu [4] (b) Grafik hubungan gaya total yang bekerja pada roket terhadap waktu dengan program.
153
Komputasi Fisika 2: 7 .. gerak roket air
(a)
(b)
Gambar 7.8 (a) Grafik hubungan percepatan roket terhadap waktu [4] (b) Grafik hubungan percepatan roket terhadap waktu dengan program.
Setelah fiksasi nilai dt didapatkan, langkah selanjutnya yaitu membandingkan gaya, percepatan, dan ketinggian roket pada tiap variasi data. Parameter-parameter simulasi yang digunakan diberikan dalam Tabel 7.2 dan Tabel 7.3. Gambar 7.9, 7.10, dan 7.11 menunjukkan variasi diameter nozzle yaitu 0.013 cm, 0.016 cm, 0.019 cm dan 0.022 cm saat Pud,0 = 600 kPa dan f = 0.3 dalam grafik F(t), a(t) dan h(t).
154
Komputasi Fisika 2: 7 .. gerak roket air
Tabel 7.2 Parameter Input Konstan.
Simbol g Patm ρatm ρair
Nilai Satuan 9.8066565 m/s2 101325 Pa 1.225 kg/m3 1000 kg/m3 1,4 γ C 0.98 CD 0.7 0.09 m dr 0.0015 m3 Vr 0.214 kg m0 * CD bukan nilai taksiran tetapi lebih baik dipilih secara acak untuk menunjukkan efeknya pada hasil simulasi Tabel 7.3 Parameter Input Variabel.
Simbol
Pud,0 dn
F
Nilai 400000 600000 800000 0.013 0.016 0019 0.022 0.1 0.4 0.7
Satuan Pa
m
-
Berdasarkan Gambar 7.9 semakin besar nozzle maka laju berkurangnya air pun juga akan semakin besar. Hal ini menyebabkan waktu pengosongan air jauh lebih cepat. Hal serupa juga berlaku untuk laju berkurangnya massa udara, karena semakin besar nozzle akan menyebabkan sistem lebih cepat menyesuaikan diri dengan kondisi lingkungan. Namun demikian, gaya total maksimum yang diberikan pada ketiga ukuran nozzle yang berbeda terjadi sesaat setelah roket terlepas dari tabung peluncur. Gambar 1.9 juga mengungkapkan bahwa dengan nozzle yang lebih besar, roket akan mengalami fasa perlambatan lebih dulu karena gaya dorong akibat air dan udara bekerja lebih singkat.
155
Komputasi Fisika 2: 7 .. gerak roket air
Gambar 7.9 Gaya F sebagai fungsi variasi diameter nozzle dn tiap waktu t
Gambar 7.10 mendukung hasil data pada Gambar 7.9. Terlihat bahwa sketsa grafik variasi percepatan roket tidak jauh berbeda dengan sketsa gaya F. Hal ini dikarenakan terdapat hubungan antara percepatan roket dan gaya seperti pada Persamaan (40).
Gambar 7.10 Percepatan roket ar sebagai fungsi variasi diameter nozzle dn tiap waktu t.
156
Komputasi Fisika 2: 7 .. gerak roket air
Seperti halnya Gambar 7.9, percepatan maksimum juga didapatkan saat fase 1 berlangsung. Percepatan pada fase selanjutnya diakibatkan oleh adanya gaya dorong air dan udara, sampai pada waktu tertentu roket akan mengalami perlambatan hingga mencapai titik maksimum. Dengan demikian, semakin besar nozzle, besarnya percepatan maksimum akan semakin besar, namun akan jauh lebih singkat waktu tempuhnya. Sedangkan untuk hubungan variasi diameter nozzle terhadap ketinggian h(t) ditunjukkan pada Gambar 7.11. Berdasarkan Gambar 7.11 terungkap bahwa pengaruh variasi nozzle terhadap ketinggian sulit ditentukan. Karena perbedaan ketinggian maksimum atau besarnya h(t) tidak jauh berbeda satu sama lain. Meskipun gambar 7.9 dan 7.10 menyatakan bahwa gaya maksimum dan percepatan maksimum dialami oleh dn yang terbesar, namun waktu tempuh selama mengalami percepatan dan gaya tersebut jauh lebih singkat dibandingkan roket dengan dn terkecil yang meskipun gaya dan percepatan maksimumnya jauh lebih kecil namun lamanya gaya yang bekerja jauh lebih lama. Dengan demikian, variasi nozzle tidak cukup berpengaruh dalam menentukan ketinggian maksimum roket atau h(t).
Gambar 7.11 Ketinggian h sebagai fungsi variasi diameter nozzle dn tiap waktu t.
Berdasarkan syarat batas yang dikemukakan sebelumnya, pembacaan maksimum fraksi perbandingan f hanya dapat dilakukan 0.71. Hal ini dikarenakan massa jenis udara yang ada di roket sesaat setelah kondisi pengosongan air akan lebih kecil daripada massa jenis udara pada suhu normal (Patm). Dengan demikian penentuan fraksi maksimum bergantung pada besarnya tekanan udara awal dalam roket. Gambar 7.12, 7.13, dan 7.14 menunjukkan variasi hubungan fraksi air-udara f dalam botol
157
Komputasi Fisika 2: 7 .. gerak roket air
terhadap gaya F(t), a(t) dan h(t). Fraksi air-udara divariasikan dengan besar masingmasing 0.1, 0.3, 0.5 dan 0.7 saat Pud,0 = 600 kPa dan dn = 0.019 cm. Gambar 7.12 menunjukkan bahwa untuk fraksi air-udara f = 0.1 akan memiliki gaya maksimum tertinggi sesaat setelah roket lepas dari tabung peluncur. Namun demikian gaya dorong oleh air pada f = 0.1 jauh lebih singkat dibandingkan yang lain. Hal ini benar adanya, karena volume air yang terlalu sedikit akan menyebabkan gaya dorong yang bekerja hanya dalam selang waktu yang kecil. Berbeda halnya dengan gaya dorong yang diakibatkan oleh udara untuk f = 0.1 merupakan yang terbesar dibandingkan fraksi lainnya. Dengan demikian, semakin besar fraksi pada roket, gaya maksimum akan semakin besar namun gaya dorong akibat air akan semakin singkat. Begitu pula sebaliknya. Hal ini didukung oleh Gambar 7.13 bahwa percepatan maksimum akan diraih roket dengan fraksi terkecil.
Gambar 7.12 Gaya F sebagai fungsi variasi fraksi air-udara f tiap waktu t.
158
Komputasi Fisika 2: 7 .. gerak roket air
Gambar 7.13 Percepatan roket ar sebagai fungsi variasi fraksi air-udara f tiap waktu t.
Pengaruh percepatan dan gaya yang bekerja pada roket digambarkan pada Gambar 7.14 yang mendeskripsikan pengaruh variasi fraksi air-udara f terhadap ketinggian h tiap waktu t. Berdasarkan Gambar 7.14, perbedaan fraksi terlihat mempengaruhi ketinggian yang dapat dicapai oleh roket. Fraksi air-udara sebesar 0.3 dan 0.5 menunjukkan bahwa roket dapat mencapai ketinggian sekitar 40 m. Sedangkan untuk perbandingan fraksi lainya menghasilkan ketinggian lebih rendah dan besarnya tidak jauh berbeda. Hal ini dapat terjadi akibat lamanya pengaruh gaya dorong baik oleh air ataupun udara yang lebih stabil waktu tempuhnya. Meskipun pada f = 0.7 gaya dorong air lebih lama namun besar percepatannya setelah air kosong tidak mencapai maksimum. Hal ini akibat adanya ekspansi volume udara selama masa pengosongan air yang menyebabkan tekanan udara dalam botol setelah air kosong lebih rendah dibandingkan f yang lebih kecil. Karena itu, meskipun fraksi terendah memiliki gaya dan percepatan maksimum, namun waktu tempuhnya lebih singkat dan fraksi tertinggi tidak mencapai percepatan maksimum setelah air kosong meskipun gaya dorong oleh air bekerja lebih lama. Dengan demikian, ketinggian maksimum akan tercapai apabila fraksi jumlah air dan udara dalam botol sekitar 0.3 dan 0.5. Beberapa hasil percobaan mengarahkan supaya fraksi 0.3 dan 0.5 untuk mendapatkan ketinggian maksimum [10].
159
Komputasi Fisika 2: 7 .. gerak roket air
Gambar 7.14 Ketinggian h sebagai fungsi variasi fraksi air-udara f tiap waktu t.
Gambar 7.15 Gaya F sebagai fungsi variasi tekanan awal udara Pud,0 tiap waktu t.
Pada Gambar 7.15, 7.16 dan 7.17 menunjukkan grafik variasi tekanan awal udara Pud,0 terhadap bersarnya gaya F (t), a(t), dan h(t). Variasi tekanan udara awal yang dipilih yaitu sebesar 400 kPa, 600 kPa dan 800 kPa saat f = 0.3 dan dn = 0.019. Berdasarkan Gambar 7.15, tekanan udara awal yang semakin besar akan memberikan gaya
160
Komputasi Fisika 2: 7 .. gerak roket air
maksimum terbesar. Hal ini sesuai dengan hubungan antara gaya dorong yang diakibatkan oleh tekanan udara awal berbanding lurus dengan gaya tiap satuan luas permukaan. Semakin besar tekanan yang diberikan pada roket sebelum bergerak maka gaya yang bekerja pada roket juga akan semakin besar. Demikian halnya berlaku pada percepatan roket, seperti Gambar 7.16. Berdasarkan Gambar 7.16 terungkap bahwa perubahan percepatan roket akan semakin besar dengan tekanan udara awal yang juga semakin besar. Dapat terlihat bahwa lamanya waktu untuk sistem roket menyesuaikan diri dengan lingkungan hampir sama. Akibatnya ketinggian yang dicapai roket akan memiliki titik maksimum untuk tekanan udara awal yang lebih besar, seperti pada Gambar 7.17.
Gambar 7.16 Percepatan roket ar sebagai fungsi variasi tekanan awal udara Pud,0 tiap waktu t.
161
Komputasi Fisika 2: 7 .. gerak roket air
Gambar 7.17 Ketinggian h sebagai fungsi variasi tekanan awal udara Pud,0 tiap waktu t.
Pada gambar 7.17 di atas terlihat hubungan variasi tekanan awal udara Pud,0 tiap waktu t dengan ketinggian h. Grafik ini menunjukkan tekanan awal udara 800 kPa dapat mencapai ketinggian lebih dari 60 m, jauh lebih tinggi jika dibandingkan dengan roket yang memiliki tekanan awal udara lebih kecil. Dengan demikian, roket dengan tekanan udara yang lebih besar mampu menjangkau ketinggian yang lebih besar pula. Berdasarkan hasil variasi yang dilakukan, lamanya gaya dorong kurang dari 0.1 detik dan hampir seluruh hasil grafik menunjukkan bahwa percepatan yang dialami roket yaitu udara mulai berkespansi keluar sesaat setelah air habis. Akibat adanya gaya gravitasi dan gaya hambat udara menyebabkan roket akan mengalami perlambatan yang selanjutnya akan mengubah arah gerak dan jatuh vertikal ke bawah.
7.6 Kesimpulan Baik variasi diameter nozzle, fraksi volume, dan tekanan udara awal sangat berpengaruh terhadap gerak roket. Pengaruh variasi diameter nozzle terlihat pada besar gaya dan percepatan maksimumnya, tetapi tidak untuk ketinggian maksimum. Perbedaan ketinggian diantara ketiga variasi tidak terlalu jauh. Sedangkan fraksi volume mempengaruhi percepatan, gaya dan ketinggian roket. Semakin besar fraksi volum gaya dan percepatan maksimumnya akan semakin besar. Namun ketinggian maksimum roket akan dicapai saat f = 0.3 atau 0.5. Begitu pula dengan tekanan udara awal akan mempengaruhi besarnya percepatan, ketinggian dan gaya yang bekerja
162
Komputasi Fisika 2: 7 .. gerak roket air
pada roket. Semakin besar tekanan udara awal, maka gaya, percepatan dan ketinggian akan semakin besar pula.
7.7 Referensi 1.
2. 3. 4.
5.
6.
7.
8. 9. 10.
Robert A. Nelson, and Mar E. Wilson, “Mathematical Analysis of a Model Rocket Trajectory. Part I: The powered phase”, The Physics Teacher, p. 150161 (March 1976). G. A. Finney, “Analysis of a water-propelled rocket: A problem in honors physics”, American Journal of Physics, vol. 68 (3), p. 233-227 (March 2000) Robert H. Gowdy, “The physics of perfect rockets”, American Journal of Physics, vol. 63 (3), p. 229-232 (March 1995). Kian, J.T., “Learn Physics with a Water-Propelled Rocket”, Journal, National Space Agency, Malaysia, 2014, URL http://stemstates.org/assets/files /430_fullpaper_abstract%20number%20430.pdf. ENGR 112C (527), “Water Rocket Project”, Spring 2014, URL http://research.che.tamu.edu/groups/Seminario/ENGR112_Spring_2014_files/ Water%20Rocket%20Project_19js_FINAL%20INSTRUCTIONS.doc. Bailio, P.A., “Simple orifices have an edge - Complex entrance profiles boost orifice-flow efficiency but at the expense of repeatability”, 2004, URL http://machinedesign.com/article/simple-orifices-have-an-edge-0318. M. Mulsow, “Modelling and optimization of multi-stage water rockets”, Bachelor Thesis, Mathematish-Naturwissenschaftliche Fakultat, Ernst-MoritzArndt-Universitat Greifswald, (2011). L. C. Singleton IV, “Bottle Rocket Handbook”, (2001). Rodrigues H, dan Panda N., “The Motion of A Leaking Oscilator: A Study for the Physics Class”, Rio de Janeiro, RJ, Brazil, (2014). Anha, “Roket Air”, http://muawanahfisikakuust.blogspot.co.id/2014/06/roketair.html.
163
Komputasi Fisika 2: 7 .. gerak roket air
7.8 Lampiran A. Keterangan penggunaan program dan skrip Tabel 7.4 Program dan skrip serta hasil keluarannya.
Program / Skrip wr.cpp
plot-dt.gps
Piranti lunak
Keluaran
Lampiran
C++
ar, vr, h, Fnet, vex
B
Gnuplot
Gambar 1.6
C
Gambar 1.7 Gnuplot
Gambar 1.8
plot-dn.gps
D
Gambar 1.9 Gambar 1.10 Gnuplot
Gambar 1.11
plot-f.gps
E
Gambar 1.12 Gambar 1.13 Gnuplot
Gambar 1.14
Plot-P.gps
Gambar 1.15 Gambar 1.16
B. Program wr.cpp /* RBL Komputasi Sistem Fisis 22 Mei 2016 created by Fairusy_Dian_Rizki_Fareha Water Rocket Project name file: wr.cpp compile : g++ wr.cpp -o wr execute : ./wr [option] */ #include #include #include #include #include
using namespace std;
164
F
Komputasi Fisika 2: 7 .. gerak roket air
int main(int argc, char *argv[]) { cout << "==============water rocket==============" << endl; cout << "==========Komputasi Sistem Fisis=======" << endl << endl; //define program name const char *pname = "water-rocket"; //verbose usage if(argc < 9) { cout << "Usage: " << pname << " " << endl; cout << "please execute : ./wr" << " " ; cout << "[f dn Pud0 dt Tdata tbeg tend outputfile]"; cout << endl; cout << "f\t Fraction of volume : volume of water divided by volume of rocket (no unit)" << endl; cout << "dn\t Diameter of nozzle (meter)" << endl; cout << "Pud0\t Initial pressure inside the rocket (Pascal) " << endl; cout << "dt\t Time step" << endl; cout << "Tdata\t Time sampling" << endl; cout << "tbeg\t begin time" << endl; cout << "tend\t end time" << endl; cout << "outputfile\t Output File Name"; cout << endl; return 1; } cout << "analyzing . . ." << "\t" << ". . . ." << endl; //get all arguments double f = atof(argv[1]); double dn = atof(argv[2]); double Pud0 = atof(argv[3]); double dt = atof(argv[4]); double Tdata = atof(argv[5]); double tbeg = atof(argv[6]); double tend = atof(argv[7]); const char *ofn = argv[8]; //all initial constant variable double dr = 0.09; //diameter of rocket double C = 0.98; //nozzle discharge coef. double Cd = 0.7; //drag coef. double g = 9.8; //gravity acceleration double Lt = 0.2; //lenght of launch tube double Vr = 0.0015; //volume of rocket double mr = 0.214; //mass of rocket double Patm = 101325; //Pa absolute pressure of atmosphere double rhoair = 1000; //density of water double rhoatm = 1.225; // density of air double gama = 1.4; //adiabatic const double An = M_PI*dn*dn/4; //area of nozzle double Ar = M_PI*dr*dr/4; //area of rocket double Vud0 = (1-f)*Vr; //initial volume of air double mud0 = rhoatm * Vud0 * Pud0/Patm; //initial mass of air double mair0 = rhoair * f * Vr; // initial massof water
165
Komputasi Fisika 2: 7 .. gerak roket air
//all initial variable double dmex = 0; //the rate of change of the mass double dmair = 0; //the rate of change of the mass of water double dmud = 0; //the rate of change of the mass of air double dVud = 0; //the rate of change of the volume of air double Vud = Vud0; //definition of initial volume of air double mud = mud0; //definition of initial mass of air double mair = mair0; //definition of initial mass of water double mt = mud + mair + mr; //the total of mass double h = Lt; //high position at t = 0 double vr0 = sqrt(2*((Pud0-Patm)*An-(mt*g))*Lt); //initial velocity of rocket double vr = vr0; //definition of rocket velocity double vex = 0; //excape velocity (anything can be placed as water of air) double P0 = Pud0; //definition of initial pressure of air inside of rocket double V0 = Vud0; //definition of initial volume of air double Pud = P0*pow(V0/Vud,gama); //definition of pressure inside the rocket double Fg = - mt * g; //gravitation force double Ft = (Pud - Patm) * An; //initial thrust force caused by launcher tube double Fd = -0.5*Cd*rhoatm*Ar*vr*vr*vr/sqrt(vr*vr); //drag force double Fnet = Ft + Fg + Fd; //net force //hk.I newton double ar = Fnet/mt; //rocket acceleration double rhoex = rhoair; //initial rho causing exhaust velocity is water //save file and created ofstream fout; fout.open(ofn); //define iteration parameters int Nt = 1 + (int) floor((tend-tbeg)/dt); int Ndata = 1 + (int) floor(Tdata/dt); //display data header cout << t\th\tvr\tar\tmud\tmair\tPud\tVud\tFg\tFd\tFt\tFnet\tvex" << endl; fout << t\th\tvr\tar\tmud\tmair\tPud\tVud\tFg\tFd\tFt\tFnet\tvex" << endl; //perform iteration int idata = 0; for(int it = 0; it < Nt; it++) { //calculate time double t = tbeg + it*dt; //watch counter for displaying data if(idata == (Ndata -1)) { idata = 0; } //display data only for certai period if(idata == 0) {
166
"# "#
Komputasi Fisika 2: 7 .. gerak roket air
cout cout cout cout cout cout cout cout cout cout cout cout cout
<< << << << << << << << << << << << <<
t << "\t"; h << "\t"; vr << "\t"; ar << "\t"; mud << "\t"; mair << "\t"; Pud << "\t"; Vud << "\t"; Fg << "\t"; Fd << "\t"; Ft <<"\t"; Fnet << "\t"; vex << endl;
fout fout fout fout fout fout fout fout fout fout fout fout fout
<< << << << << << << << << << << << <<
t << "\t"; h << "\t"; vr << "\t"; ar << "\t"; mud << "\t"; mair << "\t"; Pud << "\t"; Vud << "\t"; Fg << "\t"; Fd << "\t"; Ft << "\t"; Fnet << "\t"; vex << endl;
} //calculate motion variables using Newton II Law vex = C * sqrt(2*(Pud-Patm)/rhoex); dmex = C*An*rhoex*vex; dVud = An * vex;
eluler
Vud = Vud + dVud*dt; Pud = P0 * pow(V0/Vud,gama); mair = mair - dmair*dt; mud = mud - dmud*dt; mt = mair + mud + mr; Fg = - mt * g; Fd = - 0.5*Cd*rhoatm*Ar*vr*vr*vr/sqrt(vr*vr); Ft = dmex * vex; Fnet = Fg + Fd + Ft; ar = Fnet/mt; vr = vr + ar*dt; h = h + vr*dt; //second phase if (mair > 0) { dmud = 0; dmair = dmex; P0 = Pud0; V0 = Vud0; rhoex = rhoair; }
167
Alghorithm
and
Komputasi Fisika 2: 7 .. gerak roket air
//third phase if (mair <= 0 and Pud > Patm) { mair = 0; dmair = 0; P0 = Pud0 * pow(Vud0/Vr,gama); pressure when no water in rocket dmud = dmex; V0 = Vr; rhoex = rhoatm; } //fourth phase if (mair <= 0 and mud <= rhoatm*Vr) { mud = rhoatm * Vr; mair = 0; vex = 0; mair = 0; dmair = 0; Pud = Patm; dmud = 0; dmex = 0; Ft = 0; }
//initial
absolute
if (mair <= 0 and Pud <= Patm) { mud = rhoatm * Vr; mair = 0; vex = 0; mair = 0; dmair = 0; Pud = Patm; dmud = 0; dmex = 0; Ft = 0; } //stopping program if the rocket has just touched the ground if (h <= 0) { break; } //increase counter for displaying data idata++; } //close output file fout.close(); //terminate the program with success return 0; }
C. Skrip Gnuplot plot-dt.gps set terminal png enhanced set output "dt-F-t.png" set xrange [0:0.16] set yrange [-50:400] set xtics 0.02
168
Komputasi Fisika 2: 7 .. gerak roket air
set set set set
ytics 50 xlabel "{/Italics t (s)}" ylabel "{/Italics Force (N)}" grid xtics ytics
plot \ "dt1.txt" "dt2.txt" "dt3.txt" "dt4.txt" "dt5.txt"
u u u u u
1:12 1:12 1:12 1:12 1:12
w w w w w
lp lp lp lp lp
pt pt pt pt pt
1 lw 0.5 lc 3 ps 1 6 lw 0.5 lc 4 ps 1 2 lw 0.5 lc 2 ps 1 10 lw 0.5 lc -1 ps 4 lw 0.5 lc 1 ps 1
t "dt = 0.1",\ t "dt = 0.01",\ pi 10 t "dt = 0.001",\ 1 pi 100 t "dt = 0.0001",\ pi 1000 t "dt = 0.00001"
reset set terminal png enhanced set output "dt-ar-t.png" set set set set set set set
xrange [0:0.16] yrange [-50:600] xtics 0.02 ytics 100 xlabel "{/Italics time (s)}" ylabel "{/Italics rocket acceleration (m/s^2) }" grid xtics ytics
plot \ "dt1.txt" "dt2.txt" "dt3.txt" "dt4.txt" "dt5.txt"
u u u u u
1:4 1:4 1:4 1:4 1:4
w w w w w
lp lp lp lp lp
pt pt pt pt pt
1 lw 0.5 lc 3 ps 1 6 lw 0.5 lc 4 ps 1 2 lw 0.5 lc 2 ps 1 10 lw 0.5 lc -1 ps 4 lw 0.5 lc 1 ps 1
t "dt = 0.1",\ pi 1 t "dt = 0.01",\ pi 10 t "dt = 0.001",\ 1 pi 100 t "dt = 0.0001",\ pi 1000 t "dt = 0.00001"
D. Skrip Gnuplot plot-dn.gps set terminal png enhanced set output "d-F-dt.png" set xrange [0:0.25] set yrange [-20:400] set xtics 0.05 set ytics 100 set xlabel "{/Italics t (s)}" set ylabel "{/Italics Force (N)}" set grid xtics ytics set label "water starts coming out" at 0,350 set label "water runs out and air starts expansion" at 0.06,200 set arrow 2 lt 0 lw 2 lc -1 from 0.045,180 to 0.058,200 size graph 0.02,20 filled linewidth 2 set arrow 3 lt 0 lw 2 lc -1 from 0.061,130 to 0.06,190 size graph 0.02,20 filled linewidth 2 set arrow 4 lt 0 lw 2 lc -1 from 0.132,60 to 0.13,190 size graph 0.02,20 filled linewidth 2 set arrow 5 lt 0 lw 2 lc -1 from 0.09,95 to 0.09,190 size graph 0.02,20 filled linewidth 2 set label "no thrust force" at 0.15,50 set arrow 6 lt 0 lw 2 lc -1 from 0.13,0 to 0.16,40 size graph 0.02,20 filled linewidth 2 set arrow 7 lt 0 lw 2 lc -1 from 0.09,0 to 0.16,40 size graph 0.02,20 filled linewidth 2
169
Komputasi Fisika 2: 7 .. gerak roket air
set arrow 8 lt 0 lw 2 lc -1 from 0.075,0 to 0.16,40 size graph 0.02,20 filled linewidth 2 set arrow 9 lt 0 lw 2 lc -1 from 0.19,0 to 0.16,40 size graph 0.02,20 filled linewidth 2 plot \ "d1.txt" "d2.txt" "d3.txt" "d4.txt"
u u u u
1:12 1:12 1:12 1:12
w w w w
lp lp lp lp
pt pt pt pt
1 6 3 5
lw lw lw lw
0.5 0.5 0.5 0.5
lc lc lc lc
1 4 2 3
ps ps ps ps
1 1 1 1
pi pi pi pi
10 10 10 10
t t t t
"dn "dn "dn "dn
= = = =
0.013",\ 0.016",\ 0.019",\ 0.022"
reset set terminal png enhanced set output "d-ar-dt.png" set xrange [0:0.35] set yrange [-50:900] set xtics 0.05 set ytics 100 set xlabel "{/Italics t (s)}" set ylabel "{/Italics ar (m/s^2)}" set grid xtics ytics set label "water runs out and air starts expansion" at 0.151,405 set arrow 10 lt 0 lw 2 lc -1 from 0.045,800 to 0.15,420 size 0.02,20 filled linewidth 2 set arrow 11 lt 0 lw 2 lc -1 from 0.065,600 to 0.15,420 size 0.02,20 filled linewidth 2 set arrow 12 lt 0 lw 2 lc -1 from 0.088,420 to 0.15,420 size 0.02,20 filled linewidth 2 set arrow 13 lt 0 lw 2 lc -1 from 0.135,280 to 0.15,420 size 0.02,20 filled linewidth 2 plot \ "d1.txt" "d2.txt" "d3.txt" "d4.txt"
u u u u
1:4 1:4 1:4 1:4
w w w w
lp lp lp lp
pt pt pt pt
1 6 3 5
lw lw lw lw
0.5 0.5 0.5 0.5
lc lc lc lc
1 4 2 3
ps ps ps ps
1 1 1 1
pi pi pi pi
10 10 10 10
t t t t
"dn "dn "dn "dn
= = = =
graph graph graph graph
0.013",\ 0.016",\ 0.019",\ 0.022"
reset set terminal png enhanced set output "d-h-dt.png" set set set set set set set set set set set
xrange [0:6] yrange [-5:55] xtics 1 ytics 10 xlabel "{/Italics t (s)}" ylabel "{/Italics h (m)}" grid xtics ytics arrow 15 lw 2 from 2.653,0 to 2.653,42 nohead lt 0 lc -1 arrow 16 lw 3 from 2.71,0 to 2.71,42 nohead lt 0 lc 0 label "ascending rocket" at 0.6,5 label "descending rocket" at 2.8,25
plot \ "d1.txt" u 1:2 w lp pt 1 lw 0.5 lc 1 ps 1 pi 150 t "dn = 0.013 and h max = 38.471 m" ,\
170
Komputasi Fisika 2: 7 .. gerak roket air
"d2.txt" u 1:2 w lp pt 6 lw 0.5 lc 4 ps 1 pi 150 t "dn = 0.016 and h max = 39.8289 m",\ "d3.txt" u 1:2 w lp pt 3 lw 0.5 lc 2 ps 1 pi 150 t "dn = 0.019 and h max = 41.1267 m",\ "d4.txt" u 1:2 w lp pt 5 lw 0.5 lc 3 ps 1 pi 150 t "dn = 0.022 and h max = 42.3869 m"
E. Skrip Gnuplot plot-f.gps set terminal png enhanced set output "f-F-dt.png" set xrange [0:0.35] set yrange [-20:300] set xtics 0.05 set ytics 50 set xlabel "{/Italics t (s)}" set ylabel "{/Italics Force (N)}" set grid xtics ytics set label "water starts coming out" at 0.06,270 set arrow 1 lt 0 lw 2 lc -1 from 0.003,259.867 to 0.055,267.034 size graph 0.02,20 filled linewidth 2 set label "water runs out and air starts expansion" at 0.06,200 set arrow 2 lt 0 lw 2 lc -1 from 0.02,220 to 0.055,200 size graph 0.02,20 filled linewidth 2 set arrow 3 lt 0 lw 2 lc -1 from 0.06,140 to 0.06,190 size graph 0.02,20 filled linewidth 2 set arrow 4 lt 0 lw 2 lc -1 from 0.13,60 to 0.13,190 size graph 0.02,20 filled linewidth 2 set arrow 5 lt 0 lw 2 lc -1 from 0.33,5 to 0.2,190 size graph 0.02,20 filled linewidth 2 set label "no thrust force" at 0.15,50 set arrow 6 lt 0 lw 2 lc -1 from 0.15,0 to 0.15,40 size graph 0.02,20 filled linewidth 2 set arrow 7 lt 0 lw 2 lc -1 from 0.1,0 to 0.145,50 size graph 0.02,20 filled linewidth 2 set arrow 8 lt 0 lw 2 lc -1 from 0.06,0 to 0.145,50 size graph 0.02,20 filled linewidth 2 set arrow 9 lt 0 lw 2 lc -1 from 0.34,0 to 0.225,50 size graph 0.02,20 filled linewidth 2 plot \ "f1.txt" "f2.txt" "f3.txt" "f4.txt"
u u u u
1:12 1:12 1:12 1:12
w w w w
lp lp lp lp
pt pt pt pt
1 6 3 5
lw lw lw lw
0.5 0.5 0.5 0.5
lc lc lc lc
1 4 2 3
ps ps ps ps
1 1 1 1
pi pi pi pi
10 10 10 10
t t t t
"f "f "f "f
= = = =
0.1",\ 0.3",\ 0.5",\ 0.7"
reset set terminal png enhanced set output "f-ar-dt.png" set set set set set set set set
xrange [0:0.35] yrange [-50:1000] xtics 0.05 ytics 100 xlabel "{/Italics t (s)}" ylabel "{/Italics ar (m/s^2)}" grid xtics ytics label "water runs out and air starts expansion" at 0.15,400
171
Komputasi Fisika 2: 7 .. gerak roket air
set arrow 10 lt 0 lw 2 lc -1 from 0.02,970 to 0.15,420 size graph 0.02,20 filled linewidth 2 set arrow 11 lt 0 lw 2 lc -1 from 0.065,600 to 0.15,420 size graph 0.02,20 filled linewidth 2 set arrow 12 lt 0 lw 2 lc -1 from 0.13,270 to 0.15,380 size graph 0.02,20 filled linewidth 2 set arrow 13 lt 0 lw 2 lc -1 from 0.34,0 to 0.2,380 size graph 0.02,20 filled linewidth 2 plot \ "f1.txt" "f2.txt" "f3.txt" "f4.txt"
u u u u
1:4 1:4 1:4 1:4
w w w w
lp lp lp lp
pt pt pt pt
1 6 3 5
lw lw lw lw
0.5 0.5 0.5 0.5
lc lc lc lc
1 4 2 3
ps ps ps ps
1 1 1 1
pi pi pi pi
10 10 10 10
t t t t
"f "f "f "f
= = = =
0.1",\ 0.3",\ 0.5",\ 0.7"
reset set terminal png enhanced set output "f-h-dt.png" set set set set set set set set set set set
xrange [0:6] yrange [-5:55] xtics 1 ytics 10 xlabel "{/Italics t (s)}" ylabel "{/Italics h (m)}" grid xtics ytics arrow 14 lw 3 from 2.21,0 to 2.21,27 nohead lt 0 lc 0 arrow 15 lw 2 from 2.684,0 to 2.684,40 nohead lt 0 lc -1 label "ascending rocket" at 0.6,5 label "descending rocket" at 2.8,27
plot \ "f1.txt" u 1:2 26.6358 m" ,\ "f2.txt" u 1:2 24.4477 m",\ "f3.txt" u 1:2 41.1267 m",\ "f4.txt" u 1:2 40.101 m"
w lp pt 1 lw 0.5 lc 1 ps 1 pi 150 t "f = 0.1 and h max = w lp pt 6 lw 0.5 lc 4 ps 1 pi 150 t "f = 0.3 and h max = w lp pt 3 lw 0.5 lc 2 ps 1 pi 150 t "f = 0.5 and h max = w lp pt 5 lw 0.5 lc 3 ps 1 pi 150 t "f = 0.7 and h max =
F. Skrip Gnuplot plot-P.gps set terminal png enhanced set output "P-F-dt.png" set xrange [0:0.15] set yrange [-20:400] set xtics 0.05 set ytics 50 set xlabel "{/Italics t (s)}" set ylabel "{/Italics Force (N)}" set grid xtics ytics set label "water starts coming out" at 0.001,360 set arrow 1 lt 0 lw 2 lc -1 from 0.002,253.867 to 0.005,350 size graph 0.02,20 filled linewidth 2 set label "water runs out and air starts expansion" at 0.06,250
172
Komputasi Fisika 2: 7 .. gerak roket air
set arrow 2 lt 0 lw 2 lc -1 from 0.053,200 to 0.07,240 size graph 0.02,20 filled linewidth 2 set arrow 3 lt 0 lw 2 lc -1 from 0.063,130 to 0.08,240 size graph 0.02,20 filled linewidth 2 set arrow 4 lt 0 lw 2 lc -1 from 0.083,70 to 0.083,240 size graph 0.02,20 filled linewidth 2 set label "no thrust force" at 0.09,100 set arrow 6 lt 0 lw 2 lc -1 from 0.099,-10 to 0.1,90 size graph 0.02,20 filled linewidth 2 set arrow 7 lt 0 lw 2 lc -1 from 0.107,-10 to 0.1,90 size graph 0.02,20 filled linewidth 2 set arrow 8 lt 0 lw 2 lc -1 from 0.002,150 to 0.005,350 size graph 0.02,20 filled linewidth 2 plot \ "P1.txt" u 1:12 w lp pt 1 lw 0.5 lc 1 ps 1 pi 10 t "Pud,0 = 400 kPa",\ "P2.txt" u 1:12 w lp pt 6 lw 0.5 lc 4 ps 1 pi 10 t "Pud,0 = 600 kPa",\ "P3.txt" u 1:12 w lp pt 3 lw 0.5 lc 2 ps 1 pi 10 t "Pud,0 = 800 kPa" reset set terminal png enhanced set output "P-ar-dt.png" set xrange [0:0.15] set yrange [-50:900] set xtics 0.05 set ytics 100 set xlabel "{/Italics t (s)}" set ylabel "{/Italics ar (m/s^2)}" set grid xtics ytics set label "water runs out and air starts expansion" at 0.07,400 set arrow 10 lt 0 lw 2 lc -1 from 0.052,870 to 0.1,420 size graph 0.02,20 filled linewidth 2 set arrow 11 lt 0 lw 2 lc -1 from 0.063,600 to 0.1,420 size graph 0.02,20 filled linewidth 2 set arrow 12 lt 0 lw 2 lc -1 from 0.08,310 to 0.1,380 size graph 0.02,20 filled linewidth 2 plot \ "P1.txt" u 1:4 w lp pt 1 lw 0.5 lc 1 ps 1 pi 10 t "Pud,0 = 400 kPa",\ "P2.txt" u 1:4 w lp pt 6 lw 0.5 lc 4 ps 1 pi 10 t "Pud,0 = 600 kPa",\ "P3.txt" u 1:4 w lp pt 3 lw 0.5 lc 2 ps 1 pi 10 t "Pud,0 = 800 kPa" reset set terminal png enhanced set output "P-h-dt.png" set set set set set set set set set set
xrange [0:6] yrange [-5:65] xtics 1 ytics 10 xlabel "{/Italics t (s)}" ylabel "{/Italics h (m)}" grid xtics ytics arrow 14 lw 3 from 2.234,0 to 2.234,26 nohead lt 0 lc 0 arrow 15 lw 2 from 2.684,0 to 2.684,41 nohead lt 0 lc -1 arrow 16 lw 2 from 2.955,0 to 3,52.5 nohead lt 0 lc 3
173
Komputasi Fisika 2: 7 .. gerak roket air
set label "ascending rocket" at 0.6,5 set label "descending rocket" at 3.3,27 plot \ "P1.txt" u 1:2 w lp pt 1 lw 0.5 lc 1 ps 1 pi 150 t "Pud,0 = 400 kPa and h max = 26.4628 m" ,\ "P2.txt" u 1:2 w lp pt 6 lw 0.5 lc 4 ps 1 pi 150 t "Pud,0 = 600 kPa and h max = 41.1267 m",\ "P3.txt" u 1:2 w lp pt 3 lw 0.5 lc 2 ps 1 pi 150 t "Pud,0 = 800 kPa and h max = 52.5637 m"
174
Distribusi temperatur 1-D pada batang dengan variasi jumlah kontak dan lebar kontak terhadap lingkungan
8
Handika Dany Rahmayanti | [email protected] Mona Berlian Sari | [email protected] Fisca Dian Utami | [email protected] Putri Hanifah Liani | [email protected] Pemecahan persoalan hantaran panas 1-D telah berhasil diselesaikan menggunakan metode numerik. Metode yang digunakan pada penelitian ini adalah metode RungeKutta orde-4. Dari hasil simulasi ini dapat dilihat distribusi temperatur 1-D pada batang. Simulasi dilakukan dengan variasi jumlah kontak dan lebar kontak terhadap lingkungan. Selama proses simulasi dengan variasi jumlah kontak temperatur batang dibatasi yaitu T(0.0)=T(1.0)=100oC. Variasi jumlah kontak dilakukan dengan cara mengatur jumlah lubang pada batang yaitu 1 lubang (single), 2 lubang (double) dan 3 lubang (triple) untuk melihat distribusi temperatur pada batang. Pada simulasi lebar kontak terhadap lingkungan divariasikan dari lebar 0,1 cm; 0,2 cm; 0,3 cm; 0,4 cm; 0,5 cm dan 0,6 cm. Dari proses simulasi didapatkan hubungan secara empiris antara fungsi distribusi panas k sebagai fungsi selisih temperatur pada batang ∆T dan jarak lubang pada batang yaitu k(∆T,d)=2,8351∆Td-0,065d+0,3689∆T-0,5454.
8.1 Pendahuluan Peristiwa hantaran panas terjadi akibat adanya gradien temperatur antar suatu sistem dengan sistem lainnya atau pada sistem itu sendiri [1]. Perpindahan panas adalah suatu proses perpindahan energi panas pada suatu zat atau dari satu zat ke zat lain. Kalor dapat berpindah dapat melalui suatu zat perantara maupun tanpa zat perantara. Terdapat tiga bentuk mekanisme perpindahan panas, yaitu konduksi, konveksi dan radiasi. Konduksi adalah proses yang terjadi akibat aliran panas dari sebuah area bertemperatur tinggi ke area dengan temperatur yang lebih rendah [2]. Timbulnya panas akibat disipasi energi merupakan salah satu permasalahan yang sangat penting didalam proses elektrifikasi [3]. Besarnya panas yang ditimbulkan dapat mempengaruhi sifat elemen dan material yang bekerja dan juga mempengaruhi efisiensi dan kinerja semua komponen, terutama komponen yang digunakan dibidang industri. Permasalahan hantaran panas dapat dinyatakan dalam bentuk persamaan diferensial, namun tidak semua permasalahan diferensial biasa dapat ditentukan penyelesaian eksaknya. Oleh karena itu, diperlukan suatu metode untuk menjelaskan penyelesaian tersebut, salah satunya melalui penggunaan metode numerik. Penyelesaian secara
175
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
numerik dapat dilakukan terutama untuk permasalahan yang sulit ditemukan penyelesaian eksaknya. Pada penelitian ini kami akan menyelesaikan permasalahan hantaran panas untuk kasus satu dimensi dengan metode Runge-Kutta Orde 4. Metode Runge-Kutta digunakan karena metode ini memiliki tingkat presisi yang baik [4,5].
8.2 Teori Berdasarkan luas penampang pada batang yang diilustrasikan pada Gambar 8.1, transfer energi difusi panas sepanjang batang dan energi ini ditransfer dari batang ke sekeliling oleh konveksi [4]. Keseimbangan energi pada volume hasil kontrol diferensial dapat dinyatakan sebagai berikut (8.1) q& ( x ) = q& ( x + dx ) + q& c ( x ) , yang dapat dituliskan sebagai q& ( x ) = q& ( x ) +
d [ q& ( x ) ] d x + q& c ( x ) , dx
(8.2)
yang menghasilkan d (8.3) [ q& ( x ) ] dx + q& c ( x ) = 0 . dx Difusi panas diselesaikan menggunakan Konduksi Hukum Fourier [6], yang dinyatakan bahwa dT , (8.4) q& ( x ) = − k A dx
di mana q& ( x ) adalah rata-rata energi transfer (J/s) yang dinyatakan, k adalah konduktivitas dari padatan (J/s-m-K), A adalah luas penampang batang (m2), dan dT/dx adalah gradien temperatur (K/m). Transfer panas oleh konveksi diselesaikan menggunakan Hukum Newton [7]. (8.5) q& c ( x ) = h A ( T − T a ) , dengan h adalah koefisien panas transfer secara empiris (J/sm2K), A adalah permukaan area dari batang (A= P dx, m2), P adalah perimeter dari batang (m), dan Ta adalah temperatur lingkungan (K). Dengan mensubstitusikan persamaan (8.4) dan (8.5) ke persamaan (8.3) diberikan d dT − kA dx dx
, dx + h( Pdx)(T − Ta ) = 0
(8.6)
Untuk konstanta k, A, dan P pada persamaan (8.6) menghasilkan d 2T hP − (T − T a ) = 0 , dx2 kA
(8.7)
T ''− α 2T = −α 2Ta ,
(8.8)
yang dapat ditulis sebagai di mana
176
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
α 2 = hP / kA ,
(8.9a)
T " = d 2T / dx 2 ,
(8.9b)
dan
Gambar 8.1 Keadaan Konduksi Panas pada Batang.
Metode Euler pada dasarnya mudah diterapkan karena melibatkan pendekatan linier, namun untuk orde yang lebih besar akan dihasilkan error yang tinggi. Sementara itu, metode Runge-Kutta merupakan suatu metode numerik yang memiliki ketelitian yang lebih akurat tanpa memerlukan kalkulasi turunan yang lebih tinggi dibandingkan Metode Euler yang error-nya terus membesar seiring dengan bertambahnya iterasi [8]. Kelebihan dari metode ini adalah bahwa untuk memperoleh hasil dengan ketelitian yang cukup akurat maka hanya diperlukan nilai-nilai fungsi dari titik-titik sebarang yang dipilih pada suatu interval bagian [9]. Bentuk umum persamaan Runge-Kutta adalah
yi +1 = yi + ϕ ( x1 , y1 , h)h ,
(8.10)
dimana ϕ(x1, y1, h)h merupakan suatu fungsi yang dapat diinterpretasikan sebagai sebuah slope rata-rata sepanjang interval atau fungsi pertambahan yang menyatakan kemiringan rata-rata pada interval [10]. Fungsi tersebut dapat ditulis dalam bentuk umum sebagai berikut [11]
φ = a1 k1 + a2 k 2 + ... + an k n , di mana setiap a adalah konstanta dan k besarnya adalah
177
(8.11)
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
k1 = f ( x1 , y1 ) k 2 = f ( x1 + p1h, y1 + q11k1h) k3 = f ( x1 + p2 h, y1 + q21k1 h + q22 k 2 h) . . k n = f ( x1 + pn −1h, y1 + qn −1,1k1h + qn −1,2 k 2 h + ... + qn −1, n −1 kn −1h Semua harga k berhubungan secara rekursif. Artinya k1 muncul dalam persamaan k2, dan begitu seterusnya. Hal inilah yang membuat metode Runge-Kutta menjadi efisien untuk kalkulasi oleh komputer. Sebuah metode Runge-Kutta disebut berorde n jika memiliki suku koreksi O(hn+1) (diperoleh dari ekspansi Taylor) [12]
y ( x0 + h) = ydiperoleh + O(h n+1 )
(8.12)
Metode Runge Kutta yang biasa digunakan untuk menyelesaikan persamaan differensial biasa adalah metode Runge Kutta orde empat tanpa disebutkan ordenya. Hal ini dikarenakan bahwa sebenarnya metode Euler merupakan metode Runge-Kutta orde 1 sedangkan metode Euler yang dimodifikasi dan yang lebih baik (improved) merupakan metode Runge-Kutta orde 2. Untuk memperoleh rumus metode RungeKutta orde 4, dilakukan dengan mengevalusi integral f(x,y) menggunakan quadrature Simpson x0 + h
∫
f ( x , y ) dx ≅
x0
1 6
1 1 h f ( x 0 , y 0 ) + 4 f ( x 0 + h , y ( x 0 + h )) + f ( x 0 + h , y ( x 0 + h )) , 2 2 x0 + h
∫
x0
f ( x, y ) dx ≅
1 h( k1 + 2 k2 + 2k3 + k4 ) , 6
(8.13a)
dengan:
k1 = f ( x0 , y0 ), 1 1 k2 = f ( x0 + h, y( x0 + h)), 2 2 1 1 k3 = f ( x0 + h, y( x0 + h)), 2 2 k4 = f ( x0 + h, y ( x0 + h)). k1 dan k2 memiliki nilai berbeda, karena dihitung untuk nilai argumen y(xo+1/2h) yang berbeda: menurut metode Euler, y(xo+1/2h) dapat diperoleh melalui dua buah persamaan
y ( x0 +
1 1 1 1 h) ≅ y0 + hk1 → k2 = f ( x0 + h, y0 + hk1 ), 2 2 2 2
atau
178
(8.13b)
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
1 1 1 1 h) − hf ( x0 + h, y ( x0 + h)), 2 2 2 2 1 1 1 1 ≅ y ( x0 + h) − hf ( x0 + h, y0 + hk1 ), 2 2 2 2 1 1 1 1 → y ( x0 + h) ≅ y0 + hk2 → k3 = f ( x0 + h, y0 + hk2 ). 2 2 2 2 y0 ≅ y ( x0 +
Untuk k3, digunakan metode Euler yang dimodifikasi untuk mencari y(xo+h)
1 1 h , y ( x0 + h )) , 2 2 1 1 y ( x0 + h ) ≅ y0 + hf ( x0 + h , y0 + hk 2 ) , 2 2
y ( x0 + h ) ≅ y 0 + hf ( x0 +
y ( x0 + h) ≅ y0 + hk3 k 4 = f ( x0 + h, y 0 + hk3 ) . Jadi, metode Runge Kutta orde 4 adalah 1 y ( x0 + h) = y0 + h(k1 + 2k 2 + 2k3 + k 4 ) 6 dengan
(8.14)
k1 = f ( x0 , y0 ) , 1 1 k2 = f ( x0 + h, y0 + hk1 ) , 2 2 1 1 k3 = f ( x0 + h, y0 + hk2 ) , 2 2 k4 = f ( x0 + h, y0 + hk3 ) .
8.3 Metode numerik Dari Persamaan (8.8) maka dapat dihitung besaran-besaran lainnya menggunakan algoritma Runge Kutta orde 4 untuk menghitung konstanta temperatur i
k1 = hf ( L, T ) ,
(8.15)
h 1 k2 = hf Li + , Ti + k1 , 2 2
(8.16)
h 1 k3 = hf Li + , Ti + k2 , 2 2
(8.17)
k4 = hf ( Li +1 , Ti + k3 ) ,
(8.18)
sehingga diperoleh
179
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
Ti +1 = Ti +
1 ( k1 + k2 + k3 + k4 ) . 6
(8.19)
8.4 Algoritma Simulasi hantaran panas 1-D dilakukan dengan menggunakan algoritma berikut ini :
L1.
h, P, k, A ,L, a, b, ya, yb, dx, Ta?
L2.
α2=hp/kA?
L3.
N=101
L4.
h=b-a/N-1
L5.
i=0, x=0, T=Ta
L6.
f = α(T-Ta)
L7.
h 1 k1 = hf ( L, T ) , k 2 = hf Li + , Ti + k1 , k3 = hf 2 2
L8.
Ti +1 = Ti +
L9.
i < N → i+1, x=x+h →L7
L10.
h 1 Li + , Ti + k2 , k4 = hf ( Li +1 , Ti + k3 ) . 2 2
1 ( k1 + k2 + k3 + k4 ) 6
x,T?
8.5 Hasil dan diskusi Parameter-parameter simulasi yang digunakan diberikan dalam Tabel 8.1 berikut. Tabel 8.1 Parameter-parameter simulasi.
Symbol
Nilai
Code
h
16
H0
P
1
p
k
1
k
A
1
A
Tα
300
ym
L
1
L
T(0.0)
0
ya
T(1.0)
100
yb
Parameter diatas merupakan parameter standar yang digunakan pada penelitian ini. Permasalahan hantaran panas untuk kasus satu dimensi dapat digambarkan dengan persamaan (8.8) yaitu terdiri dari proses difusi panas (konduksi) sepanjang bahan
180
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
(area tetap) dan proses konveksi ke lingkungan sekitar. Solusi umum dari persamaan (8.8) di atas adalah : (8.20a) T ( x ) = Aeα x + Beα x + Tα , Dengan memasukkan nilai temperatur pada batasnya maka dapat ditentukan konstanta A dan B di atas. A=
(T2 − Tα ) − (T1 − T2 )e −α L , eα L − e −α L
(8.20b)
B=
(T1 − T2 )eα L − (T2 − Tα ) . eα L − e−α L
(8.20c)
dan
Misalkan terdapat batang dengan panjang 1 cm (L=1 cm) memiliki temperatur T(0,0) = 0o C dan T(1,0) = 100o C, dan misalkan nilai α2= 16 cm-2 dan temperatur sekitar batang Tα = 300o C, maka dapat dicari solusi eksaknya: T ( x) = 1.832179(e4 x − e−4 x ) .
(8.21)
Kasus seperti di atas merupakan salah satu kasus sederhana dari permasalahan Boundary-Value Problem (BVP) untuk Ordinary Differential Equation. Kasus-kasus tersebut banyak yang lebih rumit dengan orde yang lebih tinggi, tidak linier dan beberapa persamaan terkopel sehingga sulit ditentukan solusi ekesaknya. Oleh karena itu, diperlukan metode numerik untuk menjelaskan penyelesaian tersebut. Terdapat 2 metode dasar yang dapat digunakan untuk menyelesaikan BVP, yaitu: shooting method dan equilibrium method [4]. Dalam penelitian ini digunakan shooting method untuk memperoleh solusi dari heat transfer problem di atas. Inti dari shooting method adalah bergerak dari salah satu batas (boundary), dengan menebak nilai turunan (dalam kasus ini T’) disana bergerak maju sebagai kasus IVP (initial-value problem), tentu hasil akhir di x(L) tidak sesuai dengan boundary yang diberikan [5]. Cara lainnya dengan melakukan tebakan kedua dari titik asal seperti sebelumnya lalu bergerak maju sekali lagi, dari dua tebakan awal tersebut kita dapat membandingkan hasilnya untuk memperoleh tebakan “turunan” yang apabila dikerjakan sampai L hasilnya lebih dekat menuju T(L) yang diberikan. Hal ini dapat dilakukan secara iteratif dengan membandingkan hasil 2 pekerjaan sebelumnya hingga batas kedua mendekati T(L) yang diberikan. Khusus untuk kasus linier seperti kasus kali ini, cukup melakukan superposisi dari dua tebakan awal itu saja dan solusinya akan didapatkan. Metode untuk menyelesaikan IVP yang digunakan untuk mencoba di awal adalah Runge-Kutta. Metode Runge-Kutta digunakan karena metode ini memiliki tingkat presisi yang baik. Pada tulisan ini akan dihitung hantaran panas di sepanjang batang sebagai fungsi posisi dengan metode Runge-Kutta menggunakan parameter pada Tabel 8.1. Untuk hantaran panas dengan dinding batang adiabatik (tidak ada perpindahan panas ke lingkungan artinya qc(x)=0), dengan temperatur pada batang yaitu T(0,0)=0o C dan T(1,0)=100o C didapat hasilnya seperti ditunjukkan pada Gambar 8.2.
181
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
Gambar 8.2 Grafik distribusi temperatur (T) pada batang dinding adiabatik (qc(x) =0).
Kemudian ubah parameternya yaitu dengan variasi nilai koefisien konveksi sebagai fungsi posisi dengan cara mengatur lubang (d) pada batang dengan panjang tetap (lubang menandakan dinding batang non-adiabatik sehingga ada pengaruh kalor dari lingkungan). 8.6 Variasi Jumlah Lubang Simulasi pertama dilakukan dengan membuat satu lubang (single) dengan dengan posisi dari 0,4 sampai 0,6 (20% dari panjang batang) kemudian membuat dua lubang (double) dengan posisi 0,2 - 0,3 dan 0,7 - 0,8 kemudian simulasi terakhir dengan membuat 3 lubang (triple) dengan posisi 0,2 - 0,3 dan 0,5 - 0,6 serta 0,8 - 0,9 dengan panjang batang konstan pada 1 cm, seperti yang ditunjukan Gambar 8.3.
Gambar 8.3 Pengaturan lubang pada batang dengan panjang tetap.
Hasil simulasi grafik single, double dan triple berturut-turut ditunjukan pada Gambar 8.4-8.6 berikut ini
182
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
Gambar 8.4 Grafik distribusi temperatur (T) dengan lubang non-adiabatik (single).
Gambar 8.5 Grafik distribusi temperatur (T) dengan lubang non-adiabatik (Double).
183
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
Gambar 8.6 Grafik distribusi temperatur (T) dengan lubang non-adiabatik (Triple).
Dari hasil simulasi diatas terlihat bahwa adanya dinding non-adiabatik sangat berpengaruh pada aliran kalor yang ditandai oleh distribusi temperatur sepanjang batang. Hal ini dikarenakan pada dinding non-adiabatik terdapat pengaruh temperatur dari lingkungan sehingga kalor dari lingkungan dapat keluar masuk melalui lubang tersebut. Beberapa contoh aplikasi yang menggunakan prinsip transfer kalor ini adalah desain bangunan dengan sistem pemanasan dan pendinginan alami dan pembuatan divais kalor (contoh solder). Untuk aplikasi sebagai desain bangunan dengan sistem pemanasan dan pendinginan alami dapat digunakan model matematis yang menjelaskan profil distribusi temperatur dalam ruangan selama 24 jam sebagai fungsi perubahan temperatur luar ruangan. Dengan memasukkan faktor-faktor tambahan yang mempengaruhi aliran kalor atau distribusi temperatur dalam ruangan seperti kalor yang diproduksi oleh manusia, lampu dan mesin-mesin dalam ruangan, maka dapat dibangun model matematis sehingga menjawab pertanyaan atau problem sehari-hari seperti bagaimana perubahan temperatur di dalam ruangan berubah secara alami, bagaimana agar ruangan tetap hangat tanpa adanya pemanas ruangan saat temperatur di luar ruangan sangat rendah dan sebaliknya, saat temperatur di luar ruangan sangat panas bagaimana agar temperatur ruangan tetap sejuk tanpa menggunakan AC yaitu dengan menerapkan prinsip dasar transfer kalor ini. Sebagai aplikasi untuk divais kalor misalnya solder, permasalahan yang sering dihadapi adalah maintenance divais itu sendiri. Untuk meminimalisir kerusakannya maka distribusi temperatur disepanjang batang solder harus dikontrol. Salah satu solusinya adalah dengan memberi lubang dan mengatur posisinya sehingga distribusi temperatur dalam batang dapat di set sesuai kebutuhan.
184
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
8.7 Variasi Lebar Lubang Untuk mencari rumus empiris dari hantaran panas 1-D dalam fungsi selisih temperatur batang dan temperatur lingkungan (∆T) dan jarak lubang (d) dapat dilakukan dengan mengambil persamaan linier untuk menentukan gradien (m) sebagai fungsi dari selisih temperatur dan jarak antar lubang pada batang dari hasil grafik single dengan pembatasan parameter yaitu pada L=1 cm dan T(0.0)= T(1.0)=1000C, seperti ditunjukan Gambar 8.7.
Gambar 8.7 Grafik single untuk menentukan m.
Selanjutnya dilakukan simulasi untuk variasi nilai ∆T dan jarak lubang (d). Nilai-nilai d yang digunakan dimulai dari 0,1 hingga 0,6 dengan panjang batang konstan 1 cm, seperti yang ditunjukan Gambar 8.8.
Gambar 8.8 Model batang dengan variasi jarak antar lubang (d).
185
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
Nilai ∆T merupakan nilai selisih antara temperatur pada kedua ujung batang T(0.0) atau T(1.0) dengan temperatur lingkungan Ta. Pada penelitian ini disajikan nilai-nilai ∆T mulai dari 50 hingga 250, hasilnya ditampilkan pada Gambar 1.9.
Gambar 8.9 Kemiringan sebagai fungsi selisih temperatur batang dan jarak antar lubang dari hasil simulasi pada panjang batang konstan.
Dari Gambar 8.9, dengan diasumsikan bahwa hubungan antara k dan d didekati dengan persamaan linier, sehingga dapat diperoleh : (8.22) k = md + c , dengan k merupakan fungsi dari selisih temperatur batang dengan temperatur lingkungan dan jarak antar lubang dan m serta c masing-masing adalah gradien dan titik potong fungsi tersebut pada sumbu mendatar. Terlihat dari Gambar 8.9 bahwa untuk setiap variasi nilai ∆T dihasilkan nilai kemiringan m dan c yang berbeda. Ini mengindikasikan nilai m dan c merupakan fungsi dari ∆T yakni m=m(∆T)d dan c=c(∆T). Sehingga persamaan (8.16) dapat ditulis menjadi k (∆T , d ) = m ( ∆T ) d + c ( ∆T ) .
(8.23)
Nilai m dan c sebagai fungsi dari ∆T ditampilkan pada Tabel 1.2 berikut. Tabel 8.2 Nilai m dan c sebagai fungsi ∆T dan d
∆T
m (gradien)
c
50
142.15
18.071
100
284.31
36.143
150
422.17
55.214
200
568.62
72.281
250
708.78
92.221
Dengan mendekati hubungan antara m dan ∆T serta c dan ∆T sebagai fungsi persamaan linier, didapatkan hubungan
186
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
m(∆T ) = 2,8351∆T − 0,065 ,
(8.24)
c(∆T ) = 0,3689∆T − 0,5454 ,
(8.25)
Dari hasil ini didapatkan rumusan empiris k sebagai fungsi d dan ∆T adalah : (8.26) k (∆T , d ) = 2,8351∆Td − 0,065d + 0,3689∆T − 0,5454 . Perbandingan nilai k antara hasil empiris dengan menggunakan persamaan (8.26) dan hasil simulasi adalah sebagai berikut :
Gambar 8.10 Distribusi panas sebagai fungsi selisih temperatur pada batang hasil simulasi dan estimasi untuk beberapa nilai d (a) 0,1; (b) 0,2; (c) 0,3; (d) 0,4; (e) 0,5 dan (f) 0,6.
187
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
Dari Gambar 8.9 dapat dilihat bahwa nilai k (sebagai fungsi distribusi panas) yang didapat dari hasil simulasi mendekati hasil perhitungan empirisnya. Dalam penelitian ini diperoleh bentuk empiris hantaran panas pada batang 1 Dimensi sebagai berikut
k (∆T , d ) = α 0 + α1d + α 2 ∆T + α3∆Td
(8.27)
dengan
α 0 = −0,5454 , α1 = −0,065 , α 2 = 0,3689 , α 3 = 2,8351 . Dengan demikian dapat disimpulkan bahwa metode Runge-Kutta dapat digunakan untuk memodelkan distribusi temperatur 1-D pada Batang sehingga diperoleh bentuk empirisnya.
8.8 Kesimpulan Hantaran panas merupakan persoalan sehari-hari. Pada pemodelan kasus hantaran panas batang 1 dimensi ini, kami memvariasikan nilai ∆T (selisih temperatur batang dengan temperatur lingkungan) dan besar lubang non-adiabatik (d) sehingga menunjukkan pengaruh aliran kalor lingkungan ke dalam sistem. Dengan didekati menggunakan persamaan linier maka didapatkan hubungan secara empiris antara nilai ∆T dan d yaitu k(∆T ,d)=α0+ α1d+ α2 ∆T+ α3∆T dengan α0=-0,5454, α1=-0,065, α2=0,3689 dan α3=2,8351. Nilai k (sebagai fungsi distribusi panas) yang didapat dari hasil simulasi mendekati hasil perhitungan empirisnya. Dengan demikian dapat disimpulkan metode Runge-Kutta dapat digunakan untuk memodelkan distribusi temperatur 1-D pada Batang.
8.9 Referensi 1.
2.
3. 4.
Yong Huang, Guo-Dong Shi, Ke-Yong Zhu, “Runge-Kutta Ray Tracing Technique for Solving Radiative Heat Transfer in a Two-Dimensional GradedIndex Medium”, Journal of Quantitive Spectroscopy & Radiative Transfer 176, 24-33 (2016). Mohsen Sheikholeslami, Mofid Gorji-Bandpy, Davood Domiri Ganji, “Review of Heat Transfor Enhancement Methods: Focus on Passive Methods using Swirl Flow Devices”, Renewable and Sustainable Energy Reviews 49, 444469 (2015). J. M. Hill, J.N. Dewiynne, “Heat Conduction”, Blackwell Scientific Publications, 1987, p.89. Joe D. Hoffman, “Numerical Methods for Engineers and Scientists”, Marcel Dekker. Inc, 2nd edn, 1992, pp.330-331.
188
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
5. 6. 7. 8. 9. 10. 11.
12.
Badradeen Adam dan Mohsin H. A. Hashim, “Shooting Method in Solving Boundary Value Problem”, IJRRAS 21 (1), 8-30 (2014). John H. Lienhard IV, ”A Heat Transfer Textbook”, Phlogiston Press Cambridge, 3rd edn, 2008, p.10. Mihir Sen, “Analytical Heat Transfer”, University of Notre Dame, 2015, p.7. R. Kent Nagle, Edward B.Saff, Arthur David Snider, “Fundamental of Differential Equations”, Pearson Education. Inc, 2012, p.8. Jack, “Metode Numerik”, Buku ajar, Universitas Lampung, 2006, p.00. Rika Favoria Gusa, “Penerapan Metode Runge-Kutta Orde 4 dalam Analisis Rangkaian RLC”, Jurnal ECOTIPE 1 (2), 47-52 (2014). Samsul B.Loklomin dan Francis Y.Rumlawang, “Aplikasi Metode RungeKutta Orde Empat pada Penyelesaian Rangkaian Listrik RLC”, Jurnal Barekeng 8 (1), 39-43 (2014). Hilman Aquarito, Muhammad Subhan, dan Minora Longgom Nst, “Metode Runge-Kutta Merson untuk Solusi Persamaan Differensial Biasa”, UNP Journal of Mathematics, 20-23 (2013).
8.10 Lampiran A. Keterangan penggunaan program dan skrip Tabel 8.3 Program dan skrip serta hasil keluarannya.
Program / Skrip
Piranti lunak
Keluaran
Lampiran
heattransfer.cpp
C++
(T,x)
B
single.cpp
C++
(T,x) dengan 1 lubang
C
double.cpp
C++
(T,x) dengan 2 lubang
D
triple.cpp
C++
(T,x) dengan 3 lubang
E
heattransfer.gps
Gnuplot
Gambar 1.2
F
single.gps
Gnuplot
Gambar 1.4
G
double.gps
Gnuplot
Gambar 1.5
H
triple.gps
Gnuplot
Gambar 1.6
I
single100.gps
Gnuplot
Gambar 1.7
J
B. Program heattransfer.cpp /*********************************************************************/ /*rk4 for heat transfer */ /*20215025,20215026,20215029,20215033 */
189
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
/*********************************************************************/ #include #include<stdio.h> #include<math.h> using namespace std; double f(double x, double y){ double u; double alpha = 16.0; // konstanta konduksi double ym = 300; // temperatur ruangan/ambient-Ta u = alpha*(y - ym); return u;} int main(){ double a, b, ya, yb, z1, z2, h, slope, tol; double ky1, kz1, ky2, kz2, ky3, kz3, ky4, kz4; int N, itmax, iter=0, i, j, m, n; a b ya yb
= = = =
0.0; // batas x kiri 1.0; // batas x kanan 0; // temperatur di kiri 100; // temperatur di kanan
z1 = 7.5; // tebakan pertama dan kedua nilai turunan fungsi di kiri z2 = 12.5; N = 101; // jumlah grid itmax = 101; // jumlah max iterasi shooting h = (b-a)/100.; // inisiasi array double x[itmax][N], y[itmax][N], z[itmax][N]; x[0][0] = a; y[0][0] = ya; z[0][0] = z1; // iterasi shooting methods j = 0; // j sbg indeks iterasi do{ iter += 1; for (i=1;i
190
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
y[j][0] = ya; if (j == 1){ z[j][0] = z2;} // untuk tebakan kedua else{ slope = (y[j-1][N-1] - y[j-2][N-1])/(z[j-1][0] - z[j-2][0]); // iterasi setelah tebakan 1 dan 2 z[j][0] = z[j-1][0] + (yb - y[j-1][N-1])/slope;} tol = y[j-1][N-1] - yb; } while (j < itmax && fabs(tol) > 0.1); for (n=0;n
C. Program single.cpp /*********************************************************************/ /* rk4 for heat transfer, single */ /*20215025,20215026,20215029,20215033 */ /*********************************************************************/ #include #include<stdio.h> #include<math.h> using namespace std; double f(double x, double y,double H){ double u; double p = 1; double k = 1; double A = 1; double alpha = (H*p)/(k*A); // konstanta konduksi double ym = 300;// temperatur ruangan/ambient u = alpha*(y - ym); return u;} int main(){ double a, b, ya, yb, z1, z2, h, slope, tol, opena, openb,H,H0; double ky1, kz1, ky2, kz2, ky3, kz3, ky4, kz4; int N, itmax, iter=0, i, j, m, n; double L = 1 ; H0 =16; a = 0.0; // batas x kiri b = L; // batas x kanan ya = 0; // temperatur di kiri yb = 100; // temperatur di kanan double open[] = { 0.5, 0.6}; int so = sizeof open/sizeof(double); //open dimension z1 = 7.5; // tebakan pertama dan kedua nilai turunan fungsi di kiri
191
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
z2 = 12.5; N = 101; // jumlah grid itmax = 101; // jumlah max iterasi shooting h = (b-a)/100.; // inisiasi array double io[so] ; for (int i = 0 ; i < so ; i++) { io[i] = (open[i]/h); } double Hi[N]; for (int i = io[0] ; i < io[1] ; i++) { Hi[i] = H0; }
//summing x
//summing x
double x[itmax][N], y[itmax][N], z[itmax][N]; x[0][0] = a; y[0][0] = ya; z[0][0] = z1; // iterasi shooting methods j = 0; // j sbg indeks iterasi,utk menampung solusi setiap kali iterasi do{ iter += 1; for (i=1;i
= = = = = = = =
h*z[j][i-1]; h*f(x[j][i-1], y[j][i-1],H); h*(z[j][i-1] + kz1/2.); h*f(x[j][i-1] + h/2., y[j][i-1] + ky1/2.,H); h*(z[j][i-1] + kz2/2.); h*f(x[j][i-1] + h/2., y[j][i-1] + ky2/2.,H); h*(z[j][i-1] + kz3); h*f(x[j][i-1] + h, y[j][i-1] + ky3,H);
y[j][i] = y[j][i-1] + (ky1 + 2.*(ky2+ky3) + ky4)/6.; z[j][i] = z[j][i-1] + (kz1 + 2.*(kz2+kz3) + kz4)/6.; x[j][i] = x[j][i-1] + h; } j += 1; x[j][0] = a; y[j][0] = ya; if (j == 1){ z[j][0] = z2;} // untuk tebakan kedua else{ slope = (y[j-1][N-1] - y[j-2][N-1])/(z[j-1][0] - z[j-2][0]); // iterasi setelah tebakan 1 dan 2 z[j][0] = z[j-1][0] + (yb - y[j-1][N-1])/slope;} tol = y[j-1][N-1] - yb; }while (j < itmax && fabs(tol) > 0.1); for (n=0;n
192
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
printf("%f\t", x[0][n]); for (m=0;m
D. Program double.cpp /*********************************************************************/ /*rk4 for heat transfer, double */ /*20215025,20215026,20215029,20215033 */ /**********************************************************************/ #include #include<stdio.h> #include<math.h> using namespace std; double f(double x, double y,double H){ double u; double p = 1; double k = 1; double A = 1; double alpha = (H*p)/(k*A); // konstanta konduksi double ym = 300;// temperatur ruangan/ambient u = alpha*(y - ym); return u;} int main(){ double a, b, ya, yb, z1, z2, h, slope, tol, opena, openb,H,H0; double ky1, kz1, ky2, kz2, ky3, kz3, ky4, kz4; int N, itmax, iter=0, i, j, m, n; double L = 1 ; H0 =16; a = 0.0; // batas x kiri b = L; // batas x kanan ya = 0; // temperatur di kiri yb = 100; // temperatur di kanan double open[] = { 0.2, 0.3, 0.7, 0.8}; int so = sizeof open/sizeof(double); //open dimension z1 = 7.5; // tebakan pertama dan kedua nilai turunan fungsi di kiri z2 = 12.5; N = 101; // jumlah grid itmax = 101; // jumlah max iterasi shooting h = (b-a)/100.;
193
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
// inisiasi array double io[so] ; for (int i = 0 ; i < so ; i++) { io[i] = (open[i]/h); } double Hi[N]; for (int i = io[0] ; i < io[1] ; i++) { Hi[i] = H0; } for (int i = io[2] ; i < io[3] ; i++) { Hi[i] = H0; }
//summing x
//summing x
//summing x
double x[itmax][N], y[itmax][N], z[itmax][N]; x[0][0] = a; y[0][0] = ya; z[0][0] = z1; // iterasi shooting methods j = 0; // j sebagai indeks iterasi do{ iter += 1; for (i=1;i
= = = = = = = =
h*z[j][i-1]; h*f(x[j][i-1], y[j][i-1],H); h*(z[j][i-1] + kz1/2.); h*f(x[j][i-1] + h/2., y[j][i-1] + ky1/2.,H); h*(z[j][i-1] + kz2/2.); h*f(x[j][i-1] + h/2., y[j][i-1] + ky2/2.,H); h*(z[j][i-1] + kz3); h*f(x[j][i-1] + h, y[j][i-1] + ky3,H);
y[j][i] = y[j][i-1] + (ky1 + 2.*(ky2+ky3) + ky4)/6.; z[j][i] = z[j][i-1] + (kz1 + 2.*(kz2+kz3) + kz4)/6.; x[j][i] = x[j][i-1] + h; } j += 1; x[j][0] = a; y[j][0] = ya; if (j == 1){ z[j][0] = z2;} // untuk tebakan kedua else{ slope = (y[j-1][N-1] - y[j-2][N-1])/(z[j-1][0] - z[j-2][0]); // iterasi setelah tebakan 1 dan 2 z[j][0] = z[j-1][0] + (yb - y[j-1][N-1])/slope;} tol = y[j-1][N-1] - yb; }while (j < itmax && fabs(tol) > 0.1); for (n=0;n
194
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
printf("%f\t",y[m][n]);} cout << endl;} return 0;}
E. Program triple.cpp /*********************************************************************/ /*rk4 for heat transfer, triple */ /*20215025,20215026,20215029,20215033 */ /**********************************************************************/ #include #include<stdio.h> #include<math.h> using namespace std; double f(double x, double y,double H){ double u; double p = 1; double k = 1; double A = 1; double alpha = (H*p)/(k*A); // konstanta konduksi double ym = 300;// temperatur ruangan/ambient u = alpha*(y - ym); return u;} int main(){ double a, b, ya, yb, z1, z2, h, slope, tol, opena, openb,H,H0; double ky1, kz1, ky2, kz2, ky3, kz3, ky4, kz4; int N, itmax, iter=0, i, j, m, n; double L = 1 ; H0 =16; a = 0.0; // batas x kiri b = L; // batas x kanan ya = 0; // temperatur di kiri yb = 100; // temperatur di kanan double open[] = { 0.2, 0.3, 0.5, 0.6, 0.8, 0.9}; int so = sizeof open/sizeof(double); //open dimension z1 = 7.5; // tebakan pertama dan kedua nilai turunan fungsi di kiri z2 = 12.5; N = 101; // jumlah grid itmax = 101; // jumlah max iterasi shooting
195
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
h = (b-a)/100.; // inisiasi array double io[so] ; for (int i = 0 ; i < so ; i++) { io[i] = (open[i]/h); }
double Hi[N]; for (int i = io[0] ; i < io[1] ; i++) { Hi[i] = H0; }
//summing x
//summing x
for (int i = io[2] ; i < io[3] ; i++) { Hi[i] = H0; }
//summing x
for (int i = io[4] ; i < io[5] ; i++) { Hi[i] = H0; }
//summing x
double x[itmax][N], y[itmax][N], z[itmax][N]; x[0][0] = a; y[0][0] = ya; z[0][0] = z1; // iterasi shooting methods j = 0; // j sebagai indeks iterasi do{ iter += 1; for (i=1;i
= = = = = = = =
h*z[j][i-1]; h*f(x[j][i-1], y[j][i-1],H); h*(z[j][i-1] + kz1/2.); h*f(x[j][i-1] + h/2., y[j][i-1] + ky1/2.,H); h*(z[j][i-1] + kz2/2.); h*f(x[j][i-1] + h/2., y[j][i-1] + ky2/2.,H); h*(z[j][i-1] + kz3); h*f(x[j][i-1] + h, y[j][i-1] + ky3,H);
y[j][i] = y[j][i-1] + (ky1 + 2.*(ky2+ky3) + ky4)/6.; z[j][i] = z[j][i-1] + (kz1 + 2.*(kz2+kz3) + kz4)/6.; x[j][i] = x[j][i-1] + h; } j += 1; x[j][0] = a; y[j][0] = ya; if (j == 1){ z[j][0] = z2;} // untuk tebakan kedua else{ slope = (y[j-1][N-1] - y[j-2][N-1])/(z[j-1][0] - z[j-2][0]); // iterasi setelah tebakan 1 dan 2 z[j][0] = z[j-1][0] + (yb - y[j-1][N-1])/slope;}
196
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
tol = y[j-1][N-1] - yb; }while (j < itmax && fabs(tol) > 0.1); for (n=0;n
F. Skrip Gnuplot plot-heattransfer.gps #Set Terminal and output set term png enhanced font “,16” set size ratio -1 set output "heattransfer.png" #set drawing properties set grid set xlabel "x(cm)" set ylabel "T(C)" plot 'heattransfer.txt' u 1:4 w p pt 6 ps 3 lt rgb "violet" notitle
G. Skrip Gnuplot plot-single.gps set term png enhanced font ", 16" set size ratio -1 set title 'Distribusi Temperatur pada Batang dengan 1 Lubang' set grid set xlabel 'x (cm)' set ylabel 'T (C)' set output 'single.png' set key right bottom box plot 'data_single.txt' u 1:4 w p pt 6 ps 3 lt rgb "red" 'distribusi temperatur'
title
H. Skrip Gnuplot plot-double.gps set term png enhanced font ", 16" set size ratio -1 set title 'Distribusi Temperatur pada Batang dengan 2 Lubang' set grid set xlabel 'x (cm)' set ylabel 'T (C)' set output 'double.png' set key right bottom box plot 'data_double.txt' u 1:4 w p pt 6 ps 3 lt rgb "red" 'distribusi temperatur'
I. Skrip Gnuplot plot-triple.gps set set set set
term png enhanced font ", 16" size ratio -1 title 'Distribusi Temperatur pada Batang dengan 3 Lubang' grid
197
title
Komputasi Fisika 2: 8 Distribusi Temperatur 1-D ..
set xlabel 'x (cm)' set ylabel 'T (C)' set output 'triple.png' set key right bottom box plot 'data_triple.txt' u 'distribusi temperatur'
1:4
w
p
pt
6
ps
3
lt
rgb
"red"
J. Skrip Gnuplot single100.gps set term png enhanced font ", 16" set grid set xlabel 'x (cm)' set ylabel 'T (C)' set output 'single100.png' set key right bottom box plot 'd0.1t50.txt' u 1:4 w p pt 6 ps 3 lt rgb "turquoise" notitle
198
title
9
Pengaruh momentum awal pesawat pada orbit manuver ayunan gravitasi
Ridho Muhammad Akbar Mustawa Harier Giffari Alfarizy Yakobus Geganaseta Manuver ayunan gravitasi sering dilakukan oleh penerbangan-penerbangan luar angkasa untuk mengubah arah gerak pesawat dengan memanfaatkan gaya gravitasi objek lain untuk menghemat bahan bakar. Pada kaya ilmiah ini, berhasil ditunjukkan hubungan antara bentuk orbit pesawat sebagai fungsi dari sudut datang pesawat dan kecepatan pesawat. Bentuk orbit yang sesuai dengan manuver ayunan gravitasi dicapai pada kecepatan dibawah
vL ~ θ
−1
vU dan di atas v L di mana vU ~
( θ)
−1
dan
.
9.1 Pendahuluan Pada mekanika orbital benda langit dan ilmu aerodinamika, ayunan gravitasi (gravitational sling-shot) adalah suatu manuver untuk mengubah arah gerak dan/atau kecepatan pesawat luar angkasa dengan memanfaatkan inersia pesawat dan gaya gravitasi benda langit. Pemanfaatan gaya gravitasi dilakukan untuk menghemat bahan bakar pesawat [1]. Mengubah arah gerak pesawat sama dengan mengubah kecepatan pesawat yang berarti membutuhkan usaha, yang bisa didapat dari bahan bakar. Konsep dari manuver ayunan gravitasi adalah memanfaatkan usaha oleh gaya gravitasi untuk mengubah momentup pesawat sehingga bahan bakar yang terpakai sedikit. Metode ayunan gravitasi ini digunakan pada perjalanan-perjalanan yang sangat jauh dimana kapasitas bahan bakar pesawat pun tidak cukup untuk membawa pesawat tersebut ke tempat tujuan [2]. Pada karya ilmiah ini, akan disimulasikan sistem manuver ayunan gravitasi sederhana dan bagaimana efeknya dalam mengubah arah gerak suatu objek.
9.2 Teori Interaksi antara dua buah benda bermassa m dan M adalah interaksi gravitasi yang didefinisikan dalam hukum gravitasi Newton sebagai;
r r Mm ) FMm = − FmM = −G r 2 r ( rMm ) Mm di mana
199
(9.1)
Komputasi Fisika 2: 9 Pengaruh momentum awal pesawat ..
r r rm − rM ) rMm = r r rm − rM
(9.2)
Dari sini, persamaan gerak benda dapat dituliskan dengan hukum Newton II dalam persamaan;
r d 2 rm 1 r = FmM m dt 2 r d 2 rM 1 r = FMm M dt 2
(9.3)
(9.4)
Posisi relatif kedua benda, atau jarak antar kedua benda dapat ditentukan dengan mengurangi persamaan (9.3) dan (9.4) menjadi
r r r d 2 r FmM FMm M + m r = − = FmM m M dt 2 Mm
dimana
(9.5)
r r r r = rm − rM adalah posisi relatif massa m terhadap massa M .
Pada kasus ayunan gravitasi, dimana interaksi yang ditinjau adalah interaksi antara pesawat dengan planet, maka merupakan asumsi yang baik apabila kita misalkan adalah massa planet dan nilainya jauh lebih besar daripada , massa pesawat ( . Dengan asumsi ini, maka pun akan mendekati konstan relatif terhadap karena gravitasi dari pesawat tidak mungkin memindahkan planet. Jika kita letakkan pada koordinat , maka persamaan (9.5) dapat ditulis menjadi;
r d 2 rm 1 r = FmM m dt 2 dimana kini
(9.6)
r rm adalah jarak dari pusat massa m dari pusat massa M seperti
diilustrasikan pada Gambar 9.1.
Gambar 9.1 Skema saat t = 0 suatu pesawat yang bergerak mendekati suatu planet untuk melakukan maneuver ayunan gravitasi memanfaatkan gaya gravitasi dari planet.
200
Komputasi Fisika 2: 9 Pengaruh momentum awal pesawat ..
Dengan memecahkan persamaan (9.6), maka kita dapat menentukan lintasan dari suatu objek atau pesawat akibat pengaruh gravitasi suatu planet atau benda langit lain. Bentuk lintasan pesawat sangat bergantung pada keadaan awal pesawat yakni kecepatan/momentum nya [1]. Pada dasarnya, pengaruh gravitasi pada pesawat terbagi dalam 2 kemungkinan yakni pesawat akan terikat oleh gravitasi tersebut atau pesawat akan mampu melarikan diri dari pengaruh gravitasi tersebut [1, 2]. Pada manuver ayunan gravitasi, kita menginginkan pesawat dapat melarikan diri dari pengaruh gravitasi planet dan berubah arah geraknya. Namun, dalam beberapa kasus, kita juga ingin agar pesawat terikat oleh medan gravitasi planet misalkan pada saat kita ingin meluncurkan satelit buatan. Kondisi terikat juga terbagi menjadi dua yakni kondisi terikat yang stasioner dimana pesawat atau satelit akan mengorbit planet dalam suatu lintasan tertutup, atau pesawat akan tertarik sampai permukaan planet. Tentu saja apabila momentum awal pesawat besar, maka pesawat akan terlepas dari medan gravitasi planet membentuk lintasan terbuka. Jika momentum kecil, maka pesawat akan tertarik sampai ke permukaan planet dan ada nilai momentum tertentu yang membuat pesawat dapat mengorbit planet membentuk lintasan tertutup.
9.3 Metode numerik Metode dinamika molekular digunakan dalam tulisan ini, dengan menerapkan hukum II Newton
∑ F (t ) = ma (t ) i
(9.7)
i
dimana indeks-i menandakan arah x atau y.
Fi dihitung dengan persamaan (9.1)
kemudian diproyeksikan pada arah-i. Besaran-besaran gerak lainnya dihitung menggunakan algoritma Euler. Kecepatan dihitung dengan persamaan,
v i (t + ∆t ) = vi (t ) + a i (t )∆t
(9.8)
dan posisi pesawat dihitung dengan persamaa,
rm ,i (t + ∆t ) = rm ,i (t ) + vi (t )∆t
(9.9)
Pada simulasi ini, nilai v dan θ divariasikan untuk mengetahui bagaimana perilaku manuver sebagai fungsi dari v dan θ . Nilai v divariasikan sebanyak 13 variasi dari 40 sampai 60. Nilai θ divaraisikan sebanyak 12 variasi dari 5o sampai 60o. Pada simulasi ini, parameter yang digunakan disajikan pada Tabel 9.1. Semua parameter disajikan dalam besaran tanpa satuan. Tabel 9.1. Nilai parameter-parameter simulasi
Besaran
Nilai
Keterangan
Besaran
Nilai
Keterangan
R M rm
100
Jari-jari planet
r m
1
Jari-jari pesawat
Massa planet
1
Massa pesawat
Jarak awal
G
6.7
Kons. gravitasi
10
8
1000
201
Komputasi Fisika 2: 9 Pengaruh momentum awal pesawat ..
9.4 Algoritma
v , θ , rx dan ry awal
L1.
Masukkan
L2.
v x = v cos θ dan v y = v sin θ , t = 0
L3.
Mulai iterasi, hitung persamaan (1.1), (1.7), (1.8) dan (1.9)
L4.
Hitung nilai
L5.
Simpan nilai t ,
L.6
Jika
r 2 rm = rx + ry2
r rx , ry , dan rm
r rm > 1000 dan jika v x > 0 maka iterasi dihentikan dengan status
“orbit terlepas” L.7 L.8
r rm < 100 maka iterasi dihentikan dengan status “orbit bertabrakan” r Jika rm > 1000 dan jika v x < 0 maka iterasi dihentikan dengan status Jika
“orbit terpantul” L.6
Jika t > 200 dan maka iterasi dihentikan dengan status “N/A”. Status kemudian ditentukan dengan melihat kurva orbit
9.5 Hasil dan diskusi Perbedaan momentum awal pesawat, keepatan dan arah kecepatan, sangat mempengaruhi bentuk dari lintasan pesawat. Gambar 9.2- 9.4 menunjukkan tiga buah kasus dengan orbit pesawat yang berbeda-beda.
Gambar 9.2 orbit pesawat (merah) di bawah pengarhu gaya gravitasi planet (biru) pada kasus (a) v
= 90 , θ = 30 o dan (b) v = 50 , θ = 60 o . Ini adalah kasus dengan status orbit terpantul karena seloah-olah pesawat dikembalikan kea rah gerak datangnya.
202
Komputasi Fisika 2: 9 Pengaruh momentum awal pesawat ..
Gambar 9.3 orbit pesawat (merah) di bawah pengarhu gaya gravitasi planet (biru) pada kasus (a) v = 160 , θ = 30 dan (b) v = 120 , θ = 40 . Ini adalah kasus dengan status orbit terlepas karena seolah-olah pesawat berhasil melarikan diri dari pengaruh gravitasi planet. o
o
Gambar 9.4 kasus orbit bertabrakan dengan keadaan awal
v = 60 , θ = 30 o .
Dari kelima gambar di atas, terlihat bahwa semakin tinggi kecepatan pesawat, pada suatu sudut tertentu, maka pesawat akan cenderung mampu melarikan diri dari pengaruh gravitasi planet. Keadaan orbit terpantul dapat dicapai apabila sudut datangna pesawat sedemikian rupa sehingga pesawat tidak berada jauh dari planet saat manuver dilakukan. Namun besarnya sudut tidak serta merta menjamin pesawat dapat bermanuver. Sudut yang tepat namun tidak dibarengi kecepatan yang cukup justru akan membuat pesawat mendarat di planet tersebut karena tertarik oleh gravitasinya. Gambar 9.4 memperlihatkan beberapa kasus uji dan bagaimana orbit yang terbentuk sebagai fungsi dari sudut dan kecepatan awal.
203
Komputasi Fisika 2: 9 Pengaruh momentum awal pesawat ..
Gambar 9.5 Hasil kasus uji untuk 156 kasus kombinasi kecepatan dan sudut awal. Warna merah adalah semua kasus orbit bertabrakan, warna biru adalah semua kasus orbit terpantul, dan warna hijau adalah semua kasus orbit terlepas. Garis ungu dan hitam adalah fitting fungsi di daerah perbatasan.
Hal menarik terlihat pada Gambar 9.5 dimana dalam pemetaan sudut, kecepatan, dan bentu orbit, terdapat tren kecenderungan bentuk orbit sebagai fungsi dari kecepatan dan sudut. Proses fitting memberikan hasil yang menyatakan batas atas dan batas bawah kecepatan masing-maing sebagai;
vU = 757.4θ −0.567
(9.10)
v L = 1822θ −0.930
(9.11)
Jika pada sudut θ > θ min kecepatan pesawat kurang dari
v L , maka pesawat akan mengalami tabrakan dengan planet. Jika kecepatan pesawat lebih dari vU , maka pesawat akan melarikan diri dari pengaruh gravitasi planet. Dengan kata lain, manuver ayunan gravitasi untuk kedua kasus gagal. Untuk melakukan ayunan gravitasi yang berhasil, maka pesawat harus bergerak dengan kecepatan di antara v L dan vU . θ min sendiri adalah sudut minimum untuk melakukan manuver yang tidak lain didefinisikan sebagai;
R rm (t = 0)
θ min = tan −1 r
204
(9.12)
Komputasi Fisika 2: 9 Pengaruh momentum awal pesawat ..
9.6 Kesimpulan Hubungan antara bentuk orbit pesawat terhadap sudut dan kecepatan awal pesawat telah diketahui dengan menggunakan eksperimen simulasi komputer untuk kasus ayunan gravitasi. Didapati bahwa agar manuver berhasil dilakukan, maka ada batasbatas kecepatan yang tidak boleh dilewati. Trend yang menarik teramati bahwa batas atas kecepatan berbanding lurus dengan ~ θ −0.5 dan batas bawah kecepatan berbanding lurus dengan ~ θ −1 .
9.7 Referensi 1. 2.
http://solarsystem.nasa.gov/basics/grav/primer.php http://www.scientificamerican.com/article/how-does-the-slingshot-ef/
9.8 Lampiran A. Keterangan penggunaan program dan skrip Tabel 9.2 Program dan skrip serta hasil keluarannya.
Program / Skrip
Piranti lunak
Keluaran
Lampiran
gravity_slingshot.cpp
C++
data kinemati pesawat
B
map.m
Matlab
Gambar 1.5
C
plot_case.m
Matlab
Gambar 1.2 – 1.4
D
case_1.txt
Text Editor
Contoh file keluaran
E
B. Program gravity_slingshot.cpp #include #include #include #include #include #include #include
"./library/ball.h" "./library/vect3.h" "./library/forces.h" "./library/mdynamics.h" <sstream>
using namespace std; const double kG = 6.7; int main(int argc, char **argv) { ball R, P; vect3 rt; int count = 0, i = 0; char fname[10], pname[10]; double tol, esc, max_r;
205
Komputasi Fisika 2: 9 Pengaruh momentum awal pesawat ..
double xb, yb, xe, ye; double t, dt, ti, tf, dtp, angle; double pi=3.14159265359; int nexp = 1; double sudut[12] = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60}; double veloc[13] = {40,50,60,70,80,90,100,110,120,130,140,150,160}; ofstream fout; tol = 1E-4; esc = 1E3; for(int nsudut = 0; nsudut<12; nsudut++){ for(int nveloc = 0; nveloc<13; nveloc++){ //Roket angle = sudut[nsudut]*pi/180; mass(R) = 1.0; d(R) = 1.0; rx(R) = -1000; ry(R) = 0; vx(R) = veloc[nveloc]*cos(angle); vy(R) = veloc[nveloc]*sin(angle); //Planet mass(P) = 1000000.0; d(P) = 50.0; rx(P) = 0.0; ry(P) = 0.0; vx(P) = 0.0; vy(P) = 0.0; ti = 0.0; t = ti;
dt = 1E-3;
tf = 200.0;
rt = r(R) - r(P); max_r = rt.length(); ostringstream temp; temp< 1000 || t > tf) finish = true; } fout.close(); cout<<"Writing data to "<
206
Komputasi Fisika 2: 9 Pengaruh momentum awal pesawat ..
} return 0; }
C. Skrip Matlab map.m [sudut, kecepatan] = meshgrid(5:5:60,40:10:160); n = numel(sudut); result = zeros(n,5); result(:,1) = floor(linspace(1,n,n))'; result(:,2) = reshape(kecepatan,[n,1]); result(:,3) = reshape(sudut,[n,1]); k = 1; l=1; for nexp = 1:n fn = ['data\case_',num2str(nexp),'.txt']; data = dlmread(fn,'\t',1,0); waktu = data(:,1); jarak = data(:,6); result(nexp,4) = min(jarak); if min(jarak)<=97 result(nexp,5) = 1; end if result(nexp,5) == 1 result_crash(k,:) = result(nexp,2:4); k = k+1; end if result(nexp,5) == 0 result_nocrash(l,:) = result(nexp,2:4); l = l+1; end end figure(); xsudut = linspace(15,60,10); yatas = 757.4*xsudut.^(-0.5671); ybawah = 1822.4*xsudut.^(-0.9299); plot(result_crash(:,2),result_crash(:,1),'o'); hold on; plot(result_nocrash(:,2),result_nocrash(:,1),'x'); hold on; plot(xsudut,yatas,'-b'); hold on; plot(xsudut,ybawah,'-r'); hold off; figure();
D. Skrip matlab plot_case.m figure(); ncase = 78; fn = ['data\case_',num2str(ncase),'.txt']; data = dlmread(fn,'\t',1,0); r = data(:,6); pltIdx = find(r>1000,1,'first'); toPlot = [0,0];
207
Komputasi Fisika 2: 9 Pengaruh momentum awal pesawat ..
k = 1; for i = 1:length(data) if mod(i,500)==0 toPlot(k,:) = [data(i,2), data(i,3)]; k = k+1; end end plot(data(1:pltIdx,2),data(1:pltIdx,3),'r') hold on; plot(0,0,'o') hold on; plot(toPlot(:,1),toPlot(:,2),'o') hold off; axis('equal');
E. File case_1.txt #t Rrx 0.0009 0.0018 0.0027 0.0036 0.0045 0.0054 0.0063 0.0072 0.0081 0.0090
Rry Prx -999.96 -999.924 -999.888 -999.853 -999.817 -999.781 -999.745 -999.709 -999.673 -999.637
Pry rt 0.00348623 0.00662384 0.00976144 0.012899 0.0160367 0.0191743 0.0223119 0.0254495 0.0285871 0.0317247
0 0 0 0 0 0 0 0 0 0
208
0 0 0 0 0 0 0 0 0 0
999.964 999.928 999.892 999.857 999.821 999.785 999.749 999.713 999.677 999.641
Simulasi Gerakan Harmonis dan Chaotic pada Sistem Triple Pendulum dengan Metode Dinamika Molekuler-Euler
10
Saepul Pahmi | [email protected] Ilmi Rizkia | [email protected] Adhita Asma Nurunnizar | [email protected] Zeniar Rossa Pratiwi | [email protected] Triple pendulum terdiri tiga buah batang pendulum yang saling mengikat pada ujungnya dengan arah gerak rotasional di bidang vertikal. Merupakan sistem fisik sederhana yang menunjukkan perilaku dinamis yang sangat berpengaruh terhadap kondisi awalnya. Parameter yang divariasikan adalah panjang dan massa masingmasing batang (l1,l2,l3,m1,m2 dan m3). Dalam melakukan variasi parameter, variasi dibagi menjadi dua kelompok yakni variasi panjang dan massa. Dalam variasi panjang, salah satu panjang dijaga konstan dan dua panjang yang lainnya diubah-ubah namun dengan syarat panjang total ketiga batang tetap (3m). Hal yang sama juga dilakukan untuk variasi massa dengan massa total tetap (3kg). Berdasarkan simulasi, diperoleh hasil bahwa terdapat gerakan chaotic selalu terjadi saat salah satu panjang batang ≤ 0.6 meter. Sedangkan pada variasi massa tidak terjadi gerakan chaotic.
10.1 Pendahuluan Triple pendulum terdiri dari tiga buah batang pendulum yang saling mengikat pada ujungnya dengan arah gerak rotasional di bidang vertikal. Merupakan sistem fisik sederhana yang menunjukkan perilaku dinamis yang sangat berpengaruh terhadap kondisi awalnya [1]. Tiga buah batang pendulum ini mempunyai massa m1, m2, dan m3 dengan panjang batang masing-masing l1, l2, dan l3. Ayunan bandul memiliki frekuensi alamiah yang besarnya bergantung pada panjang tali (l) dan percepatan akibat gravitasi (g) di tempat bandul itu berayun. Pada bandul gaya pulihnya adalah komponen gaya berat mg sin θ yang tegak lurus tali penggantung yang arahnya berlawanan dengan simpangan sudut bandul [2]. Tujuan dari penelitian ini adalah menyimulasikan gerak triple pendulum dan mempelajari pengaruh perubahan panjang batang dan massa batang terhadap osilasi gerak batang. Lebih spesifik lagi menganalisis fenomena chaotic pada gerak triple pendulum (TP)
209
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
10.2 Teori A. Pendulum Pada batang tunggal, periode batang yang diayunkan pada sudut tetap terhadap sumbu vertikal diperoleh dari hubungan torsi (τ) dan percepatan sudut (α). Dalam sistem batang pendulum, torsi disebabkan oleh gaya gravitasi (mg).
Gambar 10.1 Pendulum Satu Batang.
Dengan mengasumsikan masa batang secara keseluruhan diwakilkan oleh pusat massanya, maka diperoleh: (10.1) τ = mgl sin θ . Percepatan sudut untuk sistem bandul batang adalah: α=
d 2θ . dt 2
Dengan hubungan antara torsi dan percepatan sudut dinyatakan dengan : τ = Iα .
(10.2)
(10.3)
Sehingga dengan menggabungkan persamaan (10.1), (10.2) dan (10.3) akan didapatkan hubungan persamaan sebagai berikut : mgl sin θ = − I
d 2θ . dt 2
(10.4)
Untuk (θ) yang kecil, nilai sinus θ akan mendekati nilai θ (sin θ ≈ θ) maka persamaan (10.4) akan menjadi : d 2θ mgl . θ =− I dt 2
210
(10.5)
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
Momen inersia batang yang berotasi dengan sumbu rotasi pada salah satu ujungnya adalah : 1 I = ml 2 . 3
(10.6)
Jika persamaan (10.6) disubstitusikan ke persamaan (10.5) kemudian suku diruas kiri dipindahkan ke ruas kanan maka akan didapatkan persamaan berikut: d 2θ 3 g + θ = 0. dt 2 l
(10.7)
Persamaan (10.7) merupakan persamaan osilator harmonik yang memiliki solusi persamaan
θ (t ) = θ 0 sin(ωt + φ ), ω = 3g .
(10.8)
l
Sehingga periode osilasi pada sistem batang adalah T = 2π
l .
(10.9)
3g
B. Sistem pada TP Sistem TP terdiri dari tiga batang yang dihubungkan pada setiap ujungnya seperti pada gambar 10.2. Penyambungan tiap ujung batang menggunakan engsel yang sedemikian rupa sehingga batang di bawahnya dapat bergerak dengan leluasa.
Gambar 10.2 Triple Pendulum
Koordinat pusat massa batang seperti yang diketahui berada pada tengah-tengah batang. Batang dalam permasalahan ini ditinjau batang yang homogen. Pusat massa
211
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
setiap batang jika dinyatakan dalam koordinat kartesius dapat dirumuskan sebagai berikut: 1 y1 = − l1 cosθ1 2 1 x1 = − l1 sin θ1 2 1 y2 = − l2 cos θ 2 + l1 cos θ1 2 1 x2 = − l2 sin θ 2 + l1 sin θ1 2 1 y3 = − l3 cos θ 3 + l1 cos θ1 + l2 cos θ 2 2 1 x3 = − l3 sin θ 3 + l1 sin θ1 + l2 sin θ 2 2
(10.10) (10.11) (10.12) (10.13) (10.14) (10.15)
Posisi θ masing-masing batang dapat ditentukan dengan menggunakan hubungan : y x
(10.16)
θ = arctan( )
10.3 Metode numerik Pada prinsipnya metode dinamika molekuler mengaitkan antara besaran-besaran gerak (posisi, kecepatan, percepatan dan turunan-turunan lainnya terhadap waktu) melalui perantaraan gaya-gaya (potensial interaksi) lewat hukum II Newton tentang gerak.
∑ F = ma .
(10.17)
Metode ini sepintas hanya implementasi dari kinematika dan dinamika belaka, yang akan tetapi dapat mengakomodasi interaksi melalui gaya-gaya (potensial) yang tidak biasa, seperti ; tidak kontinu secara spasial dan tidak kontinu secara temporal. Beberapa algoritma yang mengaitkan antara r(t), v(t) dan a(t) salah satunya adalah algoritma Euler. Algoritma-algoritma ini tak lain diturunkan dari deret Taylor untuk ekspansi suatu fungsi f(t) ∞
f (t ) = ∑n = 0
d n f (t ) dt n
t =t 0
(t − t 0 ) n . n!
(10.18)
Metode Euler disebut juga metode orde-pertama, karena pada persamaan kita hanya mengambil sampai suku orde pertama saja. Masing-masing untuk r(t) dan v(t) sebagai f(t) sehingga dapat diperoleh r r r (10.19) r ( t + ∆t ) = r ( t ) + v∆t , r r r (10.20) v ( t + ∆t ) = v ( t ) + a∆t .
212
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
Metode euler teraproksimasi (improved euler method) diterapkan pada kedua persamaan di atas. Dengan menerapkan pada persamaan (10.19) terlebih dahulu, lalu modikasi pada persamaan (10.20) diperoleh r r r r r ( t + ∆ t ) = r ( t ) + v ( t ) + v ( t + ∆t ) ∆t (10.21)
10.4 Algoritma Simulasi gerak tiga batang dilakukan dengan menggunakan algoritma berikut ini. Data hasil simulasi adalah θ1, θ2 dan θ3 pada setiap waktu. L1.
Input dt, tbeg, tend, m1, m2, m3, l10, l20, l30, θ1, θ2, θ3
L2.
rx0 = 0, ry0 = 0
L3.
rpmx1 = rx0 + 0.5*l10 * sin θ1
L4.
rx1= rpmx1 + 0.5*l10 * sin θ1
L5.
v1x=0, a1x=0
L6.
rpmy1 = rx0 - 0.5*l10 * cos θ1
L7.
ry1 = rpmy1 - 0.5*l10 * cos θ1
L8.
v1y=0, a1y=0
L9.
rxpm2 = rx1 + 0.5*l20 * sin θ2
L10.
rx2 = rxpm2 + 0.5*l20 * sin θ2
L11.
v2x=0 a2x=0
L12.
rypm2 = ry1 - 0.5*l20 * cos θ2
L13.
ry2 = rpmy1 - 0.5*l20 * cos θ2
L14.
v2y=0, a2y=0
L15.
rxpm3 = rx2 + 0.5 * l30 * sin θ3
L16.
rypm3 = ry2 - 0.5 * l30 * cos θ3
L17.
v3x = 0; v3y = 0; a3x = 0; a3y = 0;
L18.
it=it+1
L19.
t=tbeg+it*dt
L20.
rpmx10 = rpmx1 - rx0; rpmy10 = rpmy1 - ry0;
L21.
l1 = sqrt (rpmx10*rpmx10 + rpmy10*rpmy10 )
L22.
fs10x = -k *(l1-(0.5*l10))*rpmx10/l1; fs10y = -k *(l1-(0.5*l10))*rpmy10/l1;
L23.
fg1x = 0; fg1y = - m1 * g
L24.
rx1pm2 = rx1 - rxpm2; ry1pm2 = ry1 - rypm2;
L25.
l2 = sqrt (rx1pm2*rx1pm2 + ry1pm2*ry1pm2)
213
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
L26.
fspm21x =-k*(l2-(0.5*l20))*rx1pm2/l2; fspm21y=-k*(l2-(0.5*l20))*ry1pm2/l2;
L27.
rxpm21 = rxpm2 - rx1; rypm21 = rypm2 - ry2;
L28.
fs1pm2x = - fspm21x; fs1pm2y = - fspm21y;
L29.
fg2x = 0; fg2y = - m2 * g;
L30.
rx2pm3 = rx2 - rxpm3; ry2pm3 = ry2 - rypm3;
L31.
l3 = sqrt (rx2pm3*rx2pm3 + ry2pm3*ry2pm3)
L32.
fspm32x = - k * (l3 - (0.5 * l30)) * rx2pm3/l3; fspm32y = - k * (l3 - (0.5 * l30)) * ry2pm3/l3;
L33.
rxpm32 = rxpm3 - rx2; rypm32 = rypm3 - ry2;
L34.
fs2pm3x = - fspm32x; fs2pm3y = - fspm32y;
L35.
fg3x = 0; fg3y = - m3 * g;
L36.
f1x = fs10x + fspm21x + fg1x; f1y = fs10y + fspm21y + fg1y;
L37.
f2x = fs1pm2x + fspm32x + fg2x; f2y = fs1pm2y + fspm32y + fg2y;
L38.
f3x = fs2pm3x + fg3x; f3y = fs2pm3y + fg3y;
L39.
a1x = 3*f1x/m1; a1y = 3*f1y/m2;
L40.
a2x = 3*f2x/m2; a2y = 3*f2y/m2;
L41.
a3x = 3*f3x/m3; a3y = 3*f3y/m3;
L42.
v1x = v1x + a1x * dt; v1y = v1y + a1y * dt;
L43.
rpmx1 = rpmx1 + v1x * dt; rpmy1 = rpmy1 + v1y * dt;
L44.
θ1 = arc tan(rpmx1/rpmy1)
L45.
v2x = v2x + a2x*dt; v2y = v2y + a2y*dt;
L46.
rxpm2 = rxpm2 + v2x*dt; rypm2 = rypm2 + v2y *dt;
L47.
θ2 = arc tan(rpmx2/rpmy2)
L48.
v3x = v3x + a3x * dt; v3y = v3y + a3y * dt;
L49.
rxpm3 = rxpm3 + v3x * dt; rypm3 = rypm3 + v3y * dt;
L50.
θ3 = arc tan(rpmx3/rpmy3)
L60.
tin
L61.
Selesai
10.5 Hasil dan diskusi Parameter-parameter simulasi yang digunakan diberikan dalam Tabel 10.1 berikut.
214
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
Tabel 10.1 Parameter-parameter simulasi.
Symbol l1, l2, l3 m1, m2, m3 θ1, θ2, θ3 tbeg, tend, ∆t, Tdata K g
Nilai 0.5 – 1.5 0.5 – 1.5 15, 5, 25 0, 10, 10-4, 0.01 1000 10
Code l10, l20, l30 m1, m2, m3 Theta1, theta2, theta3 tbeg, tend, dt, Tdata K G
Parameter yang dijaga tetap dalam simulasi ini adalah K, g, tbeg, tend, tdata dan sudut awal setiap batang. Parameter yang divariasikan adalah l1,l2,l3,m1,m2 dan m3. Dalam melakukan variasi parameter, variasi dibagi menjadi dua kelompok yakni variasi panjang dan massa. Dalam variasi panjang, salah satu panjang dijaga konstan dan dua panjang yang lainnya diubah-ubah namun dengan syarat panjang total ketiga batang tetap. Misalkan : panjang batang 1 dibuat tetap 1 meter, batang 1 diubah-ubah dari 0.5-1.5 meter dan batang 2 diubah dari 1.5-0.5 meter. Variasi massa juga dilakukan hal yang sama. Contoh variasi parameter diberikan pada tabel 10.2. Tabel 10.2 Contoh variasi parameter.
No. 1. 2. 3. 4. 5.
Panjang 1 tetap (l1=1meter) l1 (meter) l2 (meter) 0.5 1.5 0.6 1.4 0.7 1.3 0.8 1.2 0.9 1.1
Massa 1 tetap (m1 = 1 kg) m1(kg) m2(kg) 0.5 1.5 0.6 1.4 0.7 1.3 0.8 1.2 0.9 1.1
Hasil dari variasi parameter untuk massa yang berubah memperlihatkan bahwa sistem bandul tiga batang masih berosilasi secara harmonis. Pola osilasi hasil simulasi sudah menunjukkan kesamaan dengan pola osilasi yang dilakukan pada percobaan yang dilakukan oleh N. Eyre dan J. Holzgrafe [1] dan Simulasi dari Wolfram Alpha. A. Variasi Massa Variasi massa yang dilakukan tidak menunjukkan adanya gerakan batang yang kacau-balau (chaotic). Hasil dari simulasi dengan variasi massa dapat dilihat pada gambar 10.3 dan 10.4. Meskipun tidak menunjukkan gerakan yang chaotic, variasi massa terlihat sangat mempengaruhi pola puncak-puncak osilasi yang terbentuk.
215
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
Gambar 10.3 Hasil Simulasi Dengan Massa Tiap Batang 1 kg
Gambar 10.4 Hasil Simulasi dengan m1 = 0.6 kg, m2 = 1 kg, m3 = 1.4 kg
Berdasarkan gambar 10.3 dan 10.4 terlihat grafik batang 1 paling halus, dan grafik batang 3 terlihat paling banyak riaknya. Hal ini terjadi karena gerakan batang satu merupakan superposisi dari batang 2 dan 3. Frekuensi osilasi dari batang 1 merupakan frekuensi hasil superposisi batang 2 dan 3. Perhitungan pasti nilai frekuensi setiap batang dapat dilakukan dengan Transformasi Fourier. Bentuk puncak – puncak yang berbeda terjadi karena mode gerak batang yang beragam. Puncak yang lancip menunjukkan kecepatan sudut yang besar dan puncak yang datar menunjukkan kecepatan sudut yang kecil. Kecepatan sudut yang besar terjadi karena superposisi konstruktif antar batang.
216
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
B. Variasi Panjang Hasil variasi parameter panjang menunjukkan hal yang berbeda dengan variasi massa. Pada variasi panjang terdapat beberapa nilai panjang yang menyebabkan sistem TP tidak berosilasi dengan harmonis. Variasi panjang pada nilai salah satu batang yang kecil menyebabkan munculnya gerakan chaotic pada sistem TP.
Gambar 10.5 Hasil simulasi variasi panjang tidak chaotic
Gambar 10.7 Hasil simulasi variasi panjang chaotic
Gerakan chaotic terlihat dari posisi sudut pusat massa tiap batang yang nilainya jauh lebih besar dari posisi sudut mula-mula. Perubahan posisi sudut terlihat tidak beraturan.
217
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
C. Tinjauan Fase Parameter Gerak Harmonis dan Chaotic Gerak harmonis atau chaotic akan lebih mudah dibahas dengan mengelompokkan variasi panjang yang memunculkan gerak chaotic. Pada variasi l1 dan l2 terjadi gerak chaotic pada l2 ≤ 0.7 m dan pada l3 ≤ 0.6 m. Hal yang kurang lebih serupa juga terlihat pada variasi l3 dan l1. Gerak chaotic mulai terjadi ketika l1 = 0.6 m dan l3 = 0.7 m. Gerakan chaotic paling banyak muncul pada variasi l1 dan l2. Ketika panjang batang l1 dan l2 = 0.8 m gerak chaotic sudah mulai muncul. Pada gambar 10.8-10.10 diperlihatkan sebaran gerak harmonis dan chaotic pada tiap variasi panjang batang. Adanya gerakan yang chaotic yang ditandai dengan titik merah (●) sedangkan untuk gerakan harmonis ditunjukkan dengan titik biru (●).
Gambar 10.8. Grafik fase parameter l3 dan l2
Gambar 10.9. Grafik fase parameter l3 dan l1
218
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
Gambar 10.10. Grafik fase parameter l2 dan l1
Jika ketiga variasi tersebut digabungkan dalam satu diagram dapat terlihat pola sebaran munculnya gerak chaotic seperti pada gambar 10.11. Pada saat variasi panjang salah satu batang adalah 0.5 m dan 0.6 m selalu muncul gerak chaotic. Variasi panjang 0.7 m pada l1 dan l2 juga menunjukkan munculnya gerak yang tidak harmonis, namun pada saat l3 divariasikan 0.7 m tidak terjadi gerak chaotic. Variasi panjang terbesar yang menyebabkan gerak chaotic adalah pada variasi l1 dan l2.
Gambar 10.11 Ternary Diagram variasi panjang (*segitiga merah menunjukkan sistem chaotic)
Berdasarkan teori untuk bandul dengan sudut yang kecil akan terjadi gerakan harmonis. Menjadi suatu keanehan ketika muncul gerakan yang chaotic. Kemungkinan penyebab terjadinya chaotic tersebut ada 2 hal. Pertama, menurut tinjau fisis dimungkin jika frekuensi pada variasi panjang tersebut (ketika chaotic) sama dengan frekuensi alamiah sistem sehingga terjadi resonansi.
219
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
Peristiwa resonansi ini kemudian memicu terjadinya pertambahan amplitudo dan pada ujungnya menyebabkan terjadiannya gerakan chaotic. Hal ini sesuai dengan persamaan (10.8) bahwa frekuensi berbanding terbalik dengan kuadrat panjang batang. Panjang batang yang kecil akan mengakibatkan frekuensi yang besar. Selaras dengan data bahwa gerakan chaotic terjadi ketika salah satu batang memiliki panjang ≤ 0.6 meter selalu menghasilkan gerak tidak harmonis. Data lain yang mendukung adalah pada variasi massa tidak terjadi gerakan chaotic. Frekuensi osilasi pada persamaan (10.8) hanya merupakan fungsi dari panjang dan gravitasi. Frekuensi tidak bergantung pada massa batang. Kedua, gerakan chaotic terjadi karena kesalahan numerik. Hal ini terlihat dari gerakan chaotic tidak langsung terjadi ketika simulasi dimulai. Gerakan chaotic muncul setelah beberapa detik setelah simulasi berjalan. Ada kemungkinan kesalahan perhitungan dari detik awal diakumulasi sehingga menjadi semakin besar ketika simulasi telah berjalan beberapa detik. Kesalahan yang besar dan menyebabkan terjadinya gerakan chaotic. Perlu dilakukan percobaan pada sistem secara langsung untuk mengetahui penyebab terjadinya gerakan chaotic tersebut.
10. 6Kesimpulan Gerak sistem triple stick pendulum dengan variasi panjang batang dan massa batang telah berhasil disimulasikan dengan metode molekular dinamik dengan menerapkan algoritma Euler. Berdasarkan simulasi, diperoleh hasil bahwa pada variasi massa tidak terjadi gerakan chaotic. Gerak tidak harmonis atau chaotic selalu muncul ketika salah satu panjang batang divariasikan dengan dengan ≤ 0.6 meter. Pada variasi l1 dan l2 ≤ 0.7 m juga selalu muncul gerak chaotic namun tidak untuk l3.
10.7 Referensi 1.
2. 3.
4. 5.
N. Eyre, J. Holzgrafe, “Modeling of a Damped Triple Pendulum (ENGR 2340: Dynamics)”, p. 1-9, https://www.nickeyre.com/images/triplependulum.pdf [20160505] T. Glück, A. Eder, A. Kugi, “Swing-up Control of a Triple Pendulum on a Cart with Experimental Validation”, Automatica, 49(3), p. 801–808, 2013 W. Szuminski. “Dynamics of Multiple Pendulum.”, Lecture Notes, University of Zielona Gora, 2012, URL http://wmii.uwm.edu.pl/~doliwa/IS.../Szuminski2012-Olsztyn.pdf [20160519] S. Viridi, “ Molecular Dynamics Method”, Lecture Notes, Prodi Fisika, Institut Teknologi Bandung, Indonesia, ditulis tanggal 20160328. D. Halliday, R. Resnick, J. Walker, “Fundamentals of Physics”, John Wiley&Sons Inc, 8th edn., Asia, 2008, p. 307-315
220
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
10.8 Lampiran A. Keterangan penggunaan program dan skrip Tabel 10.3 Program dan skrip serta hasil keluarannya.
Program / Skrip
Piranti lunak
Keluaran
Lampiran
md-e-tripm.cpp
C++
θ1, θ2, dan θ3
B
md-e-tripm.gps
Gnuplot
Gambar 1 sampai 9 pada lampiran D
C
B. Program md-e-tripm.cpp /* Example of molecular dynamics method implementating Euler algoritm for cyclic motion Saepul Pahmi | [email protected] Ilmi Rizkia | [email protected] Adhita Asma Nurunnizar | [email protected] Zeniar Rossa Pratiwi | [email protected] sparisoma Viridi | [email protected] compile : g++ md-e-tripm.cpp -o data-md-e-tripm Execute : ./md-e-tripm [[option]] 20160421 Create this program. */ #include #include #include #include
using namespace std; int main (int argc, char *argv[]){ // Define program namespace const char *pname = "md-e-tripm"; //Verbose usage if (argc < 16) { cout << "Usage : " << pname << " "; cout << "[dt tbeg tend Tdata m l10 theta1 k g ofile]"; cout << endl; cout << "dt\ttime step" << endl; //1 cout << "tbeg\tbegin time" << endl; //2 cout << "tend\tend time" << endl; //3 cout << "Tdata\tsampling time of data (Tdata > dt)"; //4 cout << endl; cout << "m1\tmass 1" << endl; //5
221
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
cout << "m2\tmass 2" << endl; //5 cout << "m3\tmass 3" << endl; //5 cout << "l10\tlength of stick 1" << endl; //6 cout << "l20\tlength of stick 2" << endl; //7 cout << "l30 \tlength of stick 3" << endl; cout << "theta1\tinitial angle 1(in degree)" << endl; //8 cout << "theta2\tinitial angle 2 (in degree)" << endl; //9 cout << "theta3\tinitial angle 3 (in degree)" << endl; cout << "k\tspring constant of spring" << endl; //10 cout << "g\tgravity" << endl; //11 cout << "ofile\toutput file" << endl; //12 return 1; } //get all arguments double dt = atof (argv[1]); double tbeg = atof (argv [2]); double tend = atof (argv [3]); double Tdata = atof (argv [4]); double m1 = atof (argv [5]); double m2 = atof (argv [6]); double m3 = atof (argv [7]); double l10 = atof (argv [8]); double l20 = atof (argv [9]); double l30 = atof (argv [10]); double theta1 = atof (argv [11]); double theta2 = atof (argv [12]); double theta3 = atof (argv [13]); double k = atof (argv [14]); double g = atof (argv [15]); const char *ofn = argv [16]; // Define iteratin parameters int Nt = 1 + (int) floor ((tend - tbeg)/dt); int Ndata = 1 + (int) floor(Tdata/dt); // set origin of ro at (xo,yo) double rx0 = 0; double ry0 = 0; // Define motion variables // stick 1 double rpmx1 double rx1 double v1x = double a1x = double rpmy1 double ry1 = double v1y = double a1y =
= rx0 + = rpmx1 0; 0; = rx0 rpmy1 0; 0;
// stick 2 double rxpm2 double rx2 = double v2x = double a2x = double rypm2
= rx1 + 0.5*l20 * sin (theta2 * M_PI/180.0); rxpm2 + 0.5*l20 * sin (theta2 * M_PI/180.0); 0; 0; = ry1 - 0.5*l20 * cos (theta2 * M_PI/180.0);
0.5*l10 * sin (theta1 * M_PI/180.0); + 0.5*l10 * sin (theta1 * M_PI/180.0); 0.5*l10 * cos (theta1 * M_PI/180.0); 0.5*l10 * cos(theta1 * M_PI/180.0);
222
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
double ry2 = rpmy1 - 0.5*l20 * cos (theta2 * M_PI/180.0); double v2y = 0; double a2y = 0; // stick 3 double rxpm3 double rypm3 double v3x = double v3y = double a3x = double a3y =
= rx2 + 0.5 * l30 * sin (theta3 * M_PI/180.0); = ry2 - 0.5 * l30 * cos (theta3 * M_PI/180.0); 0; 0; 0; 0;
// Open output file ofstream fout; fout.open(ofn); //Display data header fout<<"t\trx1\try1\tv1x\tv1y\trpmy1\trpmx1\trxpm2\trypm2\trxpm3\tr ypm3\ttheta1\ttheta2\ttheta3" << endl; //Perform iteration int idata = 0; for(int it = 0; it < Nt; it++) { //Calculation time double t = tbeg + it * dt; //Watch counter for displaying data if(idata == (Ndata - 1)) { idata = 0; } // Display data only for certain period if (idata == 0) { fout << t << "\t"; fout << rx1 << "\t"; fout << ry1 << "\t"; fout << v1x << "\t"; fout << v1y << "\t"; fout << rpmy1 << "\t"; fout << rpmx1 << "\t"; fout << rxpm2 << "\t"; fout << rypm2 << "\t"; fout << rxpm3 << "\t"; fout << rypm3 << "\t"; fout << theta1 << "\t"; fout << theta2 << "\t"; fout << theta3 << endl; } //Benda 1 double double double double double
rpmx10 = rpmx1 - rx0; rpmy10 = rpmy1 - ry0; l1 = sqrt (rpmx10*rpmx10 + rpmy10*rpmy10 ); fs10x = -k *(l1-(0.5*l10))*rpmx10/l1; fs10y = -k *(l1-(0.5*l10))*rpmy10/l1;
223
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
//akibat gravitasi double fg1x = 0; double fg1y = - m1 * g; //akibat batang yang dibawah double rx1pm2 = rx1 - rxpm2; double ry1pm2 = ry1 - rypm2; double l2 = sqrt (rx1pm2*rx1pm2 + ry1pm2*ry1pm2); double fspm21x = -k * (l2 - (0.5*l20))*rx1pm2/l2; double fspm21y = - k * (l2 - (0.5*l20))*ry1pm2/l2; // Stick 2 double rxpm21 = rxpm2 - rx1; double rypm21 = rypm2 – ry1; double fs1pm2x = - fspm21x; double fs1pm2y = - fspm21y; //akibat gravitasi double fg2x = 0; double fg2y = - m2 * g; //akibat batang 3 double rx2pm3 = rx2 - rxpm3; double ry2pm3 = ry2 - rypm3; double l3 = sqrt (rx2pm3*rx2pm3 + ry2pm3*ry2pm3); double fspm32x = - k * (l3 - (0.5 * l30)) * rx2pm3/l3; double fspm32y = - k * (l3 - (0.5 * l30)) * ry2pm3/l3; // Batang 3 double rxpm32 = rxpm3 - rx2; double rypm32 = rypm3 - ry2; double fs2pm3x = - fspm32x; double fs2pm3y = - fspm32y; // akibat gravitasi double fg3x = 0; double fg3y = - m3 * g; //Jumlah gaya - gaya double f1x = fs10x + fspm21x + fg1x; double f1y = fs10y + fspm21y + fg1y; double f2x = fs1pm2x + fspm32x + fg2x; double f2y = fs1pm2y + fspm32y + fg2y; double f3x = fs2pm3x + fg3x; double f3y = fs2pm3y + fg3y; // hukum II Newton a1x = 3*f1x/m1; a1y = 3*f1y/m2; a2x = 3*f2x/m2; a2y = 3*f2y/m2;
224
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
a3x = 3*f3x/m3; a3y = 3*f3y/m3; // Euler algorithm v1x = v1x + a1x * dt; v1y = v1y + a1y * dt; rpmx1 = rpmx1 + v1x * dt; rpmy1 = rpmy1 + v1y * dt; theta1 = -(180.0/M_PI)*(atan(rpmx1/rpmy1)); rx1 = rpmx1 + 0.5*l10* sin (theta1*M_PI/180.0); ry1 = rpmy1 - 0.5*l10 * cos (theta1 * M_PI/180.0); v2x = v2x + a2x*dt; v2y = v2y + a2y*dt; rxpm2 = rxpm2 + v2x*dt; rypm2 = rypm2 + v2y *dt; rx2 = rxpm2 + 0.5 * l20 * sin (theta2 * M_PI/180.0); ry2 = rypm2 + 0.5 * l20 * cos (theta3 * M_PI/180.0); theta2 = -(180.0/M_PI)*(atan(rxpm2/rypm2)); v3x = v3x + a3x * dt; v3y = v3y + a3y * dt; rxpm3 = rxpm3 + v3x * dt; rypm3 = rypm3 + v3y * dt; theta3 = -(180.0/M_PI) * (atan (rxpm3/rypm3)); //Increase counter for displaying data idata++; } //close output file fout.close(); //Terminate program with success state return 0; }
C. Skrip Gnuplot md-e-tripm.gps set terminal pngcairo size 900, 900 set output 'stacking.png' data = "data-md-e-tripm.xls" set lmargin at screen 0.15 set rmargin at screen 0.95 TOP=0.98 DY = 0.29 set multiplot set offset 0,0,graph 0.05, graph 0.05 set xlabel 'time' set ylabel 'theta1' offset 1
225
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
set set set set set set
tmargin at screen TOP-2*DY bmargin at screen TOP-3*DY ytics 5 mytics 5 xtics 1 mxtics 5
plot data u 1:12 title 'First' set xtics format '' unset xlabel set ylabel 'theta2' offset 0 set tmargin at screen TOP-DY set bmargin at screen TOP-2*DY set ytics 5 set mytics 5 set xtics 1 set mxtics 5 plot data u 1:13 title 'Second' set ylabel 'theta3' offset -1 set tmargin at screen TOP set bmargin at screen TOP-DY set ytics 5 set mytics 5 set xtics 1 set mxtics 5 plot data u 1:14 title 'Third' unset multiplot; set output
D. Grafik
Berikut ini lampiran grafik θ terhadap waktu dengan variasi panjang batang D.1 l1 konstan, l2 dan l3 berubah
226
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
Gambar 1. Panjang l1 = 1 , l2 = 0.6 ,dan l3 = 1.4
Gambar 2. Panjang l1 = 1 , l2 = 1.1 ,dan l3 = 0.9
D.2 l2 konstan, l1 dan l3 berubah Gambar 3. Panjang l1 = 1.1 , l2 = 1 ,dan l3 = 0.9
Gambar 4. Panjang l1 = 0.5 , l2 = 1 ,dan l3 = 1.5
D.3 l3 konstan, l1 dan l2 berubah
227
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
Gambar 5. Panjang l1 = 1.5 , l2 = 0.5 ,dan l3 = 1
Gambar 6. Panjang l1 = 1.1 , l2 = 0.9 ,dan l3 = 1
Selanjutnya adalah grafik θ terhadap waktu dengan variasi massa batang D.4 m1 konstan, m2 dan m3 berubah
228
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
Gambar 7. Massa m1 = 1 , m2 = 0.7 ,dan m3 = 1.3
D.5 m2 konstan, m1 dan m3 berubah
Gambar 8. Massa m1 = 1.4 , m2 = 1 ,dan m3 = 0.6
D.6 m3 konstan, m1 dan m2 berubah
229
Komputasi Fisika 2: 10 Simulasi Gerakan Harmonis dan Chaotic ..
Gambar 9. Massa m1 = 1.4 , m2 = 0.6 ,dan m3 = 1
230
Kecepatan akhir tumbukan satu dimensi dua partikel: Sebuah partikel monoatomik dan sebuah partikel diatomik
11
Sparisoma Viridi | [email protected] Siti Nurul Khotimah | [email protected] Suprijadi | [email protected] Tumbukan sebuah partikel monoatomik bermassa m dengan sebuah partikel diatomik yang juga bermassa m dihitung menggunakan metode dinamika molekuler dengan skema bola lunak (soft sphere) yang menerapkan algoritma integrasi numerik Euler dalam menyelesaikan persamaan gerak kedua partikel tersebut. Variasi parameter dilakukan untuk massa jenis ρ, rasio massa kedua partikel pembentuk partikel diatomik rm, konstanta pegas skema bola lunak kN, dan konstanta pegas ikatan internal partikel diatomik kS. Kecepatan awal kedua partikel dibuat tetap vi dan kecepatan akhirnya diamati vf. Terdapat kebergantungan vf terhadap kN dan kurang terhadap ketiga parameter lainnya.
11.1 Pendahuluan Kinetik energi merupakan salah satu bentuk energi pada gas, di mana bentuk energi yang lainnya adalah energi dalam, yang keduanya dapat diketahui dari prinsip mekanika [1]. Gas monoatomik hanya memiliki energi kinetik translasi, sedangkan gas diatomik dapat pula memiliki energi kinetik rotasi dan translasi. Pada gas diatomik partikel pembentuk molekulnya dapat bermassa sama seperti pada H2, D2, O2 dan dapat juga bermassa tidak sama seperti pada NO, CO [2]. Pemodelan dalam satu dimensi satu partikel gas granular menunjukkan bahwa porsi energi kinetik vibrasi jauh lebih kecil dari energi translasi dalam berkontribusi pada energi kinetik total partikel diatomik [3], di mana pada saat tumbukan dapat terjadi konversi dari bentuk energi kinetik translasi ke energi kinetik vibrasi [4]. Dalam tulisan ini dibahas tumbukan antara satu partikel monoatomik dan satu partikel diatomik dan akan diamati kecepatan akhir masing-masing partikel setelah tumbukan.
11.2 Teori Partikel monoatomik A dan partikel diatomik B dibuat bermassa sama m. Posisi partikel monoatomik dinyatakan dengan xA. Untuk partikel diatomik perlu dicari posisi pusat massanya xB yang bergantung dari posisi masing-masing partikel penyusunnya x1 dan x2, yang saling terkait melalui
mx B = m1 x1 + m 2 x 2 ,
231
(11.1)
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
di mana
m1 = rm m ,
(11.2)
m 2 = (1 − rm )m ,
(11.3)
m1 + m 2 = m .
(11.4)
dan sehingga terpenuhi bahwa Rasio massa rm menyatakan seberapa besar porsi massa partikel B yang terdapat pada massa m1 dari keseluruhan massa partikelnya m. Posisi masing-masing partikel tersebut diasumsikan
x1 = x B −
1 (1 − rm ) d . 2
(11.5)
dan
1 rm d . (11.6) 2 Persamaan (11.4) dan (11.5) memenuhi hubungan dalam Persamaan (11.1). Ilustrasi bagaimana kedua partikel ini, A dan B, bertumbukan dan perubahan jarak antar partikel-parikel pembentuk partikel diatomik diberikan dalam Gambar 11.1. x2 = xB +
vAi
vBi
(a) (1 – rm ) m
rm m m
(b) vAf
vBf
(c)
Gambar 11.1 Model tumbukan satu partikel monoatomik dan satu partikel diatomik: (a) sebelum tumbukan, (b) saat tumbukan, dan (c) setelah tumbukan.
232
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
Diameter partikel bermassa m1 dan m2 memiliki massa jenis yang sama ρ, sehingga diameter masing-masing partikel diberikan oleh 1/ 3
6m Di = i , i = 1, 2 . (11.7) ρπ Gaya tumbukan antar partikel A dan B diberikan oleh model pegas linier (linear spring-dashpot), di mana gaya yang bekerja pada partikel i akibat bertumbukan dengan partikel j adalah N ,ij = k N ξ ij − γ N
dξ ij
. (11.8) dt Partikel-partikel penyusun partikel B saling berinteraksi lewat gaya pegas, di mana gaya ikatan pegas antara partikel i dan j diberikan oleh
S ij = −k S (x ij − l 0 ) .
(11.9)
Dalam Persamaan (11.7) dan (11.8) variabel ξij menggambarkan irisan (overlap) antara kedua partikel yang diasumsikan berbentuk bola [5] dan l0 adalah panjang normal ikatan yang masing-masing diberikan oleh
1 (Di + D ) j − xij 2
ξ ij = max 0,
(11.10)
dan
1 (Di + D j ) , (11.11) 2 di mana Di adalah diameter partikel i dan Dj adalah diameter partikel j. Posisi relatif partikel i terhadap partikel j berupa vektor xij = xi – xj, sedangkan jarak antar kedua partikel tersebut berupa skalar |xij|. Untuk nilai dξ/dt dapat digunakan –vij [6]. Skema interaksi dalam Persamaan (11.8) termasuk dalam skema bola lunak (soft sphere). l0 =
11.3 Metode numerik Metode dinamika molekular digunakan dalam tulisan ini, dengan menerapkan hukum II Newton
∑F
i
= ma i
(11.12)
dan besaran-besaran gerak lainnya dihitung menggunakan algoritma Euler untuk menghitung kecepatan partikel i
v i (t + ∆t ) = vi (t ) + a i (t )∆t
(11.13)
x i (t + ∆t ) = x i (t ) + vi (t )∆t
(11.14)
dan posisi partikel i pada waktu t + ∆t. Partikel monoatomik memiliki indeks 0 dan kedua partikel pembentuk partikel diatomik memiliki indeks 1 dan 2. Implementasi Persaman (11.12) untuk ketiga partikel adalah
233
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
1 N 01 , m0
(11.15a)
1 (N 10 + S12 ) , m1
(11.15b)
1 S 21 . m2
(11.15c)
a0 = a1 =
a2 =
Kecepatan v0, v1, v2, dan posisi x0, x1, dan x2 saat t + ∆t diperoleh dengan menggunakan Persaman (11.13) dan (11.14).
11.4 Algoritma Simulasi tumbukan partikel monoatomik dengan partikel diatomik dilakukan dengan menggunakan algoritma berikut ini untuk memperoleh vf. L1. kN, γN, kS? L2.
ρ, D, rm?
L3.
tbeg, tend, dt, Tdata?
L4.
v i?
L5.
xA, xB?
L6.
m0 = m, m1 = rm·m, m2 = (1 – rm)·m.
L7.
D0 = D, D1 = (6m1/ρπ)1/3, D2 = (6m2/ρπ)1/3, l0 = 0.5·(D1 + D2).
L8.
x0 = xA, x1 = xB – 0.5·(1 – rm)·D, x1 = xB + 0.5·rm·D.
L9.
v0 = vi, v1 = –vi, v2 = –vi.
L10.
t = tbeg.
L11.
x01 = x0 – x1, |x01| = (x01·x01)1/2.
L12.
ξ01 = max[0, 0.5·(D0 + D1) – |x01|].
L13.
v01 = v0 – v1.
L14.
dξ01/dt = –v01.
L15.
N01 = kN·ξ01 – γN·dξ01/dt, N10 = –N01.
L16.
x12 = x1 – x2, |x01| = (x01·x01)1/2.
L17.
S12 = –kS·(x12 – l0), S21 = –S12.
L18.
a0 = N01 / m0, a1 = (N10 + S12) / m1, a2 = S21 / m2.
L19.
v0 = v0 + a0·dt, v1 = v1 + a1·dt, v2 = v2 + a2·dt.
L20.
x0 = x0 + v0·dt, x1 = x1 + v1·dt, x2 = x2 + v2·dt.
L21.
t < tend → L11.
L22.
vf = |v0| = (v0·v0)1/2.
234
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
11.5 Hasil dan diskusi Parameter-parameter simulasi yang digunakan diberikan dalam Tabel 11.1 berikut. Tabel 11.1 Parameter-parameter simulasi.
Symbol
Nilai
Code
kN
1000 – 9000
kN
γN
0.1
gN
kS
1000 – 9000
kS
ρ
2500 – 8000
rho
D
0.003
d
rm
0.1 – 0.9
rm
-4
tbeg, tend, ∆t, Tdata
0, 2, 10 , 0.01
tbeg, tend, dt, Tdata
vi
0.002
vi
Parameter standar yang digunakan adalah kN = 103, kS = 103, ρ = 7500, dan rm = 0.5 bila tidak divariasikan. Variasi ρ, rm, kN, dan kS diberikan dalam Gambar 1.2 – 1.5, berturut-turut.
Gambar 11.2 Kecepatan akhir vf sebagai fungsi dari massa jenis ρ.
Tidak terlihat perubahan vf yang besar saat divariasikan ρ antara 2500 sampai 8000. Hal ini tidak demikian saat rm divariasikan, di mana antara 0.3–0.9 terdapat nilai rm yang memberikan vf minimum, yaitu di sekitar 0.5, sedangkan antara 0.1–0.3, vf terlihat bertambah secara linier dengan bertambahnya rm. Untuk nilai kS (1000–4000) kecil vf bertambah dengan bertambahnya kS dan untuk nilai kS besar (7000–9000) vf berkurang dengan bertambahnya kS. Pada nilai tengah (4000–7000) terdapat nilai vf minimum. Terlihat bahwa kN tidak banyak berpengaruh dalam menentukan nilai vf, yang secara umum lebih besar saat kN ≈ 9000.
235
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
Gambar 11.3 Kecepatan akhir vf sebagai fungsi dari rasio massa rm.
Gambar 11.4 Kecepatan akhir vf sebagai fungsi dari konstanta kS.
Gambar 11.5 Kecepatan akhir vf sebagai fungsi dari konstanta kN.
236
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
Keempat parameter yang divariasikan, ρ, rm, kN, kS, sudah pasti tidak memenuhi hubungan liner yang sederhana seperti
v f = vi + f (ρ , rm , k N , k S )
(11.16)
di mana telah ditunjukkan dalam Gambar 1.2–1.5 bahwa
f (ρ , rm , k N , k S ) ≠ c1 ρ + c2 rm + c3 k N + c4 k S .
(11.17)
Hal ini dapat terlihat dengan menghitung beberapa nilai vf dengan melakukan sekaligus variasi kN dan kS sebagaimana diberikan dalam Gambar 1.6.
Gambar 11.6 Kecepatan akhir vf sebagai fungsi variasi kS dan kN: vf < vi (□) dan vf > vi (●).
Adanya vf > vi dalam Gambar 1.6 yang ditunjukkan dengan (●), terlepas apakah akibat kesalahan numerik atau bukan, menggambarkan bahwa terdapat dua keadaan berbeda yang dapat dipisahkan dengan
(
) (
)
5 k N − 10 × 10 3 + 4 k S − 5 × 10 3 = 0 .
(11.18)
Pasangan konstanta (kN, kS) yang lebih besar dari Persamaan (11.18) akan memberikan keadaan vf > vi (●) dan yang lebih kecil akan memberikan keadaan vf < vi (□). Keadaan kedua mengindikasikan bahwa hukum kekekalan energi tidak berlaku, yang berarti energi total setelah tumbukan lebih besar dari energi total sebelum tumbukan. Hal ini lebih diduga karena kesalahan numerik ketimbang suatu fenomena fisis sebenarnya. Dengan demikian, Persamaan (11.18) lebih menunjukkan rentang parameter keberlakuan hukum kekelanan energi, yang dalam hal ini salah satu parameter fisis yang berperan adalah ∆t = 10-4.
11.6 Kesimpulan Tumbukan dua partikel dengan satu partikel monoatomik dan satu partikel diatomik telah dapat disimulasikan dengan metode molekular dinamik dalam skema bola lunak yang menerapkan algoritme Euler. Parameter ρ, rm, kN, kS menentukan kecepatan akhir partikel. Ada kombinasi (kN, kS) tertentu yang melanggar hukum kekekalan energi.
237
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
11.7 Referensi 1. 2.
3.
4.
5. 6.
M. Planck , "Treatise on Thermodynamics", Dover Publication, 3rd edn., Berlin, 1917, p. 48. E. Poisson, "Statistical Physics I (PHY*3240)", Lecture notes, Departement of Physics, University of Guelp, Fall 2000, p. 31, URL http://www.physics .uoguelph.ca/poisson/research/spi.pdf [20150510]. S. N. Khotimah, S. Viridi, Widayani, A. Waris, "Energy of One-Dimensional Diatomic Elastic Granular Gas: Theory and Molecular Dynamics Simulation", Indonesian Journal of Physics 22 (3), 103-106 (2011). S. N. Khotimah, S. Viridi, Widayani, "Transition Parameter in OneDimensional Elastic Diatomic Granular Gas: Theory and Molecular Dynamics Simulation", in The 3rd International Conference on Advances in Nuclear Science and Engineering-2011, edited by Z. Su'ud et al., AIP Conference Proceedings 1448, American Institute of Physics, Melville, NY, 2012, pp. 177184. J. Schäfer, S. Dippel, D. E. Wolf, "Force Schemes in Simulations of Granular Materials", Journal de Physique 6, 5-20 (1996). U. Fauzi, S. Viridi, Nurhasan, "Two Dimension Numerical Modeling and Laboratory Experiment of Slope Change in Granular Piles due to Water Content", in The 4th Asian Physics Symposium-2010, edited by Khairurrijal et al., AIP Conference Proceedings 1325, American Institute of Physics, Melville, NY, 2010, pp. 124-127.
11.8 Lampiran A. Keterangan penggunaan program dan skrip Tabel 11.2 Program dan skrip serta hasil keluarannya.
Program / Skrip
Piranti lunak
Keluaran
Lampiran
colls2-mono-dia.cpp
C++
vf
B
plot-v-rho.gps
Gnuplot
Gambar 1.2
C
plot-v-rm.gps
Gnuplot
Gambar 1.3
D E
plot-v-kn.gps
Gnuplot
Gambar 1.4
plot-v-ks.gps
Gnuplot
Gambar 1.5
F
plot-v-kn-ks-fasa.gps
Gnuplot
Gambar 1.6
G
B. Program colls2-mono-dia.cpp /* colls2-mono-dia.cpp Collision of two particles: monoatomic and diatomic particles Sparisoma Viridi | [email protected] Compile: g++ colls2-mono-dia.cpp -o colls2-mono-dia
238
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
Execute: ./colls2-mono-dia [options] 20160509 Create this program. Problem in finding position of center of mass: solved at 1820. 20160510 Continue fixing the program. */ #include #include #include #include #include
<sstream>
#include #include #include #include
"rwparams.h" "ball.h" "forces.h" "mdynamics.h"
using namespace std; int main(int argc, char *argv[]) { // Define program name const char *pname = "colls2-mono-dia"; // Verbose usage if(argc < 2) { cout << "Usage: " << pname << " [paramsf]" << endl; cout << "paramsf\tparameters file" << endl; return 1; } // Get parameters filename const char *pfn = argv[1]; // Read parameters from params file double kN = -1.97E-3; readparam(pfn, "IKN", kN); double gN = -1.97E-3; readparam(pfn, "IGN", gN); double kS = -1.97E-3; readparam(pfn, "IKS", kS); double tbeg = -1.97E-3; readparam(pfn, "TBEG", tbeg); double tend = -1.97E-3; readparam(pfn, "TEND", tend); double dt = -1.97E-3; readparam(pfn, "TSTEP", dt); double Tdata = -1.97E-3; readparam(pfn, "TDATA", Tdata); double rho = -1.97E-3; readparam(pfn, "PRHO", rho); double d = -1.97E-3; readparam(pfn, "PDMTR", d); double rm = -1.97E-3; readparam(pfn, "PRMAS", rm); double Npar;
239
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
readparam(pfn, "PNUM", Npar); double Ndig; readparam(pfn, "PDIG", Ndig); string prefix; readparam(pfn, "FNPRE", prefix); string sufix; readparam(pfn, "FNSU", sufix); int fndig = -1973; readparam(pfn, "FNDIG", fndig); int fnbeg = -1973; readparam(pfn, "FNBEG", fnbeg); int fncur = -1973; readparam(pfn, "FNCUR", fncur); // Verbose parameters or current file number stringstream ps; if(fncur == 0) { ps << "# Interactions" << endl; ps << "IKN\t" << kN << endl; ps << "IGN\t" << gN << endl; ps << "IKS\t" << kS << endl; ps << endl; ps << "# Simulation" << endl; ps << "TBEG\t" << tbeg << endl; ps << "TEND\t" << tend << endl; ps << "TSTEP\t" << dt << endl; ps << "TDATA\t" << Tdata << endl; ps << endl; ps << "# Particles" << endl; ps << "PRHO\t" << rho << endl; ps << "PDMTR\t" << d << endl; ps << "PRMAS\t" << rm << endl; ps << "PNUM\t" << Npar << endl; ps << "PDIG\t" << Ndig << endl; ps << endl; ps << "# Filename" << endl; ps << "FNPRE\t" << prefix << endl; ps << "FNSU\t" << sufix << endl; ps << "FNDIG\t" << fndig << endl; ps << "FNBEG\t" << fnbeg << endl; ps << "FNCUR\t" << fncur << endl; ps << endl; cout << ps.str(); ps.clear(); ps.str(string()); } else { cout << "FNCUR\t" << fncur << endl; cout << endl; } // Create input filename stringstream fnum; fnum << setw(fndig); fnum << setfill('0'); fnum << fncur; stringstream ss; ss << prefix << fnum.str() << sufix; string fn = ss.str();
240
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
const char *ifn = fn.c_str(); // Define array of particles int N = Npar + 1; ball b[N]; for(int i = 0; i < Npar; i++) { stringstream fnum; fnum << setw(Ndig); fnum << setfill('0'); fnum << i; string pttrn; vect3 v3; pttrn = "R" + fnum.str(); readparam(ifn, pttrn.c_str(), v3); b[i].r = v3; pttrn = "V" + fnum.str(); readparam(ifn, pttrn.c_str(), v3); b[i].v = v3; double V = (M_PI / 6.0) * d * d * d; double m = rho * V; b[i].m = m; b[i].d = d; double q = 0; b[i].q = q; } // Change diatomic particle properties double m = b[1].m; b[1].m = rm * m; b[2].m = (1 - rm) * m; b[2].d = 2 * pow(b[2].m / rho * (3.0 / 4 / M_PI), 1.0 / 3); b[1].d = 2 * pow(b[1].m / rho * (3.0 / 4 / M_PI), 1.0 / 3); b[2].v = b[1].v; double rrm = rm * (1 - rm); vect3 rpm = b[1].r; b[1].r = rpm - 0.5 * (1 - rm) * d * vect3(1, 0, 0); b[2].r = rpm + 0.5 * rm * d * vect3(1, 0, 0); double l0 = (b[2].r - b[1].r).length(); b[2].q = b[1].q; // Perform molecular dynamics simulation double t = (fncur - fnbeg) * Tdata; int Nt = floor(Tdata / dt) + 1; for(int it = 0; it < Nt; it++) { vect3 SF[N]; for(int i = 0; i < N; i++) {
241
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
SF[i] = vect3(); } SF[0] SF[1] SF[1] SF[2]
= = = =
SF[0] SF[1] SF[1] SF[2]
+ + + +
fN(b[0], fN(b[1], fS(b[1], fS(b[2],
b[1], b[0], b[2], b[1],
kN, kN, kS, kS,
gN); gN); l0); l0);
for(int i = 0; i < N; i++) { vect3 a = SF[i] / b[i].m; b[i].a = a; vect3 v = b[i].v; vect3 r = b[i].r; intEuler(r, v, a, dt); b[i].v = v; b[i].r = r; } t+= dt; } cout << b[0].v.x << "\t"; cout << b[1].v.x << endl; // Create output filename fncur++; fnum.clear(); fnum.str(string()); fnum << setw(fndig); fnum << setfill('0'); fnum << fncur; ss.clear(); ss.str(string()); ss << prefix << fnum.str() << sufix; fn = ss.str(); const char *ofn = fn.c_str(); // Merge diatomic particles b[1].r = (b[1].m * b[1].r + b[2].m * b[2].r) / m; b[1].v = (b[1].m * b[1].v + b[2].m * b[2].v) / m; // Write output particles file double tf = (fncur - fnbeg) * Tdata; ofstream fout; fout.open(ofn); fout << "# Time stamp" << endl; fout << "T\t" << tf << endl; fout << endl; for(int i = 0; i < Npar; i++) { fout << "# Particle " << i << endl; fout << "R" << i << "\t" << b[i].r.strval() << endl; fout << "V" << i << "\t" << b[i].v.strval() << endl; if(i < Npar - 1) fout << endl; } fout.close(); // Modifiy parameters file ps << "# Interactions" << endl;
242
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
ps << "IKN\t" << kN << endl; ps << "IGN\t" << gN << endl; ps << "IKS\t" << kS << endl; ps << endl; ps << "# Simulation" << endl; ps << "TBEG\t" << tbeg << endl; ps << "TEND\t" << tend << endl; ps << "TSTEP\t" << dt << endl; ps << "TDATA\t" << Tdata << endl; ps << endl; ps << "# Particles" << endl; ps << "PRHO\t" << rho << endl; ps << "PDMTR\t" << d << endl; ps << "PRMAS\t" << rm << endl; ps << "PNUM\t" << Npar << endl; ps << "PDIG\t" << Ndig << endl; ps << endl; ps << "# Filename" << endl; ps << "FNPRE\t" << prefix << endl; ps << "FNSU\t" << sufix << endl; ps << "FNDIG\t" << fndig << endl; ps << "FNBEG\t" << fnbeg << endl; ps << "FNCUR\t" << fncur << endl; ofstream pout; pout.open(pfn); pout << ps.str(); pout.close(); // Terminate program with success state return 0; }
C. Skrip Gnuplot plot-v-rho.gps # Plot final velocity againts density set term post eps color enhanced font ", 20" set output "v-rho.eps" set xtics 1000 set xrange [2500:8000] set ytics 0.0002 set yrange [0.0008:0.0022] set grid set xlabel "{/Symbol r}" set ylabel "{/Oblique v}_{/Oblique f}" plot "data.txt" u 1:2 every :::1::1 notitle \ w lp pt 4 ps 2 lw 2, 0.002 lw 3 lc 3 notitle
D. Skrip Gnuplot plot-v-rm.gps # Plot final velocity againts ratio of mass set term post eps color enhanced font ", 20" set output "v-rm.eps" set xtics 0.1 set xrange [0.1:0.9] set ytics 0.0002 set yrange [0.0008:0.0022]
243
Komputasi Fisika 2: 11 Kecepatan akhir tumbukan satu dimensi ..
set grid set xlabel "{/Oblique r}_{/Oblique m}" set ylabel "{/Oblique v}_{/Oblique f}" plot "data.txt" u 1:2 every :::0::0 notitle \ w lp pt 4 ps 2 lw 2, 0.002 lw 3 lc 3 notitle
E. Skrip Gnuplot plot-v-kn.gps # Plot final velocity againts kn set term post eps color enhanced font ", 20" set output "v-kn.eps" set xtics 1000 set xrange [1000:9000] set ytics 0.0002 set yrange [0.0008:0.0022] set grid set xlabel "{/Oblique k}_{/Oblique n}" set ylabel "{/Oblique v}_{/Oblique f}" plot "data.txt" u 1:2 every :::3::3 notitle \ w lp pt 4 ps 2 lw 2, 0.002 lw 3 lc 3 notitle
F. Skrip Gnuplot plot-v-ks.gps # Plot final velocity againts ks set term post eps color enhanced font ", 20" set output "v-ks.eps" set xtics 1000 set xrange [1000:9000] set ytics 0.0002 set yrange [0.0008:0.0022] set grid set xlabel "{/Oblique k}_{/Oblique s}" set ylabel "{/Oblique v}_{/Oblique f}" plot "data.txt" u 1:2 every :::2::2 notitle \ w lp pt 4 ps 2 lw 2, 0.002 lw 3 lc 3 notitle
G. Skrip Gnuplot plot-v-kn-ks-fasa.gps # Plot final velocity againts ratio of mass set size ratio -1 set term post eps color enhanced font ", 20" set output "kn-ks-fasa.eps" set xtics 1000 set xrange [1000-500:9000+500] set ytics 1000 set yrange [1000-500:9000+500] set grid set xlabel "{/Oblique k}_{/Oblique N}" set ylabel "{/Oblique k}_{/Oblique S}" plot \ "data2.txt" u 1:3 notitle w p pt 4 ps 2 lw 2, \ "data2.txt" u 1:4 notitle w p pt 7 ps 2 lw 1
244
Simulasi pergerakan ion pada ion counter dengan medan listrik nonhomogen dan pengaruh gaya gesek udara
12
Muhammad Yangki Sulaeman | [email protected] Rombang Rizky | [email protected] Lia Yuliantini | [email protected] Dian Ahmad Hapidin | [email protected] Ion counter adalah alat yang digunakan untuk menghitung jumlah ion di udara. Alat ini menggunakan medan listrik untuk membelokkan arah gerak ion sehingga dapat ditangkap elektroda. Dalam tugas ini disimulasikan pergerakan ion di dalam ion counter akibat pengaruh medan listrik yang tidak homogen dan gesekan udara. Simulasi dilakukan dengan metode Euler. Dari hasil simulasi diperoleh bahwa pergerakan partikel dengan asumsi medan nonhomogen memberikan hasil yang mendekati hasil eksperimen dibandingkan asumsi medan homogen. Selain itu gesekan udara juga mempengaruhi jarak ion mengenai elektroda.
12.1 Pendahuluan Partikel-partikel bermuatan (ion) di udara dapat mempengaruhi kesehatan manusia. Ion negatif ringan memiliki dampak positif bagi kesehatan, sedangkan ion berat dan ion positif dapat berdampak buruk bagi kesehatan. Ion positif dapat mempengaruhi kondisi psikologis seseorang seperti ketegangan, cemas, mudah tersinggung, lemas, dan depresi [0]. Selain itu ion positif juga dipercaya sebagai salah satu faktor penyebab asma. Ion-ion di udara dapat berasal dari berbagai sumber seperti radioaktivitas alam, radiasi kosmik, pembakaran, sumber tegangan tinggi, dsb [1]. Olehkarena itu alat pengukur ion (ion counter) sangat dibutuhkan untuk memantau konsentrasi ion di lingkungan hidup kita.
245
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
Gambar 12.1 Diagram dari ion counter dengan kapasitor Gerdien [2].
Metode paling mudah dan umum digunakan untuk mengukur konsentrasi ion diudara adalah menggunakan Kapasitor Gerdien. Model ion counter ini terdiri dari dua elektroda yang dibentuk seperti kapasitor silinder dimana elektroda luar dan dalam diberikan beda potensial sehingga timbul medan listrik di dalamnya. Kemudian ionion didorong masuk kedalam kapasitor ini menggunakan aliran udara. Karena adanya medan listrik di dalam ion counter, maka ion-ion dengan polaritas muatan yang diinginkan dapat tertangkap pada elektroda [3]. Diagram dari kapasitor gerdien sebagai ion counter ditunjukkan oleh Gambar 12.1. Karena ion di udara biasanya bermuatan tunggal (q = 1.62 x 10-19 C), maka jumlah ion yang diukur ion counter N adalah [3]
N=
I , q ⋅Q
(12.1)
di mana Q adalah laju alir udara di dalam ion counter (l/min). Besarnya medan listrik di dalam ion counter menentukan rentang massa atau ukuran ion yang akan ditangkap elektroda. Jika medan listriknya kecil maka hanya ion dengan massa dan ukuran kecil saja yang dapat ditangkap elektroda sedangkan ion yang lebih besar akan lewat saja. Pergerakan ion yang dipengaruhi oleh medan listrik di dalam ion counter (seperti ditunjukkan Gambar 12.1) mengasumsikan bahwa medan di dalam ion counter adalah homogen. Kenyataannya medan di dalam ion counter tidak mungkin homogen, salah satunya karena panjang elektroda yang terbatas (sekitar 65 mm), sehingga medan listrik di ujung elektroda akan berbeda dengan medan listrik di tengah elektroda. Akibatnya kita tidak bisa menentukan rentang ukuran atau massa ion yang ingin ditangkap elektroda secara pasti. Selain itu pergerakan ion di dalam ion counter juga bergantung pada gaya gesek udara terhadap ion tersebut. Udara yang mengalir di dalam ion counter akan membawa ion ke dalam ion counter. Pada kebanyakan kasus diasumsikan tidak terjadi slip antara udara pembawa dengan ion sehingga kecepatan ion akan sama dengan kecepatan udara. Pada kasus yang mana gaya gesek diantara keduanya sangat kecil maka akan
246
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
timbul slip sehingga mempengaruhi nilai kecepatan ion. Akibatnya rentang masa ion yang ingin dideteksi harus dikoreksi.Oleh karena itu diperlukan metode numerik untuk mensimulasikan pergerakan ion di dalam ion counter dengan medan yang nonhomogen dan gesekan pada udara.
12.2 Model Simulasi dilakukan dengan menyusun dua elektroda sebagai penghasil medan listrik. Ion-ion yang masuk melewati kedua elektroda ini dapat ditangkap atau diloloskan tergantung dari beberapa parameter seperti massa dan kecepatan ion serta medan listrik yang dihasilkan elektroda. Pada penelitian [4] telah dilakukan eksperimen ion counter menggunakan medan homogen. Dalam tulisan ini, simulasi akan dilakukan menggunakan medan listrik homogen dan nonhomegen tetapi dengan parameterparameter yang sama seperti pada penelitian tersebut. Permasalah akan lebih kompleks jika gaya gesek ditambahkan pada situasi ini. Untuk menyelesaikan permasalan pada medan listrik homogen dapat menggunakan hukum Coulomb. Gambar 12.2 menunjukkan sebuah elemen muatan dq = ρ dV yang sangat kecil sehingga dapat dianggap sebuah muatan titik. Hukum Colulomb menyatakan bahwa medan listrik pada titik medan P sebagai [5]
r dE karena elemen muatan tersebut yang berada
dE =
k dq , rˆ r2
(12.2)
di mana rˆ adalah unit vektor dari titik sumber ke titik medan P. Total medan pada P dihitung dengan mengintegralkan Persamaan (1.1) yaitu: E=∫ V
k dq , rˆ r2
(1.3)
dengan dq = ρdV. Jika muatan didistribusikan pada permukaan atau garis, maka digunakan dq = τdA atau dq = λdL. Kemudian persamaan tersebut diintegrasikan dengan seluruh permukaan atau garis tersebut.
Gambar 12.2 Sebuah elemen muatan dq yang menghasilkan medan dE pada titik P [5].
247
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
Gambar 12.3 Medan listrik di titik P [6].
Untuk menghitung medan listrik pada titik P yang terletak pada (a,b) dari batang bermuatan (Gambar 12.3) dapat diturunkan dari persamaan hukum Coulomb. Dari Gambar 12.3 terlihat bahwa komponen medan listrik pada daerah tersebut terbagi menjadi dua yaitu pada arah horizontal Ex dan arah vertikal Ey. Pada permasalahan ini medan listrik yang dihasilkan adalah tidak homogen. Dengan menggunakan trigonometri dapat dirumuskan[6]
∆E iy = E i cos θ ∆E iy =
(12.4)
λ ∆x i cos θ . 4πε 0 ri 2
Dengan mengambil limit karena ∆x mendekati 0, sehingga:
λ
∑ 4πε ∆x →0
E y = lim
∆x i 0
ri
cos θ = ∫
2
λ dx cos θ , 4πε 0 r 2
(12.5)
Dari Gambar 12.3 diperoleh bahwa
b cos θ = . r Dengan memaasukkan Persamaan (12.5) ke (12.4) sehingga diperoleh r 2 = x2 + b2 ,
Ey = ∫
λ dx b 4πε 0 x 2 + b 2 r
⇒ E y = λ ∫
dx 4πε 0 x + b 2 2
248
b 2 x + b 2
,
(12.6)
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
L−a
⇔ Ey =
∫
−a
λb 4πε 0
dx x2 + b2
(
)
3/ 2
.
(12.7)
,
(12.8)
dimana x = 0 adalah titik O. Telah umum diketahui bahwa [7]
x 2 2 2 +b x +b Sehingga Persamaan (12.7) dapat diselesaikan menjadi dx
∫ (x
Ey =
λb 4πε 0
=
)
2 3/ 2
1 b2
L−a (L − a )2 + b 2
(
(
)
1/ 2
+
(a
)
1/ 2
a +b
2
)
2 1/ 2
.
(12.9)
Persamaan untuk Ex dapat diperoleh dengan mengulangi proses seperti pada persamaan (12.3) sampai (12.7)
∆E ix = E i sin θ , (12.10)
λ ∆xi sin θ , 4πε 0 ri 2
Ex = ∑
λ dx λ ∆x i E y = lim ∑ sin θ = ∫ sin θ . 4πε 0 r 2 ∆x →0 4πε 0 r 2 i
(12.11)
Dari Gambar 12.3 diperoleh bahwa
sin θ =
r 2 = x2 + b2 ,
Ex = ∫ ⇒ Ex = ∫
x . r
(12.12)
λ dx x 4πε 0 x 2 + b 2 r
λ dx x 2 2 2 4πε 0 x + b x + b 2 L−a
∫
⇔ Ex =
−a
λx 4πε 0
dx x2 + b2
(
)
(12.13)
.
(12.14)
3/ 2
Telah umum diketahui bahwa [7]
∫ (x
xdx 2
+ b2
)
3/ 2
1 = − x2 + b2
(
Sehingga Persamaan (12.13) dapat diselesaikan menjadi
249
)
1/ 2
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
Ex =
λ 4πε 0
1 2 a + b2
(
)
1/ 2
−
((L − a )
1 2
+b
)
2 1/ 2
(12.15)
Gaya gesek udara adalah gaya interaksi antara benda dengan udara. Pada kecepatan rendah, hambatan udara sebanding dengan kecepatanya yang dapat diekspresikan [8]
f drag = −bv
(12.16)
dimana tanda negatif menunjukan bahwa gaya gesek selalu berlawanan arah dengan kecepatanya.
12.3 Metode numerik Pada simulasi yang dilakukan, digunakan hukum Newton II untuk merumuskan gerak ion di dalam ion counter.
∑ F = ma
(12.17)
Dalam simulasi yang dilakukan terdapat tiga macam situasi yang diubah, yaitu sebagai berikut: (i) Pergerakan ion pada medan listrik homogen dan medan listrik nonhomogen tanpa gaya gesek. (ii) Pergerakan ion pada medan homogen dengan adanya gaya gesek dan tanpa adanya gaya gesek. (iii) Pergerakan ion pada medan nonhomogen dengan adanya gaya gesek dan tanpa adanya gaya gesek. Pada situasi dimana medan listriknya homogen, maka gaya luar yang bekerja pada ion hanya pada arah y saja, sehingga percepatan ion adalah ay =
qE . m
(12.18)
Sedangkan pada situasi dengan menggunakan medan listrik nonhomogen, maka terdapat dua komponen medan listrik tersebut, yaitu komponen medan listrik ke arah x dan y, sehingga percepatannya adalah ax =
qE x m
(12.19a)
ay =
qEy . m
(12.19b)
dan
Apabila gaya gesek udara dilibatkan maka persamaan percepatan diatas akan menjadi ax =
qE x − bv x m
(12.20a)
qE y
(12.20a)
dan ay =
250
m
− bv y .
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
Kemudian dengan menggunakan persamaan-persamaan diatas maka besaran-besaran gerak lainnya dapat dihitung menggunakan algoritma Euler. Persamaan kecepatan dan posisi partikel sebagai fungsi waktu adalah
v(t + ∆t ) = v(t ) + a(t )∆t
(12.21)
x(t + ∆t ) = x(t ) + v(t )∆t .
(12.22)
dan
12.4 Algoritma Simulasi untuk medan listrik homogen tanpa gaya gesek dilakukan dengan menggunakan algoritma berikut ini: L1. L2. L3. L4. L5.
m, v0x, v0y, q, E ? dt, tbeg, tend, tdata ? Ex = 0, Fx = 0 Ey = k.q/(r2) , Fy = q.Ey
L6.
a x (t + ∆t ) = 0
L7.
v x (t + ∆t ) = v0 x
L8.
rx (t + ∆t ) = r0 x + v x (t ) ∆t
L9.
a y (t + ∆t ) = Fy m
L10.
v y (t + ∆t ) = v0 y + a y (t )∆t
L11.
ry (t + ∆t ) = r0 y + v y (t ) ∆t
L12. L13.
t ≤ t end → L06
t ≤ tbeg
t = t + ∆t
Sedangkan untuk simulasi medan listrik nonhomogen dengan gaya gesek dilakukan dengan menggunakan algoritma berikut ini: L1. L2. L3. L4. L5. L6.
m, v0x, v0y, q, E ? dt, tbeg, tend, tdata ?
t ≤ tbeg Ex =
λ 1 2 4πε 0 (L − a ) + b 2
Ey =
L−a λb 4πε 0 (L − a )2 + b 2
( (
1
)
+
(a
2
)
+
(a
2
1/ 2
1/ 2
+b a +b
)
)
2 1/ 2
2 1/ 2
Fx = q.E x − bv x
251
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
L7.
Fy = q.E y − bv y
L8.
t ≤ tbeg
L9.
a x (t + ∆t ) = 0
L10.
v x (t + ∆t ) = v0 x
L11.
rx (t + ∆t ) = r0 x + v x (t )∆t
L12.
a y (t + ∆t ) = Fy m
L13.
v y (t + ∆t ) = v0 y + a y (t )∆t
L14.
ry (t + ∆t ) = r0 y + v y (t )∆t
L15. L16.
t = t + ∆t t ≤ t end → L06
12.5 Hasil dan diskusi Pada simulasi ini, parameter yang digunakan seperti dimensi ion counter, kecepatan ion, dan medan listriknya disesuaikan dengan alat ion counter yang telah dibangun dan diuji secara eksperimen oleh Adachi et. al. pada referensi 4. Parameter-parameter tersebut adalah sebagai berikut Tabel 12.1 Nilai-nilai parameter simulasi.
Parameter ∆t (s) tbeg (s) tend (s) b L (m) Vox (m/s) E ( volt/m) q (C) m (Kg)
Nilai 0,1 0 2 0.18 0.065 0.122 13.8 1.6x10-19 1.38x10-3
Pada situasi medan listrik nonhomogen, maka besar nya medan listrik di dalam ion counter merupakan fungsi dari a dan b seperti pada persamaan (12.9) dan (12.15). Ilustrasi medan listrik pada ion ditunjukkan oleh gambar 12.3. Apabila batang sangat panjang mendekati tak hingga, maka nilai medan Ex akan sama dengan nol, akantetapi karena batang memiliki panjang berhingga maka akan ada medan listrik komponen x.
252
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
Gambar 12.4 Ilustrasi medan pada ion akibat batang yang bermuatan.
Besarnya medan listrik ke arah-x Ex ditunjukkan oleh Gambar 12.5(a). Untuk Ex, nilainya maksimum pada kedua ujung ion counter, akantetapi antara satu ujung dengan ujung lain memiliki arah medan yang berlawanan. Ex bernilai nol pada titik L/2 karena pada titik tersebut medan listrik yang bersumber dari segmen batang sebelah kanan dan segmen batang sebelah kiri saling menghilangkan. Grafik besanya komponen medan listrik ke arah-y Ey ditunjukkan oleh gambar 12.5(b). Dari gambar ini terlihat bahwa Ey bernilai maksimum pada x=L/2. Apabila disubstitusikan pada persamaan (1) untuk x=L/2 maka diperoleh nilai Ey maksimum yaitu E y max = E y ( L / 2) =
. λy L/2 1 / 2 2 2πε 0 (L / 2 ) + b 2
(
)
(12.23)
Pada titik a=0 dan a=L maka dapat diperoleh nilai Ex sebagai berikut Ex (0) = − Ex ( L)
(12.24)
Persamaan (12.24) sesuai dengan profil Ex pada Gambar 12.5(a) dimana Ex pada kedua ujung ion counter paling besar akantetapi berlawanan arah.
253
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
(a)
(b) Gambar 12.5 Profil medan listrik di dalam ion counter untuk (a) medan listrik komponen x (Ex) dan (b) medan listrik komponen y (Ey) terhadap a.
254
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
(a)
(b) Gambar 12.6 Profil medan listrik di dalam ion counter untuk (a) medan listrik komponen x (Ex) dan (b) medan listrik komponen y (Ey) terhadap b.
Kurva medan listrik di dalam ion counter untuk Ex dan Ey terhadap b ditunjukkan berturut-turut oleh gambar 12.6(a) dan 12.6(b). Pada gambar 12.6(a) terlihat bahwa nilai Ex adalah nol disetiap titik b pada a=L/2=32.5 mm. Pada Gambar 12.6(b) nilai Ey naik sangat cepat apabila jarak ion mendekati sumber medan listrik. Secara
255
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
teoritik, nilai Ey ini akan mendekati tak hingga jika jarak antara ion dengan sumber medan listrik mendekati nol.
Gambar 12.7 Perbandingan lintasan partikel di dalam medan listrik homogen antara pendekatan analitik dan numerik dengan ∆t=0.1.
Pergerakan ion di dalam ion counter dengan pendekatan teoritik dan numerik di tampilkan pada Gambar 12.7. Berdasarkan Gambar 12.7 terlihat perbedaan lintasan gerak ion dari hasil analitik dan numerik. Hal ini terjadi karena ∆t yang dipakai pada simulasi masih terlalu besar. Permasalahan ini dapat diatasi dengan memperkecil ∆t. Seperti yang telah dijelaskan sebelumnya bahwa dalam simulasi ini dilakukan tiga variasi situasi. Hasil simulasi pada situasi (i), yaitu pergerakan ion yang dipengaruhi medan listrik homogen dan medan listrik nonhomogen tanpa gaya gesek, ditunjukkan oleh Gambar 12.8. Dari gambar ini terlihat bahwa ion yang bergerak pada medan listrik homogen tidak mengenai elektroda. Hal ini berlawanan dengan hasil eksperimen yang telah dilakukan oleh Adachi et. al. pada referensi 4. Parameterparameter yang dimasukkan pada simulasi ini disesuaikan dengan parameter eksperimen dari ion counter yang didesain oleh Adachi et. al. Berdasarkan hasil eksperimen pada referensi 4, dimensi, kecepatan, dan besarnya medan listrik yang diberikan cukup untuk menangkap semua ion yang diinginkan. Akantetapi simulasi dengan medan listrik homogen membuat ion tidak tertangkap oleh elektroda sehingga dapat disimpulkan bahwa asumsi ini tidak relevan untuk menggambarkan pergerakan ion di dalam ion counter.
256
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
Gambar 12.8 Pergerakan ion pada situasi dimana medan listrik homogen dan nonhomogen tanpa gaya gesek udara.
Pada gambar 12.8 ditunjukkan pergerakan ion pada medan listrik nonhomogen dengan menggunakan persamaan medan listrik (12.9) dan (12.15). Asumsi medan listrik nonhomogen lebih mendekati hasil eksperimen karena ion dapat tertangkap pada elektroda. Dengan demikian penggunaan medan nonhomogen dengan persamaan (12.9) dan (12.15) lebih baik untuk menggambarkan pergerakan partikel di dalam ion counter.
Gambar 12.9 Pergerakan ion pada situasi dimana medan listrik homogen dan ada gaya gesek udara.
257
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
Selain asumsi medan listrik nonhomogen, asumsi gaya gesek udara terhadap ion juga disertakan dalam simulasi ini dengan besar fg = -bv. Pengaruh gaya gesek udara terhadap pergerakan ion disimulasikan pada kondisi medan listrik homogen dan nonhomogen. Gambar 12.9 menunjukkan pergerakan ion akibat pengaruh gaya gesek pada medan homogen dan Gambar 12.10 pada medan nonhomogen. Dari Gambar 12.9 dan 12.10 terlihat bahwa gaya gesek udara memberikan efek pengereman pada pergerakan ion terutama pada arah laju alir udara. Dapat terlihat pada Gambar 12.10, pergerakan ion yang dipengaruhi gaya gesek udara membuat ion sampai di kolektor pada jarak yang lebih dekat dibandingkan ion yang bergerak tanpa gaya gesek.
Gambar 12.10 Pergerakan ion pada situasi dimana medan listrik nonhomogen dan ada gaya gesek udara.
12.6 Kesimpulan Dari hasil yang telah diperoleh dapat disimpulkan bahwa medan homogen membuat ion tidak tertangkap oleh elektroda sehingga asumsi ini tidak relevan untuk menggambarkan pergerakan ion di dalam ion counter. Pendekatan medan nonhomogen memberikan hasil yang lebih sesuai dengan eksperimen. Gaya gesek udara pada ion membuat ion mengenai elektroda pada jarak yang lebih dekat.
12.7 Referensi 0. W. Sullivan, “Ion Created by Winds May Prompt Changes in Emotional States”, The New York Times, http://www.nytimes.com/1981/10/06/science/ions-created-by-winds-mayprompt-changes-in-emotional-states.html [20160522]
258
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
1. C. M. Yun, Y. Otani, H. Emi, “Development of Unipolar IonGenerator— Separation of Ions in Axial direction of Flow”, Aerosol Science and Technology 26 (6), 389-397 (1997). 2. R. Kubasek, Z. Roubal, Z. Szabo, M. Steinbauer, “ The Measurement of air ions spectrum using the aspiration Method”, In International Conference on Signals, Circuit and System, 1-4 (2009) 3. P. Kolarz, B. Miljkovic, Z. Curguz, “Air-ion counter and mobility spectrometer”, Nuclear Instruments and Methods in Physics Research B 279 (11), 219-222 (2012) 4. M. Adachi, K. Okuyama, J. H. Seinfeld, “Experimental Studies of Ion-Induced Nucleation”, Journal of Aerosol Science 23(4), 327-337 (1992). 5. P. A. Tiple, “ Physics for Scientists and Engineers”, W. H. Freeman and Company, 5th edn., New York, 2004, p. 683. 6. C. H. Colwell, “Electric Field Due to a Charged Rod”, APC Resource Lesson, Mainland High School , 2016, URL http://online.cctt.org/physicslab/content/phyapc/lessonnotes/Efields/EchargedR ods.asp [20160521] 7. E. J. Purcell, D. Varberg, S. E. Rigdon, “Kalkulus Edisi 8 ”, Erlangga, Jilid 1, Jakarta, 2004, p. 457. 8. J. R. Taylor, “Classical Mechanics”, Edwards Brothers, United State of America, 2005, p. 46.
12.8 Lampiran A. Keterangan penggunaan program dan skrip Tabel 12.2 Program dan skrip serta hasil keluarannya
Program / Skrip
Piranti lunak
Keluaran
Lampiran
E-Homogen.cpp
C++
x,y
B
E-Nonhomogen.cpp
C++
x,y
C
Gnuplot
Gambar 1.7
D
Gnuplot
Gambar 1.9
E
Perbedaan metode analitik dan numerik Pergerakan ion pada kondisi simulasi (ii)
B. Program E-Homogen.cpp /* E-homogen.cpp Simulasi Pergerakan Ion pada Ion Counter dengan Medan Nonhomogen dan Pengaruh Gaya Gesek Udara Muhammad Yangki Sulaeman | [email protected] Rombang Rizky | [email protected]
259
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
Lia Yuliantini | [email protected] Dian Ahmad Hapidin | [email protected]
Compile: g++ E-Homogen.cpp -o E-Homogen.exe Execute: ./E-Homogen.exe [options] 20160523 Create this program. Continue fixing the program. */ #include #include #include #include
using namespace std ; int main (int argc, char *argv[]) { // DDefine program name const char *pname = "ion-counter" ; // Verbose usage if (argc < 11) { cout << "Usage: " << pname << " "; cout << "[dt tbeg tend Tdata m q E v0x v0y ofile]" ; cout << endl ; cout << "dt\ttime step" << endl ; cout << "tbeg\tbegin time" << endl ; cout << "tend\tend time" << endl ; cout << "Tdata\tsampling time of data (Tdata > dt)"; cout << endl; cout << "m\tparticle mass" << endl ; cout << "q\tcharge" << endl ; cout << "E\tElectric field" << endl ; cout << "v0x\tinitial velocity (x)" << endl ; cout << "v0y\tinitial velocity (y)" << endl ; cout << "ofile\toutput file" << endl ; return 1; } // Get all arguments double dt = atof (argv[1]) ; double tbeg = atof (argv[2]) ; double tend = atof (argv[3]) ; double Tdata = atof (argv[4]) ; double m = atof (argv[5]) ; double q = atof (argv[6]) ; double E = atof (argv[7]) ; double v0x = atof (argv[8]) ; double v0y = atof (argv[9]) ; const char *ofn = (argv[10]) ; //Define iteration parameters int Nt = 1 + (int) floor ((tend - tbeg) / dt) ;
260
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
int Ndata = 1 + (int) floor(Tdata / dt) ; // Set origim of ro at (xo,yo) double xo=0; double yo=0; //Define motion variables double rx = xo+v0x * tbeg ; double vx = v0x ; double ax = 0 ; double ry = yo ; double vy = 0 ; double ay = 0 ; // Open output file ofstream fout ; fout.open(ofn) ; // Display data header fout << "# t\trx\try\tvx\tvy\tax\tay" << endl ; // Perform iteration int idata = 0 ; for (int it = 0; it < Nt; it++) { // Calculate time double t = tbeg + it * dt ; // Watch coubter for displaying data if (idata == (Ndata - 1)) { idata = 0 ; } // Display data only for certain period if (idata == 0) { fout << t << "\t" ; fout << rx << "\t" ; fout << ry << "\t" ; fout << vx << "\t" ; fout << vy << "\t" ; fout << ax << "\t" ; fout << ay << endl ; } // Calculate electric force double fEx = 0 ; double fEy = q * E ; // Calculate motion variables using Euler algorithm ax = 0 ; vx = vx ; rx = rx + vx * dt ; ay = fEy / m ; vy = vy + ay * dt ; ry = ry + vy * dt ; // Increase counter for displaying data
261
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
idata++ ; } // Close output file fout.close() ; // Terminate program with success state return 0 ; }
C. Program E-Nonhomogen.cpp /*
E-homogen.cpp Simulasi Pergerakan Ion pada Ion Counter dengan Medan Nonhomogen dan Pengaruh Gaya Gesek Udara Muhammad Yangki Sulaeman | [email protected] Rombang Rizky | [email protected] Lia Yuliantini | [email protected] Dian Ahmad Hapidin | [email protected] Compile: g++ E-Nonhomogen.cpp -o E-Nonhomogen.exe Execute: ./E-Homogen.exe [options] 20160523 Create this program. Continue fixing the program.
*/ #include #include #include #include #include #include
<stdio.h> <math.h>
using namespace std ; //create function (calculate Ex) double Ex(double k, double L, double a, double b) { double ex10 = (a*a)+(b*b); double ex1 = 1/(pow(ex10,0.5)); double ex20 = ((L-b)*(L-b))+(a*a); double ex2 = 1/(pow(ex20,0.5)); double ex=k*(ex1-ex2); return ex; } //create function (calculate Ey) double Ey(double k, double L, double a, double b) { double ey10 = ((L-a)*(L-a))+(b*b); double ey1 = 1/(pow(ey10,0.5)); double ey20 = (a*a)+(b*b); double ey2 = 1/(pow(ey20,0.5)); double ey=(k/b)*(((L-a)*ey1)+(a*ey2));
262
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
return ey; } int main (int argc, char *argv[]) { // Define program name const char *pname = "ion-counter" ; const double pi = 3.14; const double epsilon0 = 8.854E-12; const double lambda = 1E-10; double k = lambda/(4*pi*epsilon0) ; // Verbose usage if (argc < 12) { cout << "Usage: " << pname << " "; cout << "[dt tbeg tend Tdata m q v0x v0y L ofile]" ; cout << endl ; cout << "dt\ttime step" << endl ; cout << "tbeg\tbegin time" << endl ; cout << "tend\tend time" << endl ; cout << "Tdata\tsampling time of data (Tdata > dt) " ; cout << endl; cout << "m\tparticle mass" << endl ; cout << "q\tcharge" << endl ; cout << "v0x\tinitial velocity (x)" << endl ; cout << "v0y\tinitial velocity (y)" << endl ; cout << "L\tlength of rod" << endl ; cout << "ofile\toutput file" << endl ; return 1; } // Get all arguments double dt = atof (argv[1]) ; double tbeg = atof (argv[2]) ; double tend = atof (argv[3]) ; double Tdata = atof (argv[4]) ; double m = atof (argv[5]) ; double q = atof (argv[6]) ; double v0x = atof (argv[7]) ; double v0y = atof (argv[8]) ; double L = atof (argv[9]) ; double B = atof (argv[10]) ; const char *ofn = (argv[11]) ; double d = 0.045; //Define iteration parameters int Nt = 1 + (int) floor ((tend - tbeg) / dt) ; int Ndata = 1 + (int) floor(Tdata / dt) ; //initial double rx double ry double vx double vy
position and velocity = 0; = 0; = v0x ; = v0y ;
263
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
//initial field and acceleration double a = rx; double b = d-ry; double double double double
EX EY ax ay
= = = =
Ex Ey (q (q
(k,L,a,b); (k,L,a,b); * EX / m)-(B*vx) ; * EY / m )-(B*vy) ;
// Open output file ofstream fout ; fout.open(ofn) ; // save fout << fout << fout << fout << fout << fout << fout << fout << fout << fout <<
initial value (at t = tbeg) "# t\trx\try\tvx\tvy\tax\tay\tEx\tEy" << endl ; tbeg << "\t" ; rx << "\t" ; ry << "\t" ; vx << "\t" ; vy << "\t" ; ax << "\t" ; ay << "\t" ; EX << "\t" ; EY << endl ;
// Perform iteration to get next value int i = 1 ; while (ry < d) { // Calculate time double t = tbeg + (i * dt ); // Calculate electric force double fEx = q * EX; double fEy = q * EY; // ax vx rx
Calculate motion variables using Euler algorithm = (fEx / m)-(B*vx) ; = vx + (ax * dt) ; = rx + (vx * dt) ;
ay = (fEy / m)-(B*vy) ; vy = vy + (ay * dt) ; ry = ry + (vy * dt) ; a = rx; b = d-ry; if (ry > d){ ry = d;} EX = Ex(k,L,a,b); EY = Ey(k,L,a,b); fout << t << "\t" ; fout << rx << "\t" ;
264
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
fout fout fout fout fout fout fout
<< << << << << << <<
ry vx vy ax ay EX EY
<< << << << << << <<
"\t" "\t" "\t" "\t" "\t" "\t" endl
; ; ; ; ; ; ;
i++; } // Close output file fout.close() ; // Terminate program with success state return 0 ; }
D. Contoh
Skrip Gnuplot untuk grafik perbedaan metode analitik dan numerik.gps
# Plot Metode Analitik dan Numerik set terminal png set output "track3.png" data1 = "analitikhomogen.txt" data2 = "homogen2.txt" set xlabel 'x' set ylabel 'y' plot \ data1 u 2:3 t "Metode Analitik " w p pt 2, \ data2 u 2:3 t "Metode Numerik " w p pt 4, \
E. Contoh Skrip Gnuplot untuk grafik plot-x-y.gps # Plot x and y set terminal eps set output "homogen_Fg_vs_no_Fg.eps" set xlabel 'x' set ylabel 'y' #set xrange [-0.005:0.07] #set yrange [-0.010:0.055] set key right bottom box plot "file_H_b=1.8e-1.txt" using 2:3 with line lc 4 title 'Homogen (b = 1.8e-1',\ "file_H_b=0.txt" using 2:3 with line lc 2 title 'Homogen (b = 0)'
265
Komputasi Fisika 2: 12 Simulasi pergerakan ion ..
266
13
Karakteristik pengosongan air pada sistem tangki air silinder
Yogie Sanjaya | [email protected] Yulianto Agung Rezeki | [email protected] Muhammad Arief Mustajab E M | [email protected] Akmal Zulfi | [email protected] Tangki air dengan geometri silinder memiliki tinggi H serta jari-jari R, diberi lubang berbentuk lingkaran dengan jari-jari r pada dasar tangki. Tangki air diberi kondisi awal terisi air dengan penuh, kemudian air mengalir keluar melalui lubang hingga air di dalam tangki habis. Profil perubahan ketinggian air, berkurangnya volume air, dan kecepatan air terhadap waktu dihitung dengan menyelesaikan persamaan diferensial dari model menggunakan metode beda hingga (finite difference). Variasi parameter dilakukan untuk berbagai nilai perbandingan jari-jari lubang terhadap jari-jari tangki air (r/R), nilai perbandingan ketinggian terhadap jari-jari tangki air (H/R), dan sudut kemiringan dinding tangki air (θ). Terdapat pengaruh nilai r/R, H/R, dan θ terhadap karakteristik pengosongan air dari tangki.
13.1 Pendahuluan Sistem tangki air dengan lubang untuk air mengalir merupakan permasalahan klasik yang telah banyak digunakan untuk menjelaskan prinsip Bernoulli dari dinamika fluida [1,2]. Namun, model ini masih sangat sederhana karena masih menggunakan asumsi bahwa aliran fluida laminar, tidak terdapat kompresi fluida, dan tidak dipengaruhi oleh parameter viskositas. Pada kondisi awal, tangki air diisi penuh. Kemudian lubang pada dasar tangki dibuka dan air mengalir melalui lubang tersebut hingga air di dalam tangki habis. Geometri tangki air mempengaruhi karakteristik dari pengosongan air, salah satunya adalah waktu yang diperlukan hingga air habis [3,4]. Dalam tulisan ini dibahas mengenai profil ketinggian, kecepatan aliran, dan volume air pada sistem tangki dengan variasi geometri tangki air, yaitu perbandingan ukuran jari-jari tangki dengan lubang, perbandingan ketinggian dengan jari-jari tangki, dan kemiringan dinding tangki air dengan sudut kemiringan θ positif dan negatif.
13.2 Teori Sistem tangki air dimodelkan dengan geometri silinder dengan jari-jari R dan tinggi H serta diberi lubang di dasar tangki, seperti ditunjukkan oleh Gambar 13.1. Titik A merupakan titik pada permukaan air dalam tangki, sementara titik a adalah titik pada lubang di dasar tangki.
267
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
Gambar 13.1 Model tangki air dengan lubang di dasar tangki
Aliran air pada tangki berlubang dapat dimodelkan melalui prinsip Bernoulli. Prinsip Bernoulli hanya berlaku untuk fluida dengan aliran yang laminar, tidak terdapat kompresi, dan viskositas fluida. Prinsip Bernoulli dirumuskan sebagai
1 1 ρv A 2 = Pa + ρgha + ρv a 2 , (13.1) 2 2 dengan g adalah percepatan gravitasi, PA dan Pa secara berurutan adalah tekanan pada permukaan tangki dan tekanan pada lubang pada dasar tangki, ρ adalah massa jenis zat cair, hA dan ha secara berurutan adalah ketinggian air dan ketinggian lubang dari dasar tangki, serta vA dan va secara berurutan adalah kecepatan air pada permukaan tangki dan laju pada lubang. Pada sistem tersebut berlaku hukum kontinuitas yaitu PA + ρgh A +
Av A = ava .
(13.2)
Dari Persamaan (13.1) dan (13.2) dapat diperoleh hubungan kecepatan aliran air terhadap ketinggian permukaan air 1
2 R 2 v(h ) = 2 gh . (13.3) 2 2 R − r Di sisi lain, volume air yang berkurang terhadap waktu sebanding dengan kecepatan aliran air yang melalui suatu luasan penampang, yaitu
dV (13.4) = −av , dt dan dengan melakukan modifikasi pada Persamaan (1.4) dapat diperoleh persamaan diferensial 1
2 R 2 dh r 2 =− 2 gh . dt R 2 − r 2 R 2
Persamaan (13.5) merupakan persamaan diferensial linear orde-1.
268
(13.5)
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
Solusi analitik dari Persamaan (13.5) masih dapat diperoleh dengan menyelesaikan persamaan diferensial dan menerapkan syarat batas h(t=0) = H, sehingga diperoleh hubungan ketinggian permukaan air terhadap waktu
2 2 r g R2 h(t ) = R 2 2 R 2 − r 2
2 2 r 2 2 gH R t − R2 R2 − r2
2 t+H . 1
(13.6)
Dari Persamaan (13.6) dapat diperoleh profil kecepatan aliran air dan perubahan volume terhadap waktu melalui persamaan 1
2 R 2 v(t ) = 2 gh(t ) , R 2 − r 2
(13.7)
V (t ) = πR 2 h(t ) .
(13.8)
dan
Waktu yang diperlukan hingga air diperoleh dengan membuat nilai h(t) pada Persamaan (13.6) menjadi nol, sehingga diperoleh 1
takhir
H R2 − r 2 2 . = 2 2 g R
(13.9)
Untuk sistem tangki air dengan dinding miring diilustrasikan pada Gambar 13.2, Dinding tangki yang dimiringkan dengan sudut θ positif pada titik sumbu kemiringan yang berada pada ketinggian H/2, memiliki jari-jari atas tangki yang terus bertambah sementara jari-jari bawah tangki yang terus berkurang. Sebaliknya, dinding tangki yang dimiringkan dengan sudut θ negatif pada titik sumbu kemiringan yang berada pada ketinggian H/2, memiliki jari-jari bawah tangki yang terus bertambah sementara jari-jari atas tangki yang terus berkurang
Gambar 13.2 Model tangki air dengan dinding yang dimiringkan
269
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
Kemiringan dari dinding tangki dibatasi oleh nilai sudut θ maksimum yaitu
2R (13.10) . H Pada sudut θ maksimum, maka geometri tangki air akan berubah dari silinder menjadi kerucut. Jari-jari tangki air bergantung pada ketinggian air sebagai fungsi linier
θ max = tan −1
H R(h ) = R − tan θ + h tan θ , 2 dan volume tangki air menjadi
(31.11)
2
H H π V (h ) = π R − tan θ h + π R − tan θ h 2 tan θ + h 3 tan 2 θ . (13.12) 2 2 3 Dengan demikian persamaan diferensial untuk model sistem tangki air dengan dinding miring adalah 1
2 2 2 gh R (h ) . (13.13) R 2 (h ) − r 2 Dengan mensubstitusikan nilai Persamaan (13.11) ke dalam Persamaan (13.13), persamaan diferensial pada Persamaan (13.13) merupakan persamaan diferensial nonlinier orde-1.
dh r2 =− dt R(h )2
13.3 Metode Numerik Metode numerik beda hingga (finite difference) digunakan untuk menyelesaikan persamaan diferensial
df (x ) f (x + ∆x ) − f (x ) = . dx ∆x Persamaan diferensial pada Persamaan (1.5) dapat dihitung menggunakan dh(t ) h(t + ∆t ) − h(t ) , = dt ∆t
(13.14)
(13.15)
sehingga diperoleh profil ketinggian air terhadap waktu 1
2 R 2 r 2 2 gh(t ) (13.16) h(t + ∆t ) = h(t ) − ∆t . R 2 − r 2 R 2 Persamaan diferensial pada Persamaan (13.13) juga dapat diselesaikan menggunakan metode beda hingga pada Persamaan (13.15), sehingga diperoleh solusi
270
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
H R − tan θ + h(t ) tan θ 2 h(t + ∆t ) = h(t ) − 2rgh(t ) 2 H R − tan θ + h(t ) tan θ − r 2 2
1
2 ∆t .
(13.17)
Besaran lain dihitung menggunakan Persamaan (13.7) dan (13.8) dengan menggunakan hasil yang diperoleh dari metode numerik.
13.4 Algoritma Perhitungan ketinggian air h(t), kecepatan aliran air v(t), dan volume air V(t) dilakukan menggunakan algoritma berikut L1.
R, r?
L2.
θ, g , H?
L3.
dt, tdata?
L4.
h = H, Ro = R – (H/2)tan θ, Rh = R + (H/2)tan θ
L5.
t=0
L6.
t = t + dt , α=(r/R),
L7.
h = h – (α2 (2gh)1/2 (1- α)-1/2) dt
L8.
v = (2gh)1/2(1- α)-1/2
L9.
V = πRo2h + πRoh2 tan θ + (π/3) h3 tan2θ
L10.
h > 10-10 → L6.
13.5 Hasil dan diskusi Parameter-parameter simulasi yang digunakan diberikan dalam Tabel 13.1 berikut. Tabel 13.1 Parameter-parameter simulasi.
Symbol
Nilai
Code
r
0.02 – 0.18 m
R
R
1m
R
θ
o
-60 – 60
g
2
10 m/s
G
H
1 – 100 m
H
∆t, tdata
-3
o
10 s , 0.5 s
tetha
dt, tdata
Parameter standar yang digunakan adalah r = 0.1 m, H = 1 m, dan θ = 0o apabila tidak divariasikan.
271
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
Variasi nilai r/R dan H/R diberikan dalam Gambar 13.3 dan 13.4. Pada variasi nilai r/R tampak bahwa waktu pengosongan air akan semakin lama sebanding dengan semakin kecilnya ukuran lubang air. Kebergantungan antara waktu pengosongan dengan nilai r/R memiliki hubungan kuadratik (t akhir ∝ (r / R) 2 ) [5].
Gambar 13.3 Waktu yang diperlukan hingga air habis takhir sebagai fungsi jari-jari lubang terhadap jari-jari tangki, r/R
Pada variasi nilai H/R terhadap waktu pengosongan tangki, terlihat bahwa semakin besar nilai H/R maka waktu pengosongan air akan semakin lama. Hubungan antara waktu pengosongan dengan nilai perbandingan H/R, sebanding dengan fungsi akar kuadratik (t akhir ∝ ( H / R)1 / 2 ) [5].
Gambar 13.4 Waktu yang diperlukan hingga air habis takhir sebagai fungsi perbandingan ketinggian tangki terhadap jari-jari tangki, H/R
272
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
Gambar 13.5 Volume tangki silinder sebagai fungsi dari sudut kemiringan dinding tangki
Variasi sudut kemiringan dinding tangki air diberikan dalam Gambar 13.5 sampai dengan Gambar 13.9. Variasi sudut kemiringan dinding tangki membuat volume tangki menjadi bertambah seperti yang ditunjukkan dalam Gambar 13.6. Hal ini dapat dilihat dari persamaan untuk menghitung volume silinder dengan dinding miring pada Persamaan (13.12) menunjukkan bahwa semakin besar nilai θ maka volume tangki silinder akan bertambah. Pada saat sudut kemiringan maksimum, maka geometri dari tangki akan berubah dari silinder menjadi kerucut. Oleh karena itu, volume silinder dengan jari-jari R dan tinggi H akan bertambah menjadi volume kerucut dengan jarijari 2R dengan tinggi H.
Gambar 13.6 Volume air V sebagai fungsi waktu t untuk berbagai nilai sudut θ dinding tangki air
273
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
Terdapat hal yang menarik saat geometri dari tangki air berubah menjadi kerucut terbalik (saat sudut θ bernilai negatif) dan saat berubah menjadi geometri kerucut saat sudut θ bernilai positif). Dari kurva ketinggian air terhadap waktu untuk berbagai nilai sudut kemiringan dinding pada Gambar 13.7, terlihat bahwa untuk nilai sudut kemiringan positif (bentuk kerucut) memiliki waktu pengosongan yang lebih cepat dibandingkan dengan sudut kemiringan negatif (kerucut terbalik).
Gambar 13.7 Ketinggian air h terhadap waktu untuk berbagai nilai sudut θ dinding tangki air
Gambar 13.8 Waktu yang diperlukan hingga air habis takhir sebagai fungsi dari nilaisudut θ dinding tangki air
274
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
Selain semakin cepatnya waktu pengosongan air pada tangki dengan kemiringan dinding yang positif, terlihat pula bahwa fungsi ketinggian air terhadap waktu berubah seiring dengan berubahnya nilai θ dari positif ke negatif. Saat θ bernilai negatif, kebergantungan antara ketinggian air terhadap waktu sebagai fungsi kuadratik. Namun, seiring dengan berubahnya nilai θ menjadi bernilai positif, kebergantungan antara ketinggian air dengan waktu semakin bergeser ke arah fungsi akar kuadratik. Berubahnya kebergantungan ketinggian air terhadap waktu dikarenakan terjadinya perubahan kecepatan air mengalir dari lubang terhadap waktu. Hal yang sama terjadi terhadap profil kecepatan aliran air terhadap waktu yang mengalami perubahan fungsi. Saat nilai θ = 0, atau tangki air berbentuk silinder dengan dinding tegak, kebergantungan kecepatan aliran air terhadap waktu berkurang secara linear. Namun, dengan berubahnya kemiringan dinding, atau geometri dari tangki air berubah, maka fungsi kecepatan aliran air terhadap waktu bergeser menjadi fungsi tn, dengan nilai n antara 0.5 sampai dengan 2. Hal ini menunjukkan bahwa terjadi perubahan percepatan aliran air akibat adanya pengaruh geometri tangki.
Gambar 13.9 Kecepatan aliran air v terhadap waktu untuk berbagai nilai sudut θ dinding tangki air
Pada Gambar 13.2 tampak bahwa untuk nilai θ positif, luas penampang tangki bagian atas lebih besar dan semakin kecil hingga dasar tangki. Sebaliknya, untuk nilai θ negatif, luas penampang tangki bagian atas lebih kecil dan semakin besar hingga ke dasar tangki. Pengaruh perubahan luas penampang tangki pada profil pengosongan air adalah pada pengaruh gaya akibat tekanan udara di permukaan air [6]. Kontribusi daya akibat tekanan udara ditentukan oleh nilai tekanan udara dan luas bidang penampang air yang ditekan. Saat luas bidang penampang air lebih besar, air mendapatkan kontribusi gaya yang lebih besar, sehingga air mendapat tambahan percepatan negatif. Hal tersebut yang membuat aliran air lebih tinggi, tetapi lebih cepat untuk melambat. Sebaliknya, saat luas bidang penampang air lebih kecil, air mendapatkan kontribusi gaya yang lebih kecil, sehingga mendapat tambahan
275
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
percepatan negatif. Hal tersebut yang membuat kecepatan aliran air lebih rendah, tetapi lebih lama untuk melambat.
13.6 Kesimpulan Pada sistem tangki air dengan lubang pada dasar tangki, kebergantungan antara perbandingan nilai jari-jari lubang terhadap jari-jari tangki (r/R) memiliki hubungan kuadratik terhadap waktu. Untuk kebergantungan nilai perbandingan ketinggian tangki terhadap jari-jari tangki (H/R) terhadap waktu memiliki hubungan akar kuadratik. Variasi sudut kemiringan dinding tangki air (θ) mempengaruhi geometri dan volume dari tangki. Selain itu, profil ketinggian air dan kecepatan aliran air terhadap waktu untuk berbagai nilai sudut θ, dari positif hingga negatif, mengubah kebergantungan parameter ketinggian air dan kecepatan aliran air terhadap waktu menjadi fungsi tn dengan nilai n antara 0.5 hingga 2. Hal ini menunjukkan terdapat pengaruh geometri tangki pada karakteristik pengosongan air akibat dari kontribusi gaya tekanan udara.
13.7 Referensi 1. 2.
3. 4.
5.
6.
T. E. Faber, “Fluid Dynamics for Physicist”, Cambridge University Press, Cambridge, 2001, p. 14 (1997). H. Semat, R. Katz, “Physics, Chapter 9: Hydrodynamics (Fluids in Motion)”, Robert Katz Publications 143, URL http://digitalcommons. unl.edu/physicskatz/143 [20160520]. L. G. Hanin, “Which Tank Empty Faster?”, The American Mathematical Monthly 106 (10), 943-947 (1999). T-S. Liu, P. Merati, S. A. Woodiga, C. Davis, C. H. Leong, J Johnson, K. H. Chen, “Drainage and Filling in Cylindrical and Ractangular Containers”, Proceedings of the Institution of Mechanical Engineers Part D Journal of Automobile Engineering 222, 565 – 577 (2007). Blasone, F. Dell’Anno, R. De Luca, O. Faella, O. Fiore, A. Saggese, “Discharge Time of a Cylindrical Leaking Bucket”, European Journal of Physics 36, 1 – 11 (2015). J. N. Libii, “Mechanics of The Slow Draining of Large Tank Under Gravity”, American Journal of Physics 71 (11), 1204 – 1304 (2002).
276
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
13.8 Lampiran A. Keterangan penggunaan program dan skrip Tabel 13.2 Program dan skrip serta hasil keluarannya.
Program / Skrip
Piranti lunak
Keluaran
Lampiran
tangki-air.cpp
C++
h, v, V
B
plot-radius-t.gps
Gnuplot
Gambar 1.3
C
plot-tinggi-t.gps
Gnuplot
Gambar 1.4
D
plot-V-tetha.gps
Gnuplot
Gambar 1.5
E
plot-tank-tetha-Vot.gps
Gnuplot
Gambar 1.6
F
plot-sudut-t.gps
Gnuplot
Gambar 1.7
G
plot-tank-tetha-ht.gps
Gnuplot
Gambar 1.8
H
plot-tank-tetha-vt.gps
Gnuplot
Gambar 1.9
I
B. Program tangki-air.cpp /* tangki-air.cpp Calculate height of water (as function of time) using Finite Difference Method M. Arief Mustajab | 20215015 Compile : g++ tangki-air.cpp -o tangki-air Execute : ./tangki-air [options] 20160507 Create this program */ #include #include #include #include
using namespace std; int main (int argc, char *argv[]) { // Nama program serta opsi penggunaan const char *pname = "tangki-air.cpp";
277
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
if (argc < 8 ) { cout << "Usage : " << pname << " "; cout << "[dt tdata R r tetha g H ofile]" << endl; cout << "dt \t Selang waktu" << endl; cout << "R \t Jari-jari tangki air (dalam cm)" << endl; cout << "r \t Jari-jari lubang (dalam cm)" << endl; cout << "tetha\tkemiringan dinding (dalam derajat)" << endl; cout << "g \t Percepatan gravitasi" << endl; cout << "H \t Ketinggian awal air (dalam cm)" << endl; cout << "ofile \t File data hasil perhitungan" << endl; return 1; } // Get all arguments double dt = atof(argv[1]); double tdata = atof(argv[2]); double R = atof(argv[3]); double r = atof(argv[4]); double tetha = atof(argv[5]); double g = atof(argv[6]); double H = atof(argv[7]); const char *ofn = argv[8]; // Set double double double double double double double double double double
initial condition (at t = 0) h = H; t = 0; sudut = (tetha * M_PI / 180.0); y = tan(sudut); Ro = R - (h * y / 2); // Jari-jari bawah tangki air Rh = Ro + (h * y); // Jari-jari atas tangki air alpha = r / Rh; v = sqrt(2 * g * h / (1 - alpha * alpha)); V=(M_PI*Ro*Ro*h)+(M_PI*Ro*h*h*y)+(M_PI*y*y*h*h*h/3); Ndata = tdata/dt;
// Open output file ofstream fout; fout.open(ofn); // Display data header fout << "# t \t\t Rh \t\t h \t\t v \t\t V" << endl; cout << Ndata << endl; int ndata = 0; // Perform Calculation for (int n = 0; n >= 0; n++) { if (ndata == Ndata) { ndata = 0; } if (ndata == 0) { // Write data
278
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
fout fout fout fout fout
<< << << << <<
t << "\t\t"; Rh << "\t\t"; h << "\t\t"; v << "\t\t"; V << endl;
} // Calculate parameters t = t + dt; Rh = Ro + (h * y); alpha = r / Rh; h=h-((alpha*alpha)*sqrt(2*g*h/(1-alpha*alpha)))*dt; v = sqrt(2 * g * h / (1 - alpha * alpha)); V =(M_PI*Ro* Ro*h)+(M_PI*Ro*h*h*y)+(M_PI*y*y*h*h*h/3); ndata++; if (h < 1E-10) break; } // Close output file fout.close(); // Terminate program with success state return 0; }
C. Skrip Gnuplot plot-radius-t.gps # Set terminal and output set term png enhanced set output "data-radius-t.png" # Define data filenames data1 = "radius.txt" # Set drawing properties set xlabel "{/Oblique r/R}" set ylabel "{/Oblique t (s)}" set xrange [0.02:0.12] set yrange [0:300] set xtics 0.01 set mxtics 2 set ytics 50 set mytics 2 set grid xtics ytics # Plot data plot \ data1 u 1:2 w lp lc rgb 'dark-red' lt 1 lw 2 pt 4 ps 1.5 notitle ,\
279
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
D. Skrip Gnuplot plot-tinggi-t.gps # Set terminal and output set term png enhanced set output "data-tinggi-t.png" # Define data filenames data1 = "tinggi.txt" # Set drawing properties set xlabel "{/Oblique H/R }" set ylabel "{/Oblique t (s) }" set xrange [0:110] set yrange [0:500] set xtics 10 set mxtics 2 set ytics 50 set mytics 2 set grid xtics ytics # Plot data plot \ data1 u 1:2 w lp lc rgb 'dark-magenta' lt 1 lw 2 pt 4 ps 1.5 notitle ,\
E. Skrip Gnuplot plot-V-tetha.gps # Set terminal and output set term png enhanced set output "data-V-tetha.png" # Define data filenames data1 = "sudut.txt" # Set drawing properties set xlabel "{/Symbol q }" set ylabel "{/Oblique V (m^3)}" set xrange [-100:100] set yrange [2:5] set xtics 20 set mxtics 2 set ytics 0.5
280
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
set mytics 2 set grid xtics ytics # Plot data plot \ data1 u 1:2 w lp lc rgb 'dark-blue' lt 1 lw 2 pt 4 ps 1.5 notitle ,\
F. Skrip Gnuplot plot-tank-tetha-Vot.gps # Set terminal and output set term png enhanced set output "data-torr03-Vot.png" # Define data filenames data1 = "data-tank-tetha-60.txt" data2 = "data-tank-tetha-40.txt" data3 = "data-tank-tetha-20.txt" data4 = "data-tank-tetha0.txt" data5 = "data-tank-tetha20.txt" data6 = "data-tank-tetha40.txt" data7 = "data-tank-tetha60.txt" # Set drawing properties set xlabel "{/Oblique t (s)}" set ylabel "{/Oblique V (m^{3})}" set xrange [0:90] set yrange [0:4] set xtics 10 set mxtics 2 set ytics 1 set mytics 2 set grid xtics ytics # Plot all data and analytical solution for height plot \ data1 u 1:5 lc rgb 'red' lt 1 lw 2 pt 6 ps "{/Symbol q} = -60^{o}",\ data2 u 1:5 lc rgb 'orange' lt 1 lw 2 pt 6 ps "{/Symbol q} = -40^{o}",\ data3 u 1:5 lc rgb 'yellow`' lt 1 lw 2 pt 6 ps "{/Symbol q} = -20^{o}",\ data4 u 1:5 lc rgb 'green' lt 1 lw 2 pt 6 ps "{/Symbol q} = 0^{o}",\ data5 u 1:5 lc rgb 'cyan' lt 1 lw 2 pt 6 ps "{/Symbol q} = 20^{o}",\
281
1.3
t
1.3 t 1.3 t 1.3 t 1.3 t
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
data6 u 1:5 lc rgb 'blue' lt 1 lw 2 pt 6 ps 1.3 t "{/Symbol q} = 40^{o}",\ data7 u 1:5 lc rgb 'magenta' lt 1 lw 2 pt 6 ps 1.3 t "{/Symbol q} = 60^{o}",\
G. Skrip Gnuplot plot-sudut-t.gps # Set terminal and output set term png enhanced set output "data-sudut-t.png" # Define data filenames data1 = "sudut.txt" # Set drawing properties set xlabel "{/Symbol q }" set ylabel "{/Oblique t (s) }" set xrange [-100:100] set yrange [0:100] set xtics 20 set mxtics 2 set ytics 10 set mytics 2 set grid xtics ytics # Plot data plot \ data1 u 1:3 w lp lc rgb 'dark-green' lt 1 lw 2 pt 4 ps 1.5 notitle ,\
H. Skrip Gnuplot plot-tank-tetha-ht.gps # Set terminal and output set term png enhanced set output "data-tank-ht.png" # Define data filenames data1 = "data-tank-tetha-60.txt" data2 = "data-tank-tetha-40.txt" data3 = "data-tank-tetha-20.txt" data4 = "data-tank-tetha0.txt" data5 = "data-tank-tetha20.txt" data6 = "data-tank-tetha40.txt" data7 = "data-tank-tetha60.txt"
282
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
# Set drawing properties set xlabel "{/Oblique t (s)}" set ylabel "{/Oblique h (m)}" set xrange [0:90] set yrange [0:1] set xtics 10 set mxtics 2 set ytics 0.1 set mytics 2 set grid xtics ytics # Plot all data plot \ data1 u 1:3 lc rgb 'red' lt 1 lw 2 pt "{/Symbol q} = -60^{o}",\ data2 u 1:3 lc rgb 'orange' lt 1 lw 2 pt "{/Symbol q} = -40^{o}",\ data3 u 1:3 lc rgb 'yellow`' lt 1 lw 2 pt "{/Symbol q} = -20^{o}",\ data4 u 1:3 lc rgb 'green' lt 1 lw 2 pt "{/Symbol q} = 0^{o}",\ data5 u 1:3 lc rgb 'cyan' lt 1 lw 2 pt "{/Symbol q} = 20^{o}",\ data6 u 1:3 lc rgb 'blue' lt 1 lw 2 pt "{/Symbol q} = 40^{o}",\ data7 u 1:3 lc rgb 'magenta' lt 1 lw 2 pt "{/Symbol q} = 60^{o}",\
I. Skrip Gnuplot plot-tank-tetha-vt.gps # Set terminal and output set term png enhanced set output "data-tank-vt.png" # Define data filenames data1 = "data-tank-tetha-60.txt" data2 = "data-tank-tetha-40.txt" data3 = "data-tank-tetha-20.txt" data4 = "data-tank-tetha0.txt" data5 = "data-tank-tetha20.txt" data6 = "data-tank-tetha40.txt" data7 = "data-tank-tetha60.txt" # Set drawing properties set xlabel "{/Oblique t (s)}"
283
6
ps
1.3
t
6 ps 1.3 t 6 ps 1.3 t 6 ps 1.3 t 6 ps 1.3 t 6 ps 1.3 t 6 ps 1.3 t
Komputasi Fisika 2: 13 Karakteristik pengosongan air ..
set set set set set set set set
ylabel "{/Oblique v (m/s)}" xrange [0:90] yrange [0:5] xtics 10 mxtics 2 ytics 1 mytics 2 grid xtics ytics
# Plot all data and analytical solution for height plot \ data1 u 1:4 lc rgb 'red' lt 1 lw 2 pt 6 ps "{/Symbol q} = -60^{o}",\ data2 u 1:4 lc rgb 'orange' lt 1 lw 2 pt 6 ps "{/Symbol q} = -40^{o}",\ data3 u 1:4 lc rgb 'yellow`' lt 1 lw 2 pt 6 ps "{/Symbol q} = -20^{o}",\ data4 u 1:4 lc rgb 'green' lt 1 lw 2 pt 6 ps "{/Symbol q} = 0^{o}",\ data5 u 1:4 lc rgb 'cyan' lt 1 lw 2 pt 6 ps "{/Symbol q} = 20^{o}",\ data6 u 1:4 lc rgb 'blue' lt 1 lw 2 pt 6 ps "{/Symbol q} = 40^{o}",\ data7 u 1:4 lc rgb 'magenta' lt 1 lw 2 pt 6 ps "{/Symbol q} = 60^{o}",\
284
1.3
t
1.3 t 1.3 t 1.3 t 1.3 t 1.3 t 1.3 t
Simulasi kasus gerak benda teredam pada aktivitas Bungee Jumping menggunakan eksperimen sederhana
14
Fajriani Yudha Hamdi Arzi Muslihun Fenomena bungee jumping memiliki banyak gerakan yang dapat dikaji oleh ahli fisika. Makalah ini membahas pergerakan pada proses aktivitas bungee jumping, dimana saat jumper terjun kebawah tapi tali bungee masih kendur, saat ketinggian jumper dari datum sama dengan panjang tali, saat tali bungee mulai kendur dan saat jumper tertarik kembali keatas akibat gaya pegas oleh tali bungee. Analisis pergerakan pada aktivitas bungee jumping menggunakan pendekatan integrasi numeric Euler dalam menyelesaikan persamaan gerak. Dari hasil perbandingan simulasi dan hasil eksperimen diperoleh kecocokan data antara kedua. Diperoleh kurva gerak osilasi teredam yang merupakan awal dari gerak jatuh bebas. Dari hasil simulasi diperoleh posisi saat benda (pelompat) berada pada posisi setimbang di titik y = 0,3 dalam waktu detik kesepuluh.
14.1 Pendahuluan Lompat bungee (Bungee Jumping) adalah aktivitas dimana seseorang melompat dari suatu tempat tinggi (bisa mencapai beberapa ratus meter) dengan mengikatkan ujung tali elastis ke pergelangan kakinya dan ujung tali yang satu lagi diikatkan ke titik lompatan. Ketika seseorang melompat, tali tersebut merenggang akibat adanya energi yang diperoleh dari lompatan, setelah tali mencapai batas renggangan maka si peloncat akan terlontar kembali ke atas dan turun kembali. Peloncat akan berosilasi naik turun sampai energi dari loncatan habis[1]. Dalam aktivitas bungee jumping ada hal yang menarik yang dapat dianalisis secara fisika. Dari aktivitas ini dapat diprediksikan dan dibuktikan bahwa percepatan yang dialami pelompat lebih besar dari percepatan gravitasi a > g [2][3]. Hal yang menarik dalam analisis fisika dari aktivitas bungee jumping yaitu perbedaan jenis gerak di tiap bagiannya. Pertama saat pelompat melompat kebawah terjadi gerak jatuh bebas, dimana tali pengikat masih dalam keadaan kendur. Kedua posisi disaat tali pengikat dalam keadaan tepat akan merenggang, kemudian kondisi saat tali merenggang, dan terakhir kondisi dimana si pelompat tertarik kembali akibat adanya gaya pegas dari tali yang menarik bebannya ke atas. Kasus gerak kompleks dalam aktivitas ini juga banyak gaya yang dapat diabaikan, seperti mengabaikan massa talinya dan mengabaikan gerak melintang [4]. Selanjutnya, dengan meninjau
285
Komputasi Fisika 2: 14 Simulasi kasus gerak benda teredam ..
berbagai gerak yang terjadi dalam aktivitas bungee jumping ini, dalam kasus ini akan di prediksi kapan tali akan berhenti berosilasi saat setelah melompat dari ketinggian tertentu.
14.2 Teori Benda bergerak dipengaruhi oleh gaya-gaya yang bekerja padanya. Banyak kasus benda bergerak mengalami gerakan kompleks yang tidak hanya terjadi dari satu gerak, seperti halnya gerak pada kasus Bungee Jumping. Pada kasus ini si pelompat yang awalnya berada di titik datum yang memiliki ketinggian tertentu menjatuhkan diri kebawah, dari sini dapat dikatakan bahwa si pelompat mengalami gerak jatuh bebas, karena tali pengikat bungee yang mengikat objek masih dalam keadaan kendur. Namun saat jatuh bebas, objek/pelompat tetap mengalami gaya gesek udara. Setelah tali bungee merenggang gaya yang dialami pelompat berubah menjadi gerak diperlambat akibat adanya gaya tarik oleh pegas tali bungee, dan dalam hal ini gaya gesek udara masih tetap bekerja pada si pelompat. Dalam aktivitas bungee jumping digunakan tali berpegas, agar pada saat si pelompat sampai di titik terendahnya kumpulan gaya-gaya yang bekerja padanya tidak menyebabkan kecelakaan pada diri si pelompat, adanya gaya pegas membantu meredamkan gaya yang bekerja pada pelompat. Peredaman gaya harus ditinjau untuk meminimalisir kecelakaan [5]. Pada saat pelompat terjun ke bawah dan tali masih kendur, dengan posisi y < l , gaya yang bekerja pada pelompat dapat ditinjau dari persamaan gerak hukum kedua Newton
∑F
y
= m.a
a = −g
(14.1)
Dari persamaan diatas terlihat bahwa saat gerak jatuh bebas percepatan pelompat jatuh sama dengan percepatan gravitasi. Dari persamaan (14.1) dapat diperkirakan nilai kecepatan yang dialami pelompat dan letak posisinya.
v = ∫ adt y = ∫ vdt
(14.2) (14.3)
Namun, untuk kasus bungee jumping persamaan gerak mendapatkan gaya eksternal sehingga percepatan yang dialami pelompat akan berubah. Dengan mengganggap benda mengalami gerak jatuh bebas dan selanjutnya mengalami gerak diperlambat akibat gaya gesek udara
bv dan redaman dari gaya tarik tali bungee
286
k (y − l ), m
Komputasi Fisika 2: 14 Simulasi kasus gerak benda teredam ..
maka dapat ditulis persamaan gerak yang dialami oleh pelompat. Dengan syarat batas pada saat y < l , gunakan persamaan
a = g − bv
(14.4)
dengan syarat batas pada saat y > l , gunakan persamaan
k (y − l ) m
a = g − bv −
(14.5)
2
b (N.s/m), kecepatan si pelompat v (m/s), konstanta pegas k (N/m), massa pelompat m (kg), ketinggian yang dialami pelompat y (m), dan panjang tali bungee l (m). Dimana percepatan gaya gravitasi g (m/s ), gesek udara
14.3 Metode Numerik Dengan menerapkan hukum II Newton, di mana
∑ F = ma
(14.6) dan besaran-besaran gerak lainnya dihitung dengan menggunakan algoritma euler, yaitu kecepatan benda
v(t + ∆t ) = v(t ) + a(t )∆t
(14.7)
y(t + ∆t ) = y(t ) + v(t )∆t
(14.8)
Serta panjang tali
pada waktu
(t + ∆t ) . Implementasi persamaan (14.6) untuk posisi tali y < l dan
y > l adalah a (t ) = g − bv (t )
(14.9a)
dan
a (t ) = g − bv (t ) − Kecepatan benda dan ketinggian tali menggunakan persamaan (14.7) dan (14.8) .
k ( y (t ) − l ) m pada saat
(14.9b)
(t + ∆t ) didapat dengan
14.4 Algoritma Simulasi bungee jumping dilakukan dengan menggunakan algoritma berikut untuk memperoleh ketinggian tali L1.
k, l, m?
L2.
g, b?
287
Komputasi Fisika 2: 14 Simulasi kasus gerak benda teredam ..
L3.
tbeg, tend, dt?
L4.
Nt = 1 + (tend-tbeg)/dt
L5.
y=0,v=0, t=tbeg
L6.
y
L7.
Ftotal= fs + mg –b*v
L8.
a=Ftotal/m
L9.
v= v+a*dt
L10.
y=y+v*dt
L11.
y>l, fs=-k(y-l)
L12.
Ftotal=fs+mg-b*v
L13.
a=Ftotal/m
L14.
v= v+a*dt
L15.
y=y+v*dt
14.5 Instrumen dan Eksperimen Dalam tulisan ini, penulis telah melakukan eksperimen untuk memodelkan Bungee Jumping dengan menggunakan perangkat sederhana. Dengan menggunakan papan, tali pegas dan objek pelompat diwakili oleh balok kayu. Dengan menggunakan berbagai jenis tali yang memiliki konstanta yang berbeda-beda dimaksudkan untuk melihat pengaruh pereganggan atau pertambahan panjang tali dan redaman yang dihasilkan masing-masing tali pegas. Pengamatan eksperimen diamati dengan menggunakan camera video untuk melihat letak posisi objek tiap waktunya. Analisis pengamatan menggunakan video dari xiaomi redmi note 2, dengan perlambatan 120 fps (frame per secon). Pada eksperimen dengan menggunakan benda berupa balok kayu sebagai beban dengan massa 0,158 kg, panjang masing-masing tali yang digunakan rata-rata 30 cm. Instrument alat eksperimen dapat dilihat pada gambar dibawah ini.
288
Komputasi Fisika 2: 14 Simulasi kasus gerak benda teredam ..
Gambar 14.1 gambar animasi alat eksperimen menggunakan google sketchup (kiri) dan foto saat eksperimen bungee jumping (kanan).
Ukuran instrument sebenarnya sesuai dengan rancangan google sketchup, papan eksperimen diberi tanda sebagai jarak posisi y si objek benda dengan tiap-tiap garis pengukuran mewakili jarak 2 inch. Yang nantinya dalam perhitungan jarak tersebut dikonversi kedalam meter. Pengamatan eksperimen yang menggunakan camera video nantinya akan dikonversi sesuai jarak sebenarnya.
14.6 Hasil dan Diskusi Data-data hasil eksperimen yang diperoleh ditunjukan dalam tabel 14.1 berikut. Tabel 14.1 Data-data hasil eksperimen
Warna Tali Abu-abu
L0 (cm)
L' (cm)
30
32
Putih
30
Pink
30
m (kg)
∆L (cm)
Serat
k (N/m) karet
0.158
0.02
77.42
30.6
0.158
0.006
258.07
18 14
33
0.158
0.03
51.61
17
28.8
29.8
0.158
0.01
154.84
14
Orange
30
30.9
0.158
0.009
172.04
20
Biru
30
31.2
0.158
0.012
129.03
26
Hitam
289
Komputasi Fisika 2: 14 Simulasi kasus gerak benda teredam ..
Dari tabel 14.1 terlihat dengan menggunakan beraneka tali diperoleh nilai peregangan yang berbeda-beda, sehingga dapat diketahui pula bahwa konstanta pegas dari tiap tali juga berbeda. Perbedaan tersebut ada hubungannya dengan jumlah serat yang terdapat pada tali, dapat dilihat bahwa untuk tali abu-abu, pink dan biru, makin banyak serat maka akan semakin tidak lentur (k besar). Sedangkan untuk tali warna putih k besar diakibatkan oleh diameter serat yang besar juga, untuk yang hitam inti karet berbentuk kotak (bukan bulat), dan orange bahannya lebih keras dibanding biru. Dapat kita lihat perbandingan hasil gerak jatuh bebas benda dari tiap-tiap tali pada gambar dibawah ini
Gambar 14.2 Perbandingan grafik gerak jatuh bebas dan gerak osilasi teredam berdasarkan hasil eksperimen bungee jumping menggunakan berbagai jenis tali pegas
Terlihat dari gambar 14.2 diatas, kurva berwarna hijau merupakan kurva gerak jatuh bebas tanpa redaman, kurva yang terlihat membentuk parabola. Jika dibandingkan dengan kurva lainnya yang merupakan kurva hasil dari gerak jatuh bebas yang kemudian gerak benda mengalami osilasi dari gaya tarik tali pegas berdasarkan eksperimen. Karena menggunakan benda sebagai objek pelompat yang memiliki geometri yang tidak teratur maka hanya di plot bagian kurva saat jatuh bebas sampai saat benda bergerak kembali keatas.
290
Komputasi Fisika 2: 14 Simulasi kasus gerak benda teredam ..
Gambar 14.3 Kurva hasil perhitungan letak posisi benda saat jatuh bebas sampai berosilasi akibat tarikan gaya pegas menggunakan software C++
Gambar 14.4 kurva hasil peredaman selama 15 sekon menggunakan software C++
Pada gambar 14.3 merupakan kurva yang diperoleh dari hasil perhitungan menggunakan software C++ juga menggunakan data hasil eksperimen. Diperoleh
291
Komputasi Fisika 2: 14 Simulasi kasus gerak benda teredam ..
hasil yang serupa dengan gambar 14.2, terlihat bahwa kurva menunjukan pada saat yang sama, posisi benda berada pada posisi yang sama dengan posisi eksperimen. Dengan mengguanakan dt yang kecil kita bisa dapatkan grafik yang sesuai dengan eksperimen, sebaliknya jika dt terlampau besar, maka eror yang dihasilkan juga besar (kekurangan metoda Euler). Pada gambar 14.4 diatas memperlihat adanya peredaman sehingga objek berada di posisi setimbang di sekitar posisi y = 0,3 yang mana sesuai dengan panjang tali yang digunakan. Berdasarkan hasil simulasi diatas terlihat benda mulai akan diam saat waktu melebihi 10 sekon.
14.7 Kesimpulan Aktivitas bungee jumping yang menggunakan tali pegas mengalami gaya teredam akibat tarikan yang menyebabkan redaman ke arah gerakan pelompat dapat disimulasikan dengan metoda Euler. Awal mula pelompat mengalami gerak jatuh bebas kemudian semakin lama objek pelompat mengalami gaya teredam sehingga menuju titik setimbang. Hal itu telah terbukti dari hasil eksperimen, kurva perhitungan posisi benda (pelompat) semakin lama berada dalam posisi setimbang. Parameter m,b,dt, dan k mempengaruhi kecepatan dan posisi benda. Karena menggunakan metoda euler, maka dt harus dipilih sangat kecil agar tidak melanggar hukum kekalan energi.
14.8 Referensi 1. 2. 3. 4. 5.
https://id.wikipedia.org/wiki/Lompat_bungee Andre Heck, dkk, “Understanding Physics of Bungee Jumping”, Physics Education 45 (1) 2010 http://www.real-world-physics-problems.com/physics-of-bungee-jumping.html Jones, D.R.H., “Analysis of a Fatal Bungee-Jumping Accident”, Engineering Failure Analysis 11 (2004) 857-872 Yanchen Li dan Zhengyuan Lu , “Dynamics Analysis of Bungee Jumping”, A major qualifying project Worcester Polytechnic Institute, 2013
14.9 Lampiran /* Example of molecular dynamics method implementing Euler algorithm for the case of free fall Yudha hamdi arzi | [email protected] Compile : g++ md-e-ff.cpp -o md-e-ff Execute : ./md-e-ff [options] 20160526 Create this program. */ #include #include
292
Komputasi Fisika 2: 14 Simulasi kasus gerak benda teredam ..
#include #include #include #include
<math.h> <stdio.h>
using namespace std; double Ftotal(double t, double v, double y); double fs(double t, double y); //Definisi data global untuk variabel yang digunakan double k=77.42; double l = 0.3; double m = 0.158; double g = 9.8; double tbeg = 0; double tend = 1; double dt = 0.001; double b = 0.1; int main() { // Define iteration parameters int Nt = 1 + (int) floor((tend - tbeg) / dt); //floor membulatkan angka kebawah // Define motion variables double y = 0; double v = 0; double ky,kv; // Open output file ofstream fout; fout.open("bungee_jumping.txt"); // Display data header fout<< "# t\ty\tv" << tabulasi (jarak)
endl; // \t digunakan
untuk
memberikan
// Lakukan iterasi data for(int it= 0; it
293
Komputasi Fisika 2: 14 Simulasi kasus gerak benda teredam ..
dy = y-yo; if (dy < 0.){return 0;} else {return -k*dy;} } Fungsi gaya total (sigma f) double Ftotal(double t, double v, double y){ double w; w = m*g; return fs(t,y) + w - b*v ; }
294