PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PENYELESAIAN PERSAMAAN GELOMBANG AIR DANGKAL DENGAN BEBERAPA METODE NUMERIS
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Matematika Program Studi Matematika
Disusun oleh: Ilga Purnama Sari NIM: 123114023
PROGRAM STUDI MATEMATIKA JURUSAN MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PENYELESAIAN PERSAMAAN GELOMBANG AIR DANGKAL DENGAN BEBERAPA METODE NUMERIS
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Matematika Program Studi Matematika
Disusun oleh: Ilga Purnama Sari NIM: 123114023
PROGRAM STUDI MATEMATIKA JURUSAN MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2016
i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
SOLUTION TO THE SHALLOW WATER WAVE EQUATIONS WITH SOME NUMERICAL METHODS
A THESIS
Presented as Partial Fulfillment of the Requirements to Obtain the Degree of Sarjana Matematika Mathematics Study Program
Written by: Ilga Purnama Sari Student ID: 123114023
MATHEMATICS STUDY PROGRAM DEPARTMENT OF MATHEMATICS FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2016
ii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRAK
Persamaan gelombang air dangkal adalah persamaan yang memodelkan aliran air di tempat terbuka. Persamaan gelombang air dangkal seringkali disebut sistem Saint-Venant yang diturunkan dari hukum kekekalan massa dan momentum. Dalam skripsi ini, persamaan gelombang air dangkal diselesaikan menggunakan beberapa metode, yaitu metode volume hingga, metode beda hingga grid kolokasi dan metode beda hingga grid selang-seling. Metode volume hingga bekerja dengan cara membagi domain ruang menjadi sebanyak berhingga sel, kemudian dihitung rata-rata kuantitas untuk masing-masing sel. Metode beda hingga grid kolokasi dikerjakan secara implisit yaitu membagi domain ruang menjadi sebanyak berhingga titik, kemudian persamaan gelombang air dangkal didiskretkan dan membentuk sebuah sistem persamaan linear. Terakhir, metode beda hingga grid selang-seling bekerja dengan cara membagi domain perhitungan ruang secara selang-seling. Kedalaman air dihitung pada grid dengan indeks bilangan bulat dan kecepatan air dihitung pada grid dengan indeks pecahan. Penggunaan metode yang tepat akan menghasilkan solusi yang akurat untuk persamaan gelombang air dangkal. Penelitian ini menguji beberapa metode numeris yang bisa digunakan untuk menyelesaikan persamaan gelombang air dangkal satu dimensi. Pengujian dilakukan menggunakan simulasi numeris. Analisis hasil simulasi dilakukan dengan observasi hasil simulasi di setiap metode dan membandingkannya dengan hasil solusi eksak.
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRACT The shallow water wave equations model water flows in an open channel. The shallow water wave equations are often called the Saint-Venant system derived from the conservations of mass and momentum. In this thesis, the shallow water wave equations are solved using several methods, the Lax-Friedrichs finite volume method, collocation grid finite difference method and staggered grid finite difference method. The finite volume method works by dividing the spatial domain into a finite number of cells, then calculating the average quantity for each cell. The collocation grid finite difference method divides the spatial domain into a finite number of computational points for the shallow water equation discretization and forms a linear system of equations. Finally, the staggered grid finite difference method works by discretising the computational domain into staggered spatial partitions. The staggered finite diference means that we approximate the quantities of interest of the shallow water equations on different cells. In the staggered formulation, water depth is calculated at full grid points and water velocity is calculated at half grid points. The appropriate method will produce an accurate solution for the shallow water wave equations. This study examines several numerical methods for solving the one dimensional shallow water wave equations. We investigate the performance of these numerical methods using numerical simulations. Analysis of simulation results are done by observing the results of each method and comparing the numerical results with the exact solution.
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR ISI HALAMAN JUDUL.............................................................................................. i HALAMAN JUDUL DALAM BAHASA INGGRIS .......................................... ii HALAMAN PERSETUJUAN PEMBIMBING .................................................. iii HALAMAN PENGESAHAN .............................................................................. iv HALAMAN PERNYATAAN KEASLIAN KARYA .......................................... v LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI............................... vi ABSTRAK .......................................................................................................... vii ABSTRAK DALAM BAHASA INGGRIS ....................................................... viii DAFTAR ISI ........................................................................................................ ix BAB I PENDAHULUAN .................................................................................... 1 A. Latar Belakang ......................................................................................... 1 B. Rumusan Masalah .................................................................................... 4 C. Pembatasan Masalah ................................................................................ 5 D. Tujuan Penulisan ...................................................................................... 5 E. Metode Penulisan ..................................................................................... 5 F. Manfaat Penulisan .................................................................................... 6 G. Sistematika Penulisan .............................................................................. 6 BAB II PERSAMAAN DIFERENSIAL ........................................................... 8
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
A. Integral ...................................................................................................... 8 B. Klasifikasi Persamaan Diferensial .......................................................... 11 C. Nilai Eigen dan Vektor Eigen ................................................................. 15 D. Persamaan Diferensial Hiperbolik .......................................................... 16 E. Penurunan Numeris ................................................................................. 18 F. Karakteristik Persamaan Gelombang Air Dangkal ................................. 25 BAB III METODE NUMERIS UNTUK PERSAMAAN GELOMBANG AIR DANGKAL ........................................................................................................ 28 A. Solusi Eksak Persamaan Gelombang Air Dangkal ................................. 28 B. Penurunan Persamaan Gelombang Air Dangkal Satu Dimensi .............. 29 C. Masalah Bendungan Bobol ..................................................................... 35 D. Metode Volume Hingga Lax-Friedrichs ................................................. 37 E. Metode Beda Hingga Grid Kolokasi ....................................................... 44 F. Metode Beda Hingga Grid Selang-Seling ............................................... 53 BAB IV PERBANDINGAN BEBERAPA METODE NUMERIS DALAM PENYELESAIAN MODEL GELOMBANG AIR DANGKAL .................... 57 A. Metode Volume Hingga Lax-Friedrichs ................................................. 58 B. Metode Beda Hingga Grid Kolokasi ....................................................... 62 C. Metode Beda Hingga Grid Selang-Seling ............................................... 66
BAB V PENUTUP ............................................................................................. 71
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
A. Kesimpulan ............................................................................................ 71 B. Saran ........................................................................................................ 72 DAFTAR PUSTAKA ........................................................................................ 73 LAMPIRAN ....................................................................................................... 74
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB I PENDAHULUAN
Dalam bab ini akan dijelaskan latar belakang, rumusan dan pembatasan masalah, tujuan dan manfaat penulisan, juga akan disertakan sistematika penulisan. A. Latar Belakang Persamaan diferensial merupakan persamaan yang menghubungkan suatu fungsi beserta turunan-turunannya. Banyak masalah fisis yang dapat diselesaikan dengan persamaan diferensial. Masalah fisis merupakan masalah yang berhubungan dengan hukum alam yang dibahas dalam ilmu fisika. Masalah fisis seperti fluida dapat diselesaikan dengan menggunakan persamaan diferensial parsial. Fluida merupakan zat yang dapat mengalir. Zat itu dapat berupa gas atau cairan. Aliran fluida merupakan salah satu masalah fisis yang sering dijumpai dalam kehidupan sehari-hari. Masalah yang sudah pernah ada adalah terjadinya bencana alam seperti bobolnya bendungan air atau tsunami. Bencana alam tersebut disebabkan oleh aliran air dalam skala besar. Aliran tersebut dapat dimodelkan secara matematis (Crowhurst, 2013; Crowhurst dan Li, 2013). Model gelombang air yang sudah ada salah satunya adalah model gelombang air dangkal atau Shallow Water Wave Equations. Dangkal dalam arti matematis adalah amplitudo gelombang jauh lebih kecil dibandingkan panjang gelombangnya.
1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 2
Dengan demikian, nilai perbandingan antara amplitudo gelombang (π) dengan panjang gelombang (π) ditulis
π π
βͺ 1.
Penyelesaian persamaan gelombang air dangkal memiliki dua komponen penting yang tidak diketahui yaitu kedalaman dan kecepatan air, dengan β(π₯, π‘) adalah kedalaman air dan π’(π₯, π‘) adalah kecepatan air. Di sini, π‘ adalah variabel yang menyatakan waktu dan π₯ adalah variabel yang menyatakan ruang satu dimensi. Persamaan gelombang air dangkal dalam bentuk sistem persamaan diferensial parsial dinyatakan oleh dua persamaan simultan, yaitu βπ‘ + (π’β)π₯ = 0
(1.1)
1 (π’β)π‘ + (π’2 β + πβ2 )π₯ = βπβπ§π₯ 2
(1.2)
dan
dengan π§(π₯) adalah ketinggian tanah, dan π adalah konstanta percepatan gravitasi. Ilustrasi gelombang air dangkal ditunjukkan dalam Gambar 1.1. π
y
π€(π₯, π‘)
x
Gambar 1.1: Gelombang air dangkal dan variabel-variabel terkait dalam persamaan gelombang air dangkal.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 3
Pada skripsi ini akan diselesaikan persamaan gelombang air dangkal terkait dengan masalah bendungan bobol. Masalah bendungan bobol memiliki beberapa asumsi, syarat awal dan syarat batas yang akan dibahas lebih lanjut pada Bab III. Ilustrasi bendungan air dapat dilihat pada Gambar 1.2. Permukaan air
β1
Bendungan air
Permukaan air β0 π₯
Gambar 1.2: Bendungan air Secara umum, solusi persamaan gelombang air dangkal tersebut cukup sulit untuk dicari secara analitis, sehingga diperlukan cara lain untuk memecahkannya. Metode numeris adalah salah satu cara untuk memperoleh solusi persamaan gelombang air dangkal tersebut. Banyak metode numeris yang telah dikembangkan sebelumnya untuk memecahkan solusi persamaan tersebut, mulai dari metode karakteristik, metode beda hingga, metode elemen hingga, metode volume hingga dan sebagainya. Metode beda hingga dikembangkan berdasarkan diskritisasi langsung dari persamaan diferensial yang dipandang (LeVeque, 1992). Metode beda hingga unggul dalam kemudahan komputasi. Dalam tugas akhir ini akan dibahas penyelesaian persamaan gelombang air dangkal dengan metode beda hingga dan metode volume hingga, karena perumusan kedua metode tersebut sederhana.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 4
Metode beda hingga terbagi atas dua model yaitu model grid kolokasi dan model grid selang-seling. Pada grid kolokasi ditentukan nilai pendekatan untuk semua variabel β dan π’ yang tidak diketahui secara bersamaan. Pada grid selangseling ditentukan pendekatan variabel β dan π’ secara selang-seling. Salah satu referensi tentang grid kolokasi adalah LeVeque (1992). Salah satu referensi tentang grid selang-seling adalah Stelling dan Duinmeijer (2003). Penelitian ini akan membandingkan hasil perhitungan terbaik antara metode volume hingga, metode beda hingga grid kolokasi dan metode beda hingga grid selang-seling. Dari ketiga metode tersebut diperoleh hasil perhitungan terbaik yang dapat memperbaiki metode beda hingga dengan tidak ada getaran semu (artificial oscillation) pada hasil simulasi aliran air. Fokus penelitian ini adalah mengembangkan metode numeris dengan metode beda hingga dan volume hingga untuk menyimulasikan aliran air.
B. Rumusan Masalah Permasalahan yang dirumuskan dalam skripsi ini ada empat, yaitu: 1. Bagaimana memodelkan gelombang air dangkal? 2. Bagaimana menyelesaikan dan menyimulasikan persamaan gelombang air dangkal dengan menggunakan metode volume hingga? 3. Bagaimana menyelesaikan dan menyimulasikan persamaan gelombang air dangkal dengan menggunakan metode beda hingga grid kolokasi? 4. Bagaimana menyelesaikan dan menyimulasikan persamaan gelombang air dangkal dengan menggunakan metode beda hingga grid selang-seling?
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 5
C. Pembatasan Masalah Pembahasan masalah dalam skripsi ini akan dibatasi pada memodelkan gelombang air dangkal satu dimensi dan mencari penyelesaian persamaan gelombang air dangkal dengan metode beda hingga dan volume hingga.
D. Tujuan Penulisan Skripsi ini mempunyai dua tujuan, yaitu: 1. Merumuskan dan menyelesaikan persamaan gelombang air dangkal dengan beberapa metode numeris, yaitu metode volume hingga Lax-Friedrichs, metode beda hingga grid kolokasi dan metode beda hingga grid selang-seling. 2. Membandingkan beberapa hasil simulasi numeris menggunakan metode volume hingga Lax-Friedrichs, metode beda hingga grid kolokasi dan metode beda hingga grid selang-seling. Dari hasil simulasi tersebut kemudian dipilih hasil yang terbaik yang memuat galat yang paling kecil. 3. Menyimulasikan metode volume hingga Lax-Friedrichs, metode beda hingga grid kolokasi dan metode beda hingga grid selang-seling untuk masalah bendungan bobol.
E. Metode Penulisan Metode penulisan yang digunakan adalah studi pustaka dari buku-buku dan jurnal serta praktek simulasi numeris.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 6
F. Manfaat Penulisan Dengan memodelkan persamaan gelombang air, kita dapat 1. Menyimulasikan terjadinya banjir. 2. Memperkirakan daerah mana saja yang akan tenggelam. 3. Memperkirakan kecepatan dan kedalaman air pada daerah tersebut.
G. Sistematika Penulisan Sistematika penulisan tugas akhir ini adalah sebagai berikut:
BAB I
PENDAHULUAN
A. Latar Belakang Masalah B. Rumusan Masalah C. Batasan Masalah D. Metode Penulisan E. Tujuan Penulisan F. Manfaat Penulisan BAB II
PERSAMAAN DIFERENSIAL
A. Integral B. Klasifikasi Persamaan Diferensial C. Nilai eigen dan vektor eigen D. Persamaan Diferensial Hiperbolik E. Penurunan Numeris F. Karakteristik Persamaan Gelombang Air Dangkal BAB III METODE NUMERIS UNTUK PERSAMAAN GELOMBANG AIR DANGKAL A. Solusi Eksak Persamaan Gelombang Air Dangkal B. Penurunan Persamaan Gelombang Air Dangkal Satu Dimensi C. Masalah Bendungan Bobol D. Metode Volume Hingga Lax-Friedrichs
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 7
E. Metode Beda Hingga Grid Kolokasi F. Metode Beda Hingga Grid Selang-Seling BAB IV PERBANDINGAN BEBERAPA METODE NUMERIS DALAM PENYELESAIAN MODEL GELOMBANG AIR DANGKAL A. Metode Volume Hingga Lax-Friedrichs B. Metode Beda Hingga Grid Kolokasi C. Metode Beda Hingga Grid Selang-Seling BAB V
PENUTUP
A. Kesimpulan B. Saran DAFTAR PUSTAKA LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB II PERSAMAAN DIFERENSIAL
Landasan teori skripsi ditulis dalam bab ini. Landasan teori tersebut meliputi: integral, klasifikasi persamaan diferensial, nilai eigen dan vektor eigen, persamaan diferensial hiperbolik, penurunan numeris, dan karakteristik persamaan gelombang air dangkal.
A. Integral Pada bagian ini dibahas mengenai integral yang meliputi definisi dan contoh dari integral tentu dan aturan Leibniz. Definisi 2.1 Jika diberikan suatu fungsi π(π₯) pada suatu interval πΌ dan berlaku πΉ β² (π₯) = π(π₯), untuk suatu πΉ(π₯), maka πΉ(π₯) adalah anti turunan dari π(π₯). Dengan kata lain πΉ β² (π₯) = π(π₯). Contoh 2.1 Carilah suatu anti turunan dari π(π₯) = 2π₯ 2 pada (ββ, β). Penyelesaian: Fungsi πΉ(π₯) = 2π₯ 3 bukan anti turunannya karena turunan 2π₯ 3 adalah 6π₯ 2 . Tetapi 2
2
hal ini menyarankan πΉ(π₯) = 3 π₯ 3 , yang memenuhi πΉ β² (π₯) = 3 3π₯ 2 = 2π₯ 2 . Dengan 2
demikian, suatu anti turunan dari π adalah 3 π₯ 3 .
8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 9
Anti turunan dinotasikan dengan β« β¦ ππ₯. Notasi tersebut menunjukkan anti turunan terhadap π₯. Anti turunan biasanya disebut integral tak tentu. Integral Tentu Perhatikan Gambar 2.1 berikut ini.
π¦
π¦ = π(π₯)
π₯
π
π
Gambar 2.1: Ilustrasi fungsi satu variabel Untuk menghitung luasan dibawah kurva π¦ = π(π₯) pada interval [π, π], dapat dihitung dengan cara aproksimasi yaitu dengan membagi interval [π, π] menjadi π subinterval. Subinterval tersebut memiliki panjang yang sama yaitu
πβπ π
untuk π >
0. Setelah membagi interval menjadi π subinterval kemudian menghitung total jumlah luasan dari masing-masing persegi panjang yang dibentuk oleh masingmasing subinterval tersebut. Hal ini diperoleh dengan memilih π₯0 , π₯1 , β¦ , π₯π dengan π = π₯0 , π = π₯π , dan π₯π β π₯πβ1 =
πβπ π
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 10
untuk π = 1,2, β¦ , π. Andaikan panjang masing-masing subinterval yaitu
πβπ π
dinotasikan dengan βπ₯ = π₯π β π₯πβ1 . Luas daerah dibawah kurva diaproksimasikan dengan total luas daerah yang dibentuk oleh masing-masing subinterval, aproksimasi luas di bawah kurva adalah π΄1 + π΄2 + β― + π΄π . Artinya total luas tersebut yang dapat ditulis π
π(π’1 )βπ₯ + π(π’2 )βπ₯ + β― + π(π’π )βπ₯ = β π(π’π )βπ₯ π=1
yang disebut jumlahan Riemann fungsi π pada interval [π, π], sebagai pendekatan luas daerah di bawah kurva π¦ = π(π₯) dan diatas sumbu π₯. Di sini, π’π β [π₯πβ1 , π₯π ]. Semakin banyak subinterval yang digunakan, artinya βπ₯ β 0 maka semakin baik pula aproksimasi luasan tersebut dan semakin dekat dengan luasan yang sebenarnya. Dengan demikian, Luas daerah = lim β π(π’π )βπ₯. βπ₯β0
π
Definisi 2.2 Andaikan π fungsi yang terdefinisi pada [π, π]. Integral tentu π dari π sampai π
π dinotasikan β«π π (π₯)ππ₯, adalah π
β« π(π₯)ππ₯ = lim β π(π’π )βπ₯. π
βπ₯β0
π
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 11
Aturan Leibniz Teorema 2.1 Aturan Leibniz untuk satu variabel: Jika π adalah fungsi kontinu pada interval [π, π] dan jika π’(π₯) dan π£(π₯) adalah fungsi yang dapat diturunkan terhadap π₯ yang nilainya terletak di interval [π, π], maka π π£(π₯) ππ£ ππ’ β« π(π‘)ππ‘ = π(π£(π₯)) β π(π’(π₯)) ππ₯ π’(π₯) ππ₯ ππ₯ Teorema 2.2 Aturan Leibniz untuk dua variabel: Jika π(π₯, π‘) adalah fungsi sedemikian sehingga turunan parsial dari π terhadap π‘ ada dan kontinu, maka π£(π₯) π π£(π₯) ππ π π β« π(π₯, π‘)ππ‘ = β« ππ‘ + π(π£(π₯), π₯) π£(π₯) β π(π’(π₯), π₯) π’(π₯). ππ₯ π’(π₯) ππ₯ ππ₯ π’(π₯) ππ₯
Bukti dapat dilihat pada buku karangan David. B dan George. C yang berjudul Basic Partial Differential Equations.
B. Klasifikasi Persamaan Diferensial Berikut ini dibahas tentang klasifikasi persamaan diferensial. Klasifikasi persamaan diferensial yang dibahas meliputi definisi dan contoh persamaan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 12
diferensial, persamaan diferensial biasa, persamaan diferensial parsial, orde persamaan diferensial dan kelinearan suatu persamaan diferensial.
Definisi 2.3 Persamaan diferensial adalah persamaan yang melibatkan variabel-variabel tak bebas dan turunan-turunannya terhadap variabel-variabel bebas. Contoh 2.2 Persamaan di bawah ini merupakan contoh persamaan diferensial: π2π¦ ππ¦ 2 + π₯π¦ ( ) =0 ππ₯ 2 ππ₯
(2.1)
π4 π₯ π2π₯ + 5 + 3π₯ = sin π‘ ππ‘ 4 ππ‘ 2
(2.2)
ππ£ ππ£ + =π£ ππ ππ‘
(2.3)
π 2π’ π 2π’ π 2π’ + + = 0. ππ₯ 2 ππ¦ 2 ππ§ 2
(2.4)
Definisi 2.4 Persamaan diferensial biasa adalah persamaan diferensial yang melibatkan turunan biasa beserta satu atau lebih variabel tak bebas terhadap satu variabel bebas. Contoh 2.3 Persamaan (2.1) dan (2.2) adalah persamaan diferensial biasa. Pada persamaan (2.1) variabel π₯ adalah suatu variabel bebas, dan variabel π¦ adalah variabel tak bebas. Pada persamaan (2.2), variabel π‘ adalah variabel bebas, dengan π₯ adalah variabel tak bebasnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 13
Definisi 2.5 Persamaan diferensial parsial adalah persamaan diferensial yang melibatkan turunan parsial dari satu atau lebih variabel tak bebas terhadap lebih dari satu variabel bebas. Contoh 2.4 Persamaan (2.3) dan (2.4) adalah persamaan diferensial parsial. Pada persamaan (2.3), variabel π dan π‘ adalah variabel bebas dan π£ adalah variabel tak bebasnya. Pada persaman (2.4) terdapat tiga variabel bebas yaitu π₯, π¦, dan π§. Pada persamaan (2.4) variabel tak bebasnya adalah π’.
Definisi 2.6 Orde dari persamaan diferensial adalah tingkat tertinggi dari turunan yang terkandung dalam persamaan diferensial. Contoh 2.5 Persamaan diferensial biasa (2.1) adalah persamaan diferensial orde kedua, karena tingkat tertinggi dari turunan pada persamaan tersebut adalah dua. Persamaan (2.2) adalah persamaan diferensial biasa orde keempat. Persamaan (2.3) termasuk persamaan diferensial parsial orde pertama. Persamaan (2.4) merupakan persamaan diferensial parsial orde kedua.
Definisi 2.7 Suatu persamaan diferensial biasa orde ke-π πΉ(π₯, π¦, π¦ β² , π¦ β²β² , β¦ , π¦ (π) ) = 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 14
dikatakan linear jika πΉ merupakan suatu fungsi linear dari variabel π¦, π¦ β² , π¦ β²β² , β¦ , π¦ (π) ; definisi yang sama juga berlaku untuk persamaan diferensial parsial. Secara umum persamaan diferensial biasa linear orde π dituliskan sebagai π0 (π₯)π¦ (π) + π1 (π₯)π¦ (πβ1) + β― + ππ (π₯)π¦ = π(π₯)
(2.5)
dengan π0 tidak sama dengan nol. Contoh 2.6 Persamaan diferensial biasa berikut keduanya linear. Pada kedua persamaan berikut, variabel π¦ adalah variabel tak bebas. Perhatikan bahwa π¦ dan turunanturunannya terjadi dengan pangkat satu saja dan tidak ada perkalian dari π¦ dan/ atau turunan dari π¦. π2π¦ ππ¦ + 5 + 6π¦ = 0 ππ₯ 2 ππ₯
(2.6)
π4π¦ π3π¦ ππ¦ 2 + π₯ + π₯3 = π₯π π₯ . 4 3 ππ₯ ππ₯ ππ₯
(2.7)
Definisi 2.8 Suatu persamaan diferensial biasa yang tidak memiliki bentuk (2.5) dinamakan persamaan diferensial biasa tak linear. Contoh 2.7 Persamaan diferensial biasa berikut semuanya tak linear: π2π¦ ππ¦ +5 + 6π¦ 2 = 0 2 ππ₯ ππ₯
(2.8)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 15
π2 π¦ ππ¦ 3 + 5 ( ) + 6π¦ = 0 ππ₯ 2 ππ₯
(2.9)
π2π¦ ππ¦ + 5π¦ + 6π¦ = 0 2 ππ₯ ππ₯
(2.10)
Persamaan (2.8) tak linear karena variabel tak bebas π¦ terdapat pada pangkat kedua dalam bentuk 6π¦ 2. Persamaan (2.9) juga tak linear karena terdapat bentuk ππ¦ 3
5 (ππ₯ ) yang melibatkan pangkat tiga pada turunan pertama. Persamaan (2.10) tak ππ¦
linear karena pada bentuk 5π¦ ππ₯ melibatkan perkalian terhadap variabel tak bebas dan turunan pertamanya.
C. Nilai Eigen dan Vektor Eigen Berikut dibahas mengenai definisi dan contoh dari nilai eigen dan vektor eigen. Definisi 2.9 Jika π΄ adalah matriks π Γ π, maka vektor tak nol π± di βπ disebut vektor eigen dari π΄ jika π΄π merupakan perkalian skalar dengan π± atau dapat ditulis π΄π± = ππ± untuk suatu skalar π. Skalar π disebut nilai eigen dari π΄ dan π± disebut vektor eigen yang bersesuaian dengan π. Contoh 2.8 1 Vektor π± = [ ] adalah vektor eigen dari 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 16
3 0 π΄=[ ] 8 β1 yang bersesuaian dengan nilai eigen π = 3, karena π΄π± = [
3 0 1 3 ] [ ] = [ ] = 3π±. 8 β1 2 6
Secara geometri, perkalian matriks π΄ dengan vektor π± memiliki kelipatan 3 terhadap vektor π±. Ilustrasi secara geometri ditunjukkan dalam Gambar 2.2.
π¦ 3π₯
6
2
π₯
1
3
π₯
Gambar 2.2: Ilustrasi geometri vektor eigen. D. Persamaan Diferensial Hiperbolik Persamaan diferensial hiperbolik dapat digunakan untuk memodelkan banyak fenomena yang melibatkan pergerakan gelombang. Perhatikan bentuk persamaan diferensial berikut ππ‘ (π₯, π‘) + π΄ππ₯ (π₯, π‘) = 0, Di sini ππ‘ =
ππ ππ‘
ππ
dan ππ₯ = ππ₯ .
(2.11)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 17
Dalam kasus yang paling sederhana yaitu koefisien konstan dan linear. Dalam hal ini π βΆ β Γ β β βπ adalah vektor dengan π komponen yang menyatakan fungsi yang tidak diketahui (tekanan, kecepatan, dan sebagainya) yang ingin ditentukan, dan π΄ suatu konstan merupakan matriks real berukuran π Γ n. Andaikan π΄ = π’Μ
suatu konstan yang menyatakan kecepatan perambatan (aliran pada pipa satu dimensi misalnya), maka persamaan (2.11) menjadi ππ‘ (π₯, π‘) + π’Μ
ππ₯ (π₯, π‘) = 0,
(2.12)
persamaan ini disebut persamaan adveksi. Persamaan ππ‘ (π₯, π‘) + π΄ππ₯ (π₯, π‘) = 0 adalah persamaan hiperbolik, jika matriks π΄ memiliki nilai eigen real dan berkorespondensi dengan π vektor eigen yang bebas linear. Artinya, semua vektor dalam βπ dapat secara tunggal diuraikan sebagai kombinasi linear dari nilai-nilai eigen tersebut. Secara formal definisi persamaan diferensial hiperbolik sebagai berikut.
Definisi 2.10 Suatu sistem linear dengan bentuk ππ‘ + π΄ππ₯ = 0 dikatakan hiperbolik jika matriks π΄ yang berukuran π Γ n dapat didiagonalkan dengan nilai eigen real. Secara khusus untuk persamaan adveksi, diketahui bahwa π΄ = π’Μ
, yang merupakan suatu konstanta real. Jadi π΄ dapat didiagonalkan oleh nilai π΄ itu sendiri dan nilai eigen dari π΄ adalah π΄ itu sendiri. Dengan demikian, persamaan adveksi merupakan persamaan diferensial hiperbolik. Keterangan lengkap tentang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 18
persamaan diferensial hiperbolik dapat ditemukan dalam buku karangan LeVeque (2004).
E. Penurunan Numeris Pada subbab ini dibahas mengenai penurunan numeris beserta contohnya dan penjelasan mengenai tiga hampiran dalam menghitung turunan numerik yaitu hampiran beda maju, hampiran beda mundur dan hampiran beda pusat. Definisi 2.11 Suatu turunan fungsi didefinisikan dengan π(π₯ + βπ₯) β π(π₯) . βπ₯β0 βπ₯
π β² (π₯) = lim
Seringkali fungsi π(π₯) tidak diketahui secara eksplisit, tetapi hanya diketahui beberapa titik data saja. Seringkali π(π₯) diketahui secara eksplisit tetapi karena bentuknya yang sangat rumit sehingga untuk menentukan fungsi turunannya juga sulit, misalnya pada fungsi-fungsi berikut ini:
(a). π(π₯) =
βcos(2π₯ 2 ) + π₯ tan(3π₯) , 2π₯ π₯ sin(π₯) + π β cos(π₯)
(b). π(π₯) = π₯π (2π₯+2) ln(4π₯ 2 ). Perhitungan nilai turunan pada fungsi (a) dan (b) dapat dikerjakan secara numerik. Nilai turunan yang diperoleh merupakan nilai hampiran dan diharapkan nilai galatnya sekecil mungkin.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 19
Tiga Hampiran dalam Menghitung Turunan Numerik Turunan adalah limit dari hasil bagi pengurangan dua buah nilai yang besar π(π₯ + βπ₯) β π(π₯) dan membaginya dengan bilangan yang kecil (βπ₯). Misal diberikan nilai-nilai π₯ di π₯0 β βπ₯, π₯0 , dan π₯0 + βπ₯, serta nilai fungsi untuk nilainilai π₯ tersebut. Titik-titik yang diperoleh adalah (π₯β1 , πβ1 ), (π₯0 , π0 ), dan (π₯1 , π1 ), yang dalam hal ini π₯β1 = π₯0 β βπ₯ dan π₯1 = π₯0 + βπ₯. Terdapat tiga hampiran dalam menghitung nilai π β² (π₯0 ): 1. Hampiran Beda Maju Diketahui fungsi π¦ = π(π₯0 ). Akan ditunjukkan π β² (π₯0 ) dengan hampiran beda maju. π(π₯0 + βπ₯) β π(π₯0 ) βπ₯β0 βπ₯
π β² (π₯0 ) = lim β
π(π₯0 + βπ₯) β π(π₯0 ) βπ₯ =
π1 β π0 . βπ₯
2. Hampiran Beda Mundur Diketahui fungsi π¦ = π(π₯0 ). Akan ditunjukkan π β² (π₯0 ) dengan hampiran beda mundur. π(π₯0 ) β π(π₯0 β βπ₯) βπ₯β0 βπ₯
π β² (π₯0 ) = lim β
π(π₯0 ) β π(π₯0 β βπ₯) βπ₯ =
π0 β π1 . βπ₯
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 20
3. Hampiran Beda Pusat Diketahui fungsi π¦ = π(π₯0 ). Akan ditunjukkan π β² (π₯0 ) dengan hampiran beda pusat.
π(π₯0 + βπ₯) β π(π₯0 β βπ₯) βπ₯β0 2βπ₯
π β² (π₯0 ) = lim β
π(π₯0 + βπ₯) β π(π₯0 β βπ₯) 2βπ₯ =
π1 β πβ1 . 2βπ₯
Tafsiran geometri dari ketiga pendekatan di atas diperlihatkan pada Gambar 2.3. π¦
π¦
π¦1 π¦0
π¦0
π¦ = π(π₯)
π¦ = π(π₯) π¦β1
βπ₯ π₯β1
π₯0 (π)
π₯1
βπ₯
π₯
π₯β1
π₯0
(π)
π₯1
π₯
π¦
π¦1
π¦ = π(π₯)
π¦β1
(π)2βπ₯ π₯β1
π₯0
π₯1
π₯
Gambar 2.3: Tiga pendekatan dalam perhitungan numeris; (a) Hampiran beda maju, (b) Hampiran beda mundur, dan (c) Hampiran beda pusat.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 21
Penurunan Rumus Turunan dengan Deret Taylor Misalkan diberikan titik-titik (π₯π , ππ ), π = 0,1,2,3, β¦ , π, yang dalam hal ini π₯π = π₯0 + πβπ₯ dan ππ = π(π₯π ). Selanjutnya akan dihitung π β² (π₯) yang dalam hal ini π₯ = π₯0 + π βπ₯, π β π
dengan ketiga pendekatan yang disebutkan di atas (maju, mundur, pusat). 1.
Hampiran Beda Maju
Uraikan π(π₯π+1 ) di sekitar π₯π : (π₯π+1 β π₯π ) β² (π₯π+1 β π₯π )2 β²β² π(π₯π+1 ) = π(π₯π ) + π (π₯π ) + π (π₯π ) + β― 1! 2! dengan mensubtitusikan (π₯π+1 β π₯π ) = βπ₯ dan penulisan π(π₯π+1 ) dapat ditulis ππ+1 diperoleh ππ+1 = ππ + βπ₯ππ β² +
βπ₯ 2 β²β² π +β― 2 π
(2.13)
atau dapat ditulis βπ₯ππ β² = ππ+1 β ππ β
βπ₯ 2 β²β² π ββ― 2 π
kedua ruas dibagi dengan βπ₯ sehingga diperoleh ππ β² =
ππ+1 β ππ βπ₯ β²β² β π ββ― βπ₯ 2 π
karena
βπ₯ 2
ππ β²β² β β― merupakan bilangan yang sangat kecil dan tidak begitu
mempengaruhi nilai ππ β² sehingga dapat ditulis
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 22
ππ β² =
ππ+1 β ππ + π(βπ₯) βπ₯
yang dalam hal ini, π(βπ₯) =
βπ₯ 2
π β²β² (π‘), π₯π < π‘ < π₯π+1 .
Untuk nilai-nilai π di π₯0 dan π₯1 persamaan rumusnya menjadi: π0 β² =
π1 β π0 + π(βπ₯). βπ₯
Dalam hal ini π(βπ₯) =
βπ₯ 2
π β²β² (π‘), π₯π < π‘ < π₯π+1 menyatakan penurunan numeris
secara beda maju memiliki tingkat keakuratan tingkat satu atau ditulis π(βπ₯).
2. Hampiran Beda Mundur Uraikan π(π₯πβ1 ) di sekitar π₯π : π(π₯πβ1 ) = π(π₯π ) +
(π₯π+1 β π₯π ) β² (π₯π+1 β π₯π )2 β²β² π (π₯π ) + π (π₯π ) + β― 1! 2!
dengan mensubtitusikan (π₯π+1 β π₯π ) = βπ₯ dan penulisan π(π₯πβ1 ) dapat ditulis ππβ1 diperoleh ππβ1
βπ₯ 2 β²β² = ππ β βπ₯ππ + π ββ― 2 π β²
(2.14)
atau dapat ditulis βπ₯ 2 β²β² βπ₯ππ = ππ β ππβ1 + π ββ― 2 π β²
kedua ruas dibagi dengan βπ₯ sehingga diperoleh ππ β² =
ππ β ππβ1 βπ₯ β²β² β π +β― βπ₯ 2 π
karena
βπ₯ 2
ππ β²β² β β― merupakan bilangan yang sangat kecil dan tidak begitu
mempengaruhi nilai ππ β² sehingga dapat ditulis
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 23
ππ β² =
ππ β ππβ1 + π(βπ₯) βπ₯
yang dalam hal ini, π(βπ₯) = β
βπ₯ 2
π β²β² (π‘), π₯πβ1 < π‘ < π₯π .
Untuk nilai-nilai π di π₯0 dan π₯β1 persamaan rumusnya menjadi: π0 β² =
π0 β πβ1 + π(βπ₯) βπ₯
Dalam hal ini π(βπ₯) = β
βπ₯ 2
π β²β² (π‘), π₯π+1 < π‘ < π₯π menyatakan penurunan numeris
secara beda mundur memiliki tingkat keakuratan tingkat satu atau ditulis π(βπ₯).
3.
Hampiran Beda Pusat
Kurangkan persamaan (2.13) dengan persamaan (2.14) diperoleh: ππ+1 β ππβ1
βπ₯ 2 β²β² βπ₯ 2 β²β² β² = ππ + βπ₯ππ + π + β― β (ππ β βπ₯ππ + π β β―) 2 π 2 π β²
dengan menggunakan operasi penjumlahan dan pengurangan diperoleh ππ+1 β ππβ1 = 2βπ₯ππ β² +
βπ₯ 3 β²β²β² π +β― 3 π
atau dapat ditulis 2βπ₯ππ β² = ππ+1 β ππβ1 β
βπ₯ 3 β²β²β² π ββ― 3 π
Kedua ruas dibagi dengan 2βπ₯ sehingga diperoleh ππ+1 β ππβ1 βπ₯ 2 β²β²β² ππ = β π ββ― 2βπ₯ 6 π β²
karena
βπ₯ 2 6
ππ β²β²β² β β― merupakan bilangan yang sangat kecil dan tidak begitu
mempengaruhi nilai ππ β² sehingga dapat ditulis ππ β² =
ππ+1 β ππβ1 + π(βπ₯ 2 ), 2βπ₯
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 24
yang dalam hal ini, π(βπ₯ 2 ) = β
βπ₯ 2 6
π β²β²β² (π‘), π₯πβ1 < π‘ < π₯π+1 .
Untuk nilai-nilai π di π₯β1 dan π₯1 persamaan rumusnya menjadi: π0 β² =
π1 β πβ1 + π(βπ₯ 2 ) 2βπ₯
Dalam hal ini π(βπ₯ 2 ) = β
βπ₯ 2 6
π β²β²β² (π‘), π₯πβ1 < π‘ < π₯π+1 menyatakan penurunan
numeris secara beda pusat yang memiliki tingkat keakuratan tingkat dua atau ditulis π(βπ₯ 2 ). Perhatikan bahwa hampiran beda pusat lebih baik daripada dua hampiran sebelumnya, sebab orde galatnya adalah π(βπ₯ 2 ).
Menentukan Orde Galat Pada penurunan rumus turunan numeris dengan deret Taylor, rumus galat dalam penurunan rumus turunan numeris tersebut dapat langsung diperoleh. Tetapi dengan polinom interpolasi harus dicari rumus galat tersebut dengan bantuan deret Taylor. Contoh 2.9 Tentukan rumus galat dan orde dari rumus turunan numeris hampiran beda pusat: π β² (π₯0 ) =
π1 β πβ1 +πΈ 2βπ₯
Nyatakan πΈ (galat) sebagai ruas kiri persamaan, lalu ekspansi rusa kanan dengan deret Taylor di sekitar π₯0 : πΈ = π β² (π₯0 ) β
π1 β πβ1 2βπ₯
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 25
1
=π0 β² β 2βπ₯ [(π0 + βπ₯π0 β² + βπ₯ 2 2
π0 β²β² β
βπ₯ 3 6
1
=β =β
βπ₯ 2 6 βπ₯ 2 6
2
π0 β²β² +
βπ₯ 3 6
π0 β²β²β² + β― ) β (π0 β βπ₯π0 β² +
π0 β²β²β² + β― )]
=π0 β² β 2βπ₯ (2βπ₯π0 β² + =π0 β² β π0 β² β
βπ₯ 2
βπ₯ 2 6
βπ₯ 3 3
π0 β²β²β² + β― )
π0 β²β²β² + β―
π0 β²β²β² + β― π0 β²β²β² , π₯β1 < π‘ < π₯1
= π(βπ₯ 2 ). Jadi, hampiran beda pusat memiliki galat πΈ = β
βπ₯ 2 6
π0 β²β²β² , π₯β1 < π‘ < π₯1 , dengan
orde π(βπ₯ 2 ).
F. Karakteristik Persamaan Gelombang Air Dangkal Dipandang persamaan gelombang air dangkal βπ‘ + (π’β)π₯ = 0
(2.15)
1 (βπ’)π‘ + (π’2 β + πβ2 )π₯ = 0. 2
(2.16)
Gabungan persamaan (2.15) dan (2.16) dalam suatu sistem persamaan gelombang air dangkal yaitu
[
βπ’ β ] + [ 2 1 2] = 0 βπ’ + πβ βπ’ π‘ 2 π₯
(2.17)
Jika diasumsikan β dan π’ halus (smooth), maka persamaan (2.16) dapat disederhanakan dengan memperluas turunan-turunannya dan menggunakan (2.15)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 26
untuk menggantikan bentuk βπ‘ . Kemudian dengan menghilangkan beberapa bentuk, persamaan (2.16) menjadi 1 π’π‘ + [ π’2 + πβ]π₯ = 0. 2
(2.18)
Pada persamaan (2.15) dan (2.18) memiliki bentuk yang bergantung dengan konstanta π. Bentuk tersebut dapat disubtitusi dengan variabel π = πβ. Sehingga sistem persamaan air dangkal menjadi π’2 π’ [π ] + [ 2 + π ] = 0 π‘ π’π π₯
(2.19)
Sistem persamaan tersebut ekuivalen dengan sistem persamaan (2.17) untuk solusi yang halus. Namun ada catatan penting bahwa manipulasi yang dilakukan di atas bergantung pada kehalusan pada masalah. Kedua sistem dari hukum konservasi tidak ekuivalen dalam menghitung shock waves. Sistem yang tepat untuk digunakan adalah sistem persamaan (2.17) yang berasal dari persamaan integral asli. Untuk mempelajari shock waves digunakan persamaan (2.17) dan diambil π2 βπ’ π1 2 β 1 π(π₯, π‘) = [ ] = [π ] , π(π) = [ 2 1 2 ] = [(π2 ) ]. + π(π1 )2 βπ’ + πβ 2 βπ’ π1 2 2 Untuk solusi halus (smooth), persamaan tersebut dapat ditulis secara ekuivalen dalam bentuk quasilinear ππ‘ + π β² (π)ππ₯ = 0 Dengan matriks Jacobian π β² (π) adalah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 27
π
β² (π)
0 2 (π ) 1 =[ 2 + π(π1 )2 π1 2
1 π2 ] = [ 2 0 βπ’ + πβ 2 π1
1 ]. 2π’
(2.20)
Nilai eigen dari π β² (π) adalah π1 = π’ β βπβ, π2 = π’ + βπβ
(2.21)
Dengan vektor eigen π1 = [
1 1 ] , π2 = [ ]. π’ β βπβ π’ + βπβ
(2.22)
Nilai eigen dan vektor eigen adalah fungsi π untuk sistem nonlinear. Jika diinginkan gelombang dengan amplitudo yang sangat kecil, maka persamaan (2.17) dapat dilinearkan terlebih dahulu untuk mendapatkan sistem yang linear. Keterangan lengkap tentang karakteristik persamaan air dangkal dapat ditemukan dalam buku karangan LeVeque (2004).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB III METODE NUMERIS UNTUK PERSAMAAN GELOMBANG AIR DANGKAL
Dalam bab ini akan dijelaskan metode volume hingga, metode beda hingga grid kolokasi dan metode beda hingga grid selang-seling. Metode tersebut digunakan untuk menyelesaikan masalah bendungan air bobol, terkait dengan persamaan gelombang air dangkal.
A.
Solusi Eksak Persamaan Gelombang Air Dangkal Galat perhitungan pada penurunan numeris diperoleh dengan mengurangkan
solusi numeris dengan solusi eksak. Berikut adalah solusi eksak yang akan digunakan dalam perhitungan simulasi numeris pada MATLAB: β1 , β3 = β(π₯) = β2 = {
jika π₯ β€ βπ‘βπβ1
4 π₯ 2 (βπβ1 β ) , 9π 2π‘
jika β π‘βπβ1 < π₯ β€ π‘(π’2 β βπβ2 )
β0 8πΜ 2 (β1 + β 1) , 2 πβ0
jika π‘(π’2 β βπβ2 ) < π₯ < π‘πΜ jika π₯ β₯ π‘πΜ
β0 ,
dan
28
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 29
0, 2 π₯ π’3 = (βπβ1 + ) , 3 π‘ 2
π’(π₯) =
π’2 = πΜ β
πβ0 8πΜ 2 (β1 + ), πβ0 4πΜ
{
0,
jika π₯ β€ βπ‘βπβ1 jika β π‘βπβ1 < π₯ β€ π‘(π’2 β βπβ2 ) jika π‘(π’2 β βπβ2 ) < π₯ < π‘πΜ jika π₯ β₯ π‘πΜ
dengan β(π₯) adalah kedalaman air pada titik π₯ dan π’(π₯) adalah kecepatan air pada titik π₯. Notasi πΜ adalah konstanta kecepatan shock untuk π‘ > 0, yaitu 1 2
πΜ = 2βπβ1 +
πβ0 8πΜ 2 8πΜ 2 (1 + β1 + ) β [2πβ0 β1 + β 2πβ0 ] . πβ0 πβ0 4πΜ
Solusi eksak ini diambil dari Thesis karangan Mungkasi dengan judul Finite Volume Methods for the One Dimensional Shallow Water Equations (2008).
B.
Penurunan Persamaan Gelombang Air Dangkal Satu Dimensi Persamaan gelombang air dangkal dideskripsikan dari gerak fluida. Ada dua
jenis gerak fluida yang dideskripsikan, yaitu Langrangian dan Eulerian. Deskripsi Langrangian berpusat pada partikel individu, dan pergerakannya diamati sebagai fungsi dari waktu. Posisi, kecepatan dan percepatan setiap partikel dinotasikan dengan π (π₯0 , π‘), π’(π₯0 , π‘), dan π(π₯0 , π‘), kemudian kuantitasnya misalnya massa, momentum dan energi dapat dihitung. Pada kasus ini π₯0 merupakan titik awal atau penamaan partikel. Deskripsi Eulerian merupakan sebuah alternatif yang dapat diikuti setiap partikel fluida secara terpisah. Kemudian dilakukan pengamatan untuk kecepatan partikel yang melewati setiap titik identifikasi pada domain ruang yang diamati.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 30
Laju perubahan kecepatan ketika partikel melewati setiap titik dapat diamati dengan ππ’(π₯,π‘) ππ₯
, dan perubahan kecepatan terhadap waktu pada setiap titik tertentu dapat
diamati oleh
ππ’(π₯,π‘) ππ‘
. Dalam deskripsi Eulerian, sifat aliran (seperti kecepatan)
merupakan fungsi dari ruang dan waktu. Persamaan air dangkal ini terdiri dari dua persamaan. Persamaan pertama diturunkan dari hukum konservasi massa dan persamaan kedua diturunkan dari hukum konservasi momentum. Berikut ini akan diuraikan penurunan persamaan gelombang air dangkal atau biasa disebut Shallow Water Wave Equations. a. Hukum Kekekalan Massa Hukum kekekalan massa berarti massa tersebut tidak dapat diciptakan atau dimusnahkan. Hal ini berarti massa total pada keseluruhan sistem sama setiap saat. Terdapat beberapa asumsi yang terlibat dalam penurunan persamaan hukum kekekalan massa. Pertama, aliran air diasumsikan tenang artinya tidak ada gangguan dari luar dan kecepatannya diabaikan. Kedua, densitas π air pada setiap titik adalah konstan sehingga air mampat. Selain itu diasumsikan bahwa tempat air kedap atau tertutup rapat karena massa adalah kekal. Oleh karena itu, massa pada setiap volume kontrol (yaitu volume tertentu atau kolam air yang diamati) hanya dapat berubah ketika aliran melintasi batas-batas volume kontrol. Secara umum, aliran air dapat diilustrasikan pada Gambar 1.1. Notasi yang digunakan yaitu π₯ menyatakan variabel jarak sepanjang aliran air, π‘ menyatakan variabel waktu, π§(π₯) adalah topografi tanah, β(π₯, π‘) adalah kedalaman air di titik π₯ dan pada waktu π‘, π€(π₯, π‘) = π§(π₯) + β(π₯, π‘) adalah ketinggian air mutlak disebut
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 31
stage, dan π’(π₯, π‘) adalah kecepatan aliran air di titik π₯ dan pada waktu π‘. Massa total π pada air di setiap volume kontrol [π₯1 , π₯2 ] ditentukan oleh π₯2
(3.1)
π = β« πβ(π₯, π‘)ππ₯ π₯1
Pernyataan ini dapat diperoleh sebagai berikut. Kepadatan massa terhadap kedalaman πΜ
di sebarang titik (π₯, π‘) adalah πβ(π₯, π‘) yang dapat dihitung dengan mengintegralkan π dari π§(π₯) ke π€(π₯, π‘), yaitu πΜ
(π₯, π‘) = β«
π€(π₯,π‘)
π ππ¦
π§(π₯)
= πβ(π₯, π‘). Akibatnya, pengintegralan πβ(π₯, π‘) dari π₯1 ke π₯2 mengarah ke massa total di volume kontrol seperti yang dinyatakan dalam (3.1). Tingkatan aliran air yang melewati setiap titik (π₯, π‘) terhadap kedalaman air disebut flux massa π1 , yaitu π1 = πΜ
(π₯, π‘)π’(π₯, π‘)
(3.2)
= πβ(π₯, π‘)π’(π₯, π‘) Dengan menggunakan (3.2) dan asumsi bahwa massa dapat berubah hanya karena aliran yang melewati batas volume kontrol, dapat ditentukan bahwa π₯2
π₯2
β« πβ(π₯, π‘ + βπ‘)ππ₯ = β« πβ(π₯, π‘)ππ₯ π₯1
π₯1
π‘+βπ‘
+β« π‘
(3.3)
π‘+βπ‘
πβ(π₯1 , π )π’(π₯1 , π )ππ β β« π‘
πβ(π₯2 , π )π’(π₯2 , π )ππ
berlaku untuk setiap volume kontrol. Hal ini berarti bahwa massa pada setiap langkah π‘ + βπ‘ adalah sama dengan massa pada waktu π‘ ditambah pergerakan flux
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 32
yang masuk dan dikurangi dengan flux yang keluar dari volume kontrol selama periode βπ‘. Ilustrasi dari kontinuitas massa ditunjukkan pada Gambar 3.1.
π’ π’Μ
π₯1
π₯2
Gambar 3.1: Aliran air yang masuk dan keluar dari volume kontrol. Misalkan βπ₯ dan βπ‘ adalah kuantitas yang sangat kecil, yaitu βπ₯ = π₯2 β π₯1 . Dengan menggunakan perluasan Taylor, persamaan (3.3) dapat ditulis πβ(π₯, π‘ + βπ‘)βπ₯ = πβ(π₯, π‘)βπ₯ + πβ (π₯ β β πβ (π₯ +
βπ₯ βπ₯ , π‘) π’ (π₯ β , π‘) βπ‘ 2 2
βπ₯ βπ₯ , π‘) π’ (π₯ + , π‘) βπ‘ + π((βπ‘)3 ) + π((βπ₯)3 ). 2 2
Dengan mengabaikan bentuk π((βπ‘)3 ) dan π((βπ₯)3 ) persamaan terakhir di atas ekuivalen dengan πβ(π₯, π‘ + βπ‘) β πβ(π₯, π‘) =β βπ‘
(πβπ’)|
(π₯+
βπ₯ ,π‘) 2
β (πβπ’)|
(π₯β
βπ₯ ,π‘) 2
(3.4)
βπ₯
Persamaan (3.4) dibagi dengan π kemudian βπ₯ dan βπ‘ diaproksimasikan menuju nol sehingga persamaan (3.4) menjadi βπ‘ + (π’β)π₯ = 0. Persamaan (3.5) disebut persamaan hukum kekekalan massa.
(3.5)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 33
b. Hukum Kekekalan Momentum Hukum kedua Newton menyatakan bahwa perubahan momentum dari suatu sistem sama dengan total gaya yang bekerja. Berdasarkan hukum Newton tersebut, maka dapat ditulis πΉ=
ππ . ππ‘
Gaya πΉ didefinisikan sebagai laju perubahan momentum π terhadap waktu π‘. Momentum total dari perpindahan air pada volume kontrol dari π₯1 ke π₯2 pada waktu π‘ dinotasikan dengan π(π‘), yaitu
π(π‘) = β«
π₯2 (π‘)
πβ(π₯, π‘)π’(π₯, π‘)ππ₯
(3.6)
π₯1 (π‘)
Dengan mengasumsikan tekanan hidrostatik, gaya pada titik π₯1 dan π₯2 di atas kedalaman air pada waktu π‘ adalah πΉ1 (π‘) =
1 ππβ2 (π₯1 (π‘), π‘) 2
1 πΉ2 (π‘) = β ππβ2 (π₯2 (π‘), π‘) 2 Dengan π > 0 adalah konstanta yang menyatakan percepatan gravitasi. Lebih lanjut, gaya pada βπ§ seperti yang ditunjukkan pada Gambar 3.2, yaitu βπΉ3 = βππβ(π₯, π‘)βπ§ Atau dapat ditulis dengan βπΉ3 = βππβ(π₯, π‘)
βπ§ βπ₯ βπ₯
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 34
Dan karena gaya melalui dasar volume kontrol maka π₯2
πΉ3 = β« βππβ(π₯, π‘)π§π₯ ππ₯. π₯1
Oleh karena itu, gaya total di atas volume kontrol dinyatakan dengan πΉ yang merupakan jumlahan dari πΉ1 , πΉ2 , dan πΉ3 , yaitu πΉ=
π₯2 1 1 ππ§ ππβ2 (π₯1 (π‘), π‘) β ππβ2 (π₯2 (π‘), π‘) β β« ππβ(π₯, π‘) ππ₯ 2 2 ππ₯ π₯1
(3.7)
Turunan pertama dari π terhadap π‘ adalah ππ π π₯2 = β« πβ(π₯, π‘)π’(π₯, π‘)ππ₯ ππ‘ ππ‘ π₯1 Dengan menggunakan aturan Leibniz, turunan hasil integral pada persamaan terakhir di atas dapat ditulis π₯2 ππ π =β« πβ(π₯, π‘)π’(π₯, π‘)ππ₯ + πβ(π₯2 (π‘), π‘)π’2 (π₯2 (π‘), π‘) ππ‘ π₯1 ππ‘
(3.8)
β πβ(π₯1 (π‘), π‘)π’2 (π₯1 (π‘), π‘) Menurut hukum kedua Newton tentang gerak, hasil dari persamaan (3.8) sama dengan persamaan (3.7). Oleh karena itu, untuk periode-βπ‘ dapat ditulis
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 35
π‘+βπ‘
β« π‘
β«
π₯2 (π‘)
π₯1 (π‘)
(πβπ’)π‘ ππ₯ ππ‘ + β« π‘
π‘+βπ‘
ββ« π‘
π‘
π‘
(3.9)
π‘+βπ‘ 1 1 ππβ2 (π₯1 (π‘), π‘) ππ‘ β« ππβ2 (π₯2 (π‘), π‘) ππ‘ 2 2 π‘
π‘+βπ‘
ββ«
πβ(π₯2 (π‘), π‘)π’2 (π₯2 (π‘), π‘)ππ‘
πβ(π₯1 (π‘), π‘)π’2 (π₯1 (π‘), π‘)ππ‘
π‘+βπ‘
=β«
π‘+βπ‘
β«
π₯2 (π‘)
π₯1 (π‘)
ππβ(π₯, π‘)π§π₯ ππ₯ ππ‘
Dengan cara yang sama seperti (3.3), persamaan (3.9) dapat ditulis 1 (βπ’)π‘ + (βπ’2 + πβ2 ) = βπβπ§π₯ 2 π₯ Yang biasa disebut dengan persamaan kekekalan momentum. Dengan demikian, persamaan gelombang air dangkal seringkali disebut sistem Saint-Venant. Persamaan tersebut dapat ditulis sebagai dua persamaan simultan βπ‘ + (π’β)π₯ = 0 1 { (βπ’)π‘ + (βπ’2 + πβ2 ) = βπβπ§π₯ 2 π₯
(3.10)
di sini variabel x menyatakan arah aliran air.
C. Masalah Bendungan Bobol Diketahui persamaan gelombang air dangkal dengan topografi horizontal ππ‘ + π(π)π₯ = 0 Dengan kuantitas dan flux berturut-turut adalah
(3.11)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 36
π’β β 1 π = [ ] dan π(π) = [ 2 ] π’ β + πβ2 π’β 2 dengan π₯ adalah variabel ruang, π‘ adalah variabel waktu, β = β(π₯, π‘) adalah kedalaman air, π’ = π’(π₯, π‘) adalah kecepatan air dan π = 9,81 adalah percepatan gravitasi. Semua kuantitas diasumsikan dalam satuan SI. Akan disimulasikan solusi masalah bendungan bobol dengan metode volume hingga Lax-Friedrics, metode beda hingga grid kolokasi dan metode beda hingga grid selang-seling dengan menggunakan MATLAB (kondisi awal adalah "air yang tenang" seperti yang ditunjukkan pada Gambar 3.2). Pada kasus ini dianggap dinding bendungan ditarik ke atas secara instan.
Permukaan air
Bendungan air
β1 = 10
Permukaan air β0 = 4 π₯
Gambar 3.2: Bendungan air Dinding bendungan air berada di titik π₯ = 0 dan kedalaman awal air adalah β(π₯, 0) = {
dan kecepatan awal aliran air adalah
β1 , jika π₯ < 0 β0 , jika π₯ > 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 37
π’(π₯, 0) = 0, untuk semua π₯. Diambil domain ruang [β5,5]. Simulasi pada program dihentikan pada π‘ = 0.2. Pada kasus ini diasumsikan massa jenis konstan, tidak ada turbulen dan fluida ideal.
D. Metode Volume Hingga Lax-Friedrichs Pada bagian ini dibahas mengenai skema metode volume hingga, perhitungan flux secara numeris dalam metode volume hingga dan solusi numeris metode volume hingga Lax-Friedrichs. 1.1. Skema Metode Volume Hingga Persamaan diferensial parsial hukum kekekalan yang bersifat hiperbolik adalah ππ‘ + π(π)π₯ = 0 atau ditulis π ππ‘
π
π(π₯, π‘) + ππ₯ π(π(π₯, π‘)) = 0.
Misalkan domain pada ruang didiskretkan menjadi sebanyak berhingga kontrol volume (interval) atau sel sebagai berikut: π₯πβ3
π₯πβ1
2
π₯π+3
π₯π+1
2
2
2
π₯πβ1
π₯π
π₯π+1
dengan βπ₯ = π₯πβ1 β π₯π atau βπ₯ = π₯π+1 β π₯πβ1 . 2
2
Domain waktu didiskretkan menjadi π‘ π = π β βπ‘
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 38
dengan π = 0,1,2,3, β¦ Selanjutnya misalkan πππ adalah pendekatan dari rata-rata volume kuantitas π(π₯, π‘) dalam interval ruang ke- π di waktu π‘ π , yaitu πππ β
1 π₯π+12 β« π(π₯, π‘ π ) ππ₯. βπ₯ π₯ 1 πβ 2
π Misalkan pula πΉπ+ 1 adalah pendekatan dari rata-rata debit material (flux) π(π(π₯, π‘)) 2
di titik π₯π+1 dalam interval waktu [π‘ π , π‘ π+1 ], yaitu 2
π+1
πΉπ 1 π+ 2
1 π‘ β β« βπ‘ π‘ π
π (π (π₯π+1 , π‘)) ππ‘. 2
Dari hukum kekekalan, laju perubahan kuantitas (massa) dinyatakan oleh π π₯π+12 β« π(π₯, π‘ π ) ππ₯ = β [π (π (π₯π+1 , π‘)) β π (π (π₯πβ1 , π‘))]. ππ‘ π₯ 1 2 2 πβ
2
Dengan nilai-nilai pendekatan diperoleh
πππ+1 β πππ =β βπ‘
πΉπ 1 β πΉπ 1 π+
πβ
2
2
βπ₯
atau ditulis
πππ+1 = πππ β
βπ‘ π (πΉ 1 β πΉ π 1 ) πβ βπ₯ π+2 2
Persamaan tersebut merupakan skema volume hingga untuk ππ‘ + π(π)π₯ = 0. Skema metode volume hingga tersebut konsisten dengan skema metode beda hingga sebab dari skema metode volume hingga diperoleh
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 39
πππ+1 β πππ =β βπ‘
πΉπ 1 β πΉπ 1 π+
πβ
2
2
βπ₯
atau
πππ+1 β πππ + βπ‘
πΉπ 1 β πΉπ 1 π+
πβ
2
βπ₯
2
=0
yang merupakan suatu bentuk diskrit dari ππ‘ + π(π)π₯ = 0. 1.2. Perhitungan Flux Secara Numeris dalam Metode Volume Hingga Dipandang persamaan diferensial parsial berbentuk hukum kekekalan ππ‘ + π(π)π₯ = 0. π π Misalkan πππ β π(π₯π , π‘ π ) dan πΉπ+ 1 = π (π (π₯ 1 , π‘ )). π+ 2
2
Skema metode volume hingga untuk persamaan diferensial parsial di atas adalah
πππ+1 = πππ β
βπ‘ π (πΉ 1 β πΉ π 1 ). πβ βπ₯ π+2 2
Diketahui nilai πππ yaitu kuantitas numeris di semua titik π₯π dan pada waktu π‘ π . Oleh karena itu, flux di titik π₯π pada waktu π‘ π juga diketahui, yaitu πΉππ β π(π(π₯π , π‘ π )) β π(πππ ).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 40
Metode Stabil dan Tidak Stabil Metode numeris dikatakan stabil artinya bahwa galat yang muncul pada setiap iterasi tidak membesar terlalu cepat pada iterasi-iterasi berikutnya. Jika galat yang muncul pada suatu iterasi membesar menuju tak terhingga pada iterasi-iterasi berikutnya maka metodenya disebut tidak stabil. Teori kestabilan tidak dibahas lebih lanjut dalam skripsi ini. Teori kestabilan dapat dilihat dalam buku-buku referensi misalnya LeVeque (1992, 2004). Di setiap titik π₯π+1 , flux dapat dihitung menggunakan beberapa pendekatan. 2
1. Flux tak stabil πΉπ 1 β π+
2
1 π [π(πππ ) + π(ππ+1 )] 2
Sehingga skema metode volume hingga menjadi πππ+1 = πππ β
βπ‘ 1 1 1 1 π π ) β π(ππβ1 ) β π(πππ )) ( π(πππ ) + π(ππ+1 βπ₯ 2 2 2 2
πππ+1 = πππ β
βπ‘ π π ) β π(ππβ1 )) (π(ππ+1 2βπ₯
Namun, skema metode volume hingga ini tidak stabil. 2. Flux Lax-Friedrichs Skema Lax-Friedrichs memodifikasi skema metode volume hingga tak stabil di atas, yaitu πππ+1 β Sehingga diperoleh
1 π π (π + ππβ1 ) 2 π+1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 41
1 π βπ‘ π π π )β [π(ππ+1 ) β π(ππβ1 )] πππ+1 = (ππ+1 + ππβ1 2 2βπ₯ Skema Lax-Friedrichs ini stabil untuk βπ‘ yang cukup kecil. 3. Flux Upwind Metode upwind cocok untuk metode yang sudah diketahui arah rambatan gelombangnya. Contoh jika akan diselesaikan persamaan diferensial parsial ππ‘ + πππ₯ = 0 dengan π konstan positif (arah rambat gelombang ke kanan) πΉ π 1 β π(π(π₯π , π‘ π )) π+
2
= ππ(π₯π , π‘ π ) β ππππ π π dan πΉπβ 1 β πππβ1 . 2
Dengan demikian skema upwind adalah πππ+1 = πππ β = πππ β
βπ‘ π (πΉ 1 β πΉ π 1 ) πβ βπ₯ π+2 2
βπ‘ π (ππππ β πππβ1 ) βπ₯
= πππ β π
βπ‘ π π (π β ππβ1 ). βπ₯ π
Solusi Numeris Metode Volume Hingga Lax-Friedrichs Masalah persamaan gelombang air dangkal dapat diselesaikan dengan menggunakan metode volume hingga. Dipandang sistem persamaan air dangkal (3.11) yaitu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 42
βπ‘ + [π’β]π₯ = 0
(3.12)
1 [π’β]π‘ + [π’2 β + πβ2 ]π₯ = 0. 2
(3.13)
dan
Persamaan (3.12) mempunyai skema metode volume hingga sebagai berikut: πππ+1 = πππ β
βπ‘ π (πΉ 1 β πΉ π 1 ) πβ βπ₯ π+2 2
Dengan menggunakan flux Lax-Friedrichs diperoleh πΉ π 1 = π(πππ ) π+
2
dengan asumsi solusi dan kecepatannya positif. Jadi, jika diketahui persamaan (3.12) maka dalam metode volume hingga diperoleh π = β dan π(π) = π’β. π π Sekarang dari persamaan (3.12) dicari flux πΉπ+ 1 dan πΉ 1 . πβ 2
πΉπ 1 π+
2
πΉπ 1 πβ
2
=
1 βπ₯ π π [π(πππ ) + π(ππ+1 )] β (ππ+1 β πππ ) 2 2βπ‘
=
1 βπ₯ π [(π’β)ππ + (π’β)ππ+1 ] β (β β βππ ) 2 2βπ‘ π+1
=
1 π π βπ₯ π π π (π’π βπ + π’π+1 )β (β β βππ ). βπ+1 2 2βπ‘ π+1
=
1 βπ₯ π π [π(ππβ1 ) + π(πππ )] β (π π β ππβ1 ) 2 2βπ‘ π
=
1 βπ₯ π π [(π’β)ππβ1 + (π’β)ππ ] β (βπ β βπβ1 ) 2 2βπ‘
2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 43
=
1 π π βπ₯ π π (π’πβ1 βπβ1 + π’ππ βππ ) β (βπ β βπβ1 ). 2 2βπ‘
Persamaan (3.13) memiliki skema metode volume hingga sebagai berikut πππ+1 = πππ β
βπ‘ π (πΉ 1 β πΉ π 1 ) πβ βπ₯ π+2 2
Dengan menggunakan flux Lax-Friedrichs diperoleh πΉ π 1 = π(πππ ) π+
2
dengan asumsi solusi dan kecepatannya positif. Jadi, jika diketahui persamaan (3.13)
maka
dalam
metode
volume
hingga
diperoleh
π = π’β
dan
1
π(π) = π’2 β + 2 πβ2 . π π Sekarang dari persamaan (3.13) dicari flux πΉπ+ 1 dan πΉ 1 . πβ 2
πΉπ 1 π+
2
=
2
1 βπ₯ π [π(πππ ) + π(ππ+1 )] β (π π β πππ ) 2 2βπ‘ π+1
1 1 2 π 1 2 π βπ₯ 2 2 ((π’β)ππ+1 β (π’β)ππ ) = [(π’ β + πβ ) + (π’ β + πβ ) ] β 2 2 2 2βπ‘ π π+1 =
1 1 1 π [((π’2 )ππ βππ + π(β2 )ππ ) + ((π’2 )ππ+1 βπ+1 + π(β2 )ππ+1 )] 2 2 2 β
πΉπ 1 πβ
2
βπ₯ π π (π’ β β π’ππ βππ ). 2βπ‘ π+1 π+1
=
1 βπ₯ π π [π(ππβ1 ) + π(πππ )] β (πππ β ππβ1 ) 2 2βπ‘
=
π π 1 1 1 βπ₯ ((π’β)ππ β (π’β)ππβ1 ) [(π’2 β + πβ2 ) + (π’2 β + πβ2 ) ] β 2 2 2 2βπ‘ πβ1 π
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 44
=
1 1 1 π [((π’2 )ππβ1 βπβ1 + π(β2 )ππβ1 ) + ((π’2 )ππ βππ + π(β2 )ππ )] 2 2 2 β
βπ₯ π π π π (π’ β β π’πβ1 ). βπβ1 2βπ‘ π π
Hasil simulasi penyelesaian model gelombang air dangkal dengan metode volume hingga dengan menggunakan program MATLAB ditunjukkan dalam Gambar 3.3. Pada hasil simulasi persamaan air dangkal, program simulasi berhenti pada saat π‘ = 0.2. Kedalaman awal air pada program ini adalah β1 = 10, β0 = 4.
Gambar 3.3: Hasil simulasi penyelesaian model gelombang air dangkal dengan metode volume hingga Lax-Friedrichs.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 45
E. Metode Beda Hingga Grid Kolokasi Metode beda hingga digunakan dalam masalah komputasi numerik. Metode beda hingga dibagi menjadi tiga bagian, yaitu beda maju, beda mundur, dan beda pusat. Solusi Numeris Metode Beda Hingga Grid Kolokasi Diketahui nilai awal kedalaman air β0 = 4 dan β1 = 10, kecepatan air π’0 = π’1 = 0, dan percepatan gravitasi π = 9.81. Banyaknya langkah untuk ruang adalah π dengan π β β€+ dan index π untuk menunjukkan ruang yaitu 1 β€ π β€ π + 1. Langkah ukuran dilambangkan dengan β=
π₯π βπ₯π π
. Jadi, π₯π = π₯π + (π β 1)β, π₯1 = π₯π dan π₯π+1 = π₯π , dan banyaknya
interval kecil π adalah π β 1 simpul (node). Begitu juga untuk waktu, jumlah langkah untuk waktu adalah π dengan π β β€+ . Untuk π‘ π waktu, π β β€+ : π β 1 < π β€ π. Berikut akan dihitung persamaan beda yaitu beda mundur untuk waktu dan beda pusat untuk ruang.
Beda mundur untuk variabel waktu π Dipandang persamaan (3.12) dan (3.13). Kedua persamaan tersebut ditulis secara sistematis dan diasumsikan nilai β(π₯, π‘) dan π’(π₯, π‘) pada waktu π‘ πβ1 kemudian dicari nilai pada waktu π‘ π . π β(π₯π , π‘ π ) β β(π₯π , π‘ πβ1 ) β(π₯, π‘) β ππ‘ βπ‘ atau dapat ditulis
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 46
β
βππ β βππβ1 . βπ‘
dan π π π [β(π₯, π‘)π’(π₯, π‘)] = β(π₯, π‘) π’(π₯, π‘) + π’(π₯, π‘) β(π₯, π‘) ππ‘ ππ‘ ππ‘ atau dapat ditulis β β(π₯π , π‘ πβ1 )
π π π’(π₯π , π‘ πβ1 ) + π’(π₯π , π‘ πβ1 ) β(π₯π , π‘ πβ1 ) ππ‘ ππ‘
dengan melakukan diskritisasi lengkap diperoleh
β
π πβ1 π’π βπ
π πβ1 β π’ππβ1 πβ1 βπ β βπ + π’π . βπ‘ βπ‘
Beda pusat untuk variabel ruang π Dipandang persamaan (3.12) dan (3.13). Kedua persamaan tersebut ditulis secara sistematis dan diasumsikan nilai β(π₯, π‘) dan
π’(π₯, π‘) pada ruang π₯πβ1
kemudian dicari nilai pada waktu π₯π . π π π [π’(π₯, π‘)β(π₯, π‘)] = π’(π₯, π‘) β(π₯, π‘) + β(π₯, π‘) π’(π₯, π‘) ππ₯ ππ₯ ππ₯ β π’(π₯π , π‘ πβ1 )
β
dan
π π β(π₯π , π‘ π ) + β(π₯π , π‘ πβ1 ) π’(π₯π , π‘ π ) ππ₯ ππ₯
π πβ1 βπ+1 π’π
π π π β βπβ1 πβ1 π’π+1 β π’πβ1 + βπ 2βπ₯ 2βπ₯
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 47
π 1 π 1 π [β(π₯, π‘)π’2 (π₯, π‘)] + π β2 (π₯, π‘) [β(π₯, π‘)π’2 (π₯, π‘) + πβ2 (π₯, π‘)] = ππ₯ 2 ππ₯ 2 ππ₯ dengan π π π [β(π₯, π‘)π’2 (π₯, π‘)] = β(π₯, π‘) π’2 (π₯, π‘) + π’2 (π₯, π‘) β(π₯, π‘) ππ₯ ππ₯ ππ₯ = 2β(π₯, π‘)π’(π₯, π‘)
β 2β(π₯π , π‘ πβ1 )π’(π₯π , π‘ πβ1 )
β
π π π’(π₯, π‘) + π’2 (π₯, π‘) β(π₯, π‘) ππ₯ ππ₯ π π π’(π₯π , π‘ π ) + π’2 (π₯π , π‘ πβ1 ) β(π₯π , π‘ π ) ππ₯ ππ₯
π πβ1 πβ1 π’π+1 2βπ π’π
π π π β π’πβ1 πβ1 2 βπ+1 β π’πβ1 + (π’π ) 2βπ₯ 2βπ₯
dan untuk bentuk kedua 1 π 2 1 π π β (π₯, π‘) = 2 πβ(π₯, π‘) β(π₯, π‘) 2 ππ₯ 2 ππ₯ β πβππβ1
π π βπ+1 β βπβ1 . 2βπ₯
Jadi, persamaan beda dari (3.12) dan (3.13) menjadi βππ β βππβ1 βπ‘ π πβ1 π πβ1 πβ1 π’π β π’π πβ1 βπ β βπ β + π’ π [ π ] βπ‘ βπ‘ π πβ1 βπ+1 π’π
π π π β βπβ1 πβ1 π’π+1 β π’πβ1 + βπ 0 2βπ₯ 2βπ₯ + =[ ] π π π π π π βπ+1 β π’πβ1 βπ+1 β βπβ1 0 πβ1 πβ1 π’π+1 β π’πβ1 + (π’ππβ1 )2 + πβππβ1 [2βπ π’π ] 2βπ₯ 2βπ₯ 2βπ₯
atau dapat ditulis berdasarkan persamaan konservasi massa dalam bentuk diskrit
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 48
π π π π βππ β βππβ1 βπ+1 β βπβ1 π’π+1 β π’πβ1 + π’ππβ1 + βππβ1 =0 βπ‘ 2βπ₯ 2βπ₯
(3.16)
dan konservasi momentum dalam bentuk diskrit π πβ1 π’π βπ
π πβ1 π π β π’ππβ1 πβ1 βπ β βπ πβ1 πβ1 π’π+1 β π’πβ1 + π’π + 2βπ π’π βπ‘ βπ‘ 2βπ₯
+ (π’ππβ1 )2
(3.17)
π π π π βπ+1 β π’πβ1 βπ+1 β βπβ1 + πβππβ1 =0 2βπ₯ 2βπ₯
Persamaan (3.16) dikali dengan π’ππβ1 diperoleh π πβ1 βπ π’π
π π π π β βππβ1 πβ1 2 βπ+1 β βπβ1 πβ1 πβ1 π’π+1 β π’πβ1 + (π’π ) + π’π βπ =0 βπ‘ 2βπ₯ 2βπ₯
(3.18)
Persamaan (3.17) dikurang (3.18) diperoleh π πβ1 π’π βπ
π π π π β π’ππβ1 πβ1 πβ1 π’π+1 β π’πβ1 πβ1 βπ+1 β βπβ1 + βπ π’π + πβπ =0 βπ‘ 2βπ₯ 2βπ₯
Sehingga diperoleh dua persamaan
π’ππβ1
π π π π βππ β βππβ1 βπ+1 β βπβ1 π’π+1 β π’πβ1 + (π’ππβ1 )2 + π’ππβ1 βππβ1 βπ‘ 2βπ₯ 2βπ₯
(3.19)
=0 βππβ1
π π π π π’ππ β π’ππβ1 π’π+1 β π’πβ1 βπ+1 β βπβ1 + βππβ1 π’ππβ1 + πβππβ1 =0 βπ‘ 2βπ₯ 2βπ₯
Persamaan konservasi massa pada persamaan (3.19) dibagi dengan π’ππβ1 , diperoleh π π π π βππ β βππβ1 πβ1 βπ+1 β βπβ1 πβ1 π’π+1 β π’πβ1 + π’π + βπ =0 βπ‘ 2βπ₯ 2βπ₯
βππβ1
π π π π π’ππ β π’ππβ1 π’π+1 β π’πβ1 βπ+1 β βπβ1 + βππβ1 π’ππβ1 + πβππβ1 βπ‘ 2βπ₯ 2βπ₯
=0
(3.20)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 49
Persamaan (3.20) dikali dengan 2βπ₯βπ‘ diperoleh π π π π ) + βπ‘βππβ1 (π’π+1 ) 2βπ₯(βππ β βππβ1 ) + βπ‘π’ππβ1 (βπ+1 β βπβ1 β π’πβ1
(3.21)
=0 π π ) 2βπ₯βππβ1 (π’ππ β π’ππβ1 ) + βπ‘βππβ1 π’ππβ1 (π’π+1 β π’πβ1 π π ) = 0. + βπ‘πβππβ1 (βπ+1 β βπβ1
Dengan menggunakan sifat distributif pada perkalian, persamaan (3.21) menjadi π π π π 2βπ₯βππ β 2βπ₯βππβ1 + βπ‘π’ππβ1 βπ+1 β βπ‘π’ππβ1 βπβ1 + βπ‘βππβ1 π’π+1 β βπ‘βππβ1 π’πβ1
=0 π π 2βπ₯βππβ1 π’ππ β 2βπ₯βππβ1 π’ππβ1 + βπ‘βππβ1 π’ππβ1 π’π+1 β βπ‘βππβ1 π’ππβ1 π’πβ1 π π + βπ‘πβππβ1 βπ+1 β βπ‘πβππβ1 βπβ1 =0
Sehingga persamaan (3.16) menjadi π π π π 2βπ₯βππ + βπ‘π’ππβ1 βπ+1 β βπ‘π’ππβ1 βπβ1 + βπ‘βππβ1 π’π+1 β βπ‘βππβ1 π’πβ1
(3.22)
= 2βπ₯βππβ1 dan (3.17) menjadi π π π 2βπ₯βππβ1 π’ππ + βπ‘βππβ1 π’ππβ1 π’π+1 β βπ‘βππβ1 π’ππβ1 π’πβ1 + βπ‘πβππβ1 βπ+1
(3.23)
π β βπ‘πβππβ1 βπβ1 = 2βπ₯βππβ1 π’ππβ1
Diambil nilai π = 4 , kemudian dicari solusi awal untuk persamaan linear diskritisasi sebagai berikut: Untuk π = 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 50
2βπ₯β1π + βπ‘π’1πβ1 β2π β βπ‘π’1πβ1 β0π + βπ‘β1πβ1 π’2π β βπ‘β1πβ1 π’0π
(3.24)
= 2βπ₯β1πβ1 dan 2βπ₯β1πβ1 π’1π + βπ‘β1πβ1 π’1πβ1 π’2π β βπ‘β1πβ1 π’1πβ1 π’0π + βπ‘πβ1πβ1 β2π
(3.25)
β βπ‘πβ1πβ1 β0π = 2βπ₯β1πβ1 π’1πβ1 Untuk π = 2 2βπ₯β2π + βπ‘π’2πβ1 β3π β βπ‘π’2πβ1 β1π + βπ‘β2πβ1 π’3π β βπ‘β2πβ1 π’1π
(3.26)
= 2βπ₯β2πβ1 dan 2βπ₯β2πβ1 π’2π + βπ‘β2πβ1 π’2πβ1 π’3π β βπ‘β2πβ1 π’2πβ1 π’1π + βπ‘πβ2πβ1 β3π
(3.27)
β βπ‘πβ2πβ1 β1π = 2βπ₯β2πβ1 π’2πβ1 Untuk π = 3 2βπ₯β3π + βπ‘π’3πβ1 β4π β βπ‘π’3πβ1 β2π + βπ‘β3πβ1 π’4π β βπ‘β3πβ1 π’2π
(3.28)
= 2βπ₯β3πβ1 dan 2βπ₯β3πβ1 π’3π + βπ‘β3πβ1 π’3πβ1 π’4π β βπ‘β3πβ1 π’3πβ1 π’2π + βπ‘πβ3πβ1 β4π
(3.29)
β βπ‘πβ3πβ1 β2π = 2βπ₯β3πβ1 π’3πβ1 Variabel π’1π , π’2π , π’3π , β1π , β2π , β3π tidak diketahui dan enam persamaan berikut dapat disederhanakan menjadi: Untuk π = 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 51
2βπ₯β1π + βπ‘π’1πβ1 β2π + βπ‘β1πβ1 π’2π β βπ‘β1πβ1 π’0π = 2βπ₯β1πβ1 +
(3.30)
βπ‘π’1πβ1 β0π +ββπ‘β1πβ1 π’0π 2βπ₯β1πβ1 π’1π + βπ‘β1πβ1 π’1πβ1 π’2π + βπ‘πβ1πβ1 β2π
(3.31)
= 2βπ₯β1πβ1 π’1πβ1 + βπ‘πβ1πβ1 β0π + βπ‘β1πβ1 π’1πβ1 π’0π Untuk π = 2 2βπ₯β2π + βπ‘π’2πβ1 β3π β βπ‘π’2πβ1 β1π + βπ‘β2πβ1 π’3π β βπ‘β2πβ1 π’1π
(3.32)
= 2βπ₯β2πβ1 dan 2βπ₯β2πβ1 π’2π + βπ‘β2πβ1 π’2πβ1 π’3π β βπ‘β2πβ1 π’2πβ1 π’1π + βπ‘πβ2πβ1 β3π
(3.33)
β βπ‘πβ2πβ1 β1π = 2βπ₯β2πβ1 π’2πβ1 Untuk π = 3 2βπ₯β3π β βπ‘π’3πβ1 β2π β βπ‘β3πβ1 π’2π
(3.34)
= 2βπ₯β3πβ1 β βπ‘π’3πβ1 β4π β βπ‘β3πβ1 π’4π dan 2βπ₯β3πβ1 π’3π β βπ‘β3πβ1 π’3πβ1 π’2π β βπ‘πβ3πβ1 β2π
(3.35)
= 2βπ₯β3πβ1 π’3πβ1 β βπ‘πβ3πβ1 β4π β βπ‘β3πβ1 π’3πβ1 π’4π Jika diketahui syarat batas kecepatan awal π’(π₯π , π‘) = π’(π₯π , π‘) = 0, dan ketinggian awal β(π₯π , π‘) = 1, β(π₯π , π‘) = 1 maka diperoleh matriks 0
2βπ₯βπβ1 1 ββπ‘βπβ1 2 πβ1 πβ1 ββπ‘β2 π’2 0 [
0
βπ‘βπβ1 1 πβ1 βπ‘βπβ1 1 π’1 0
2βπ₯βπβ1 2 ββπ‘π’πβ1 3 πβ1 ββπ‘βπβ1 3 π’3
0
2βπ₯
0
0
βπ‘βπβ1 2 πβ1 πβ1 βπ‘β2 π’2
ββπ‘π’πβ1 2 ββπ‘πβπβ1 2
0
0
2βπ₯βπβ1 3
0
βπ‘π’πβ1 1 βπ‘πβπβ1 1
0
2βπ₯
βπ‘π’πβ1 2 βπ‘πβπβ1 2
0
ββπ‘βπβ1 3 ββπ‘πβπβ1 3
0
2βπ₯ 0
]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 52
2βπ₯β1πβ1 + βπ‘π’1πβ1 π’1π 2βπ₯β1πβ1 π’1πβ1 + βπ‘πβ1πβ1 π’2π π’3π 2βπ₯β2πβ1 = β1π 2βπ₯β2πβ1 π’2πβ1 π β2 2βπ₯β3πβ1 β βπ‘π’3πβ1 π [β3 ] [2βπ₯β3πβ1 π’3πβ1 β βπ‘πβ3πβ1 ] Misalkan π΄ 0
=
2βπ₯βπβ1 1 ββπ‘βπβ1 2 πβ1 πβ1 ββπ‘β2 π’2 0 (
0
βπ‘βπβ1 1 πβ1 πβ1 βπ‘β1 π’1 0
2βπ₯βπβ1 2 ββπ‘π’πβ1 3 πβ1 πβ1 ββπ‘β3 π’3
0
2βπ₯
0
0
βπ‘βπβ1 2 πβ1 πβ1 βπ‘β2 π’2
ββπ‘π’πβ1 2 ββπ‘πβπβ1 2
0
0
2βπ₯βπβ1 3
0
βπ‘π’πβ1 1 βπ‘πβπβ1 1
0
2βπ₯
βπ‘π’πβ1 2 βπ‘πβπβ1 2
0
ββπ‘βπβ1 3 ββπ‘πβπβ1 3
0
2βπ₯ 0
π’1π π’2π π’3π π= , β1π β2π (β3π ) 2βπ₯β1πβ1 + βπ‘π’1πβ1 2βπ₯β1πβ1 π’1πβ1 + βπ‘πβ1πβ1 2βπ₯β2πβ1 π= , 2βπ₯β2πβ1 π’2πβ1 2βπ₯β3πβ1 β βπ‘π’3πβ1 (2βπ₯β3πβ1 π’3πβ1 β βπ‘πβ3πβ1 ) Sekarang enam persamaan tersebut memiliki bentuk linear π΄π = π yang dapat diselesaikan. Dalam program MATLAB digunakan syarat batas untuk kedalaman awal air β1 = 10, β0 = 4. Hasil simulasi penyelesaian model gelombang air dangkal dengan
)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 53
metode beda hingga grid kolokasi dengan menggunakan program MATLAB ditunjukkan dalam Gambar 3.4. Hasil simulasi program berhenti pada waktu π‘ = 0.2.
Gambar 3.4: Hasil simulasi penyelesaian model gelombang air dangkal dengan metode beda hingga grid kolokasi.
F. Metode Beda Hingga Grid Selang-Seling Sekarang persamaan air dangkal akan diselesaikan dengan metode beda hingga grid selang-seling kemudian solusi numerisnya dibandingkan dengan metode volume hingga dan metode beda hingga grid kolokasi yang sudah dilakukan di atas. Dipandang persamaan air dangkal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 54
βπ’ β [ ] + [ 2 1 2 ] = 0. βπ’ + πβ βπ’ π‘ 2 π₯ Perhitungan domain 0 < π₯ < π, π‘ > 0 dengan grid selang-seling pada domain ruang π₯1 = 0, π₯1 , β¦ , π₯πβ1 , π₯π , π₯π+1 , β¦ , π₯π 2
2
1 π₯ +2
2
= π. Metode beda hingga selang-
seling adalah pendekatan dua persamaan (3.12) dan (3.13) pada grid berbeda. Pada rumus selang-seling, nilai variabel β dihitung pada grid bilangan bulat π₯π , π = 1, β¦ , ππ₯ dan π’ dihitung pada grid pecahan π₯π+1 , π = 1, β¦ , ππ₯ . Selanjutnya, hukum 2
kekekalan massa pada persamaan (3.12) dihitung dengan pendekatan pada grid [π₯πβ1 , π₯π+1 ] dan hukum kekekalan momentum pada persamaan (3.13) dihitung 2
2
dengan pendekatan pada grid [π₯π , π₯π+1 ]. Solusi Numeris Metode Beda Hingga Grid Selang-Seling Pendekatan konsisten terhadap ruang dari (3.12) dan (3.13) adalah ββπ =β βπ‘ β(βπ+1 π’π+1 ) 2
2
βπ‘
ππ+1 β ππβ1 2
(3.36)
2
βπ₯
2 1 βπ+1 β βπ2 ππ+1 π’Μπ+1 β ππ π’Μπ =β π β 2 βπ₯ βπ₯
(3.37)
dengan ππ+1 = βΜπ+1 π’π+1 , βπ+1 = 2
2
2
2
1 1 (βπ + βπ+1 ), ππ = (π 1 + π 1 ) πβ 2 2 π+2 2
(3.38)
Dengan menggunakan metode upwind orde satu, pendekatan nilai dari βπ ,
βΜπ+1 = { βπ+1 , 2 dan
jika π’π+1 β₯ 0 2
jika π’π+1 < 0 2
(3.39)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 55
π’Μπ = {
π’πβ1 ,
jika ππ β₯ 0
π’π+1 ,
jika ππ < 0
2 2
(3.40)
Dalam melakukan perhitungan, variabel β dihitung pada grid βπ , π = 1,2, β¦ , ππ₯ dan variabel π’ dihitung pada grid π’π+1 , π = 0,1, β¦ , ππ₯ . Dengan menerapkan beda maju 2
untuk persamaan (3.36) dan beda mundur untuk persamaan (3.37), persamaan (3.36) dan (3.37) menjadi
βππ+1
β βπ‘
π+1 π π βπ+1 1 π’ 1 β β 1π’ π+
2
π+
π+
2
βπ‘
2
π+
1 2
βππ
=β
ππ+1 β ππβ1 2
(3.41)
2
βπ₯
2 1 βπ+1 β βπ2 ππ+1 π’Μπ+1 β ππ π’Μπ =β π β 2 βπ₯ βπ₯
(3.42)
Persamaan (3.41) dan (3.42) dihitung dengan menggunakan program MATLAB. Hasil simulasi gelombang air dangkal dengan metode beda hingga grid selangseling ditunjukkan dalam Gambar 3.5. Pada simulasi penyelesaian persamaan gelombang air dangkal berikut, program berhenti pada saat π‘ = 0.2 dengan kedalaman awal air adalah β1 = 10 dan β0 = 4.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 56
Gambar 3.5: Hasil simulasi model gelombang air dangkal dengan metode beda hingga grid selang-seling.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB IV PERBANDINGAN BEBERAPA METODE NUMERIS DALAM PENYELESAIAN MODEL GELOMBANG AIR DANGKAL
Pada bagian ini akan dibahas hasil-hasil simulasi numeris untuk tiga metode, yaitu metode volume hingga, metode beda hingga grid kolokasi dan metode beda hingga grid selang-seling. Simulasi numeris untuk masing-masing metode dilakukan menggunakan program MATLAB dengan konsidi awal ditunjukkan pada Gambar 4.1.
Permukaan air
Bendungan air
β1 = 10
Permukaan air β0 = 4 π₯
Gambar 4.1: Bendungan air dengan kondisi awal adalah air yang tenang. Kedalaman air di sebelah kiri bendungan adalah β1 = 10 dan di sebelah kanan bendungan adalah β0 = 4.
57
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 58
Galat solusi perhitungan π’ dan β dihitung dengan menggunakan rumus π
1 πΊππππ‘ π’ = β |π’(π) β π’_ππ₯(π)| π π=1
dan π
1 πΊππππ‘ β = β |β(π) β β_ππ₯(π)|, π π=1
di mana π’ dan β adalah nilai numeris di titik π₯π , π’_ππ₯ dan β_ππ₯ adalah nilai eksak di titik π₯π , dan π adalah banyaknya sel yang digunakan untuk mendiskretkan domain ruang π₯.
A.
Metode Volume Hingga Lax-Friedrichs Pada Bab III dibahas mengenai solusi numeris dari persamaan gelombang air
dangkal dengan metode volume hingga. Dalam Bab IV ini dibahas mengenai hasil simulasi solusi numeris persamaan gelombang air dangkal dengan menggunakan MATLAB. Simulasi ini dilakukan untuk beberapa nilai π, yaitu 100, 200, 400, 800, 1600, dan 3200. Berikut merupakan hasil simulasi numeris untuk persamaan gelombang air dangkal menggunakan metode volume hingga Lax-Friedrichs. Grafik simulasi numeris ditunjukkan pada Gambar 4.2.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 59
Gambar 4.2: Grafik simulasi numeris dengan metode volume hingga LaxFriedrichs untuk π = 1000, π‘ = 0.2 detik, βπ₯ = 0.01, dan βπ‘ = 0.05 βπ₯. Gambar 4.2 memberikan ilustrasi geometris mengenai simulasi yang telah dilakukan. Terlihat pada gambar bahwa selisih solusi numeris dan eksaknya kecil. Dengan kata lain, solusi numerisnya hampir mendekati solusi eksak. Simulasi ini menggunakan nilai π = 1000, βπ₯ = 0.01, dan βπ‘ = 0.05 βπ₯. Simulasi berhenti pada saat π‘ = 0.2. Tabel 4.1. Hasil simulasi numeris menggunakan metode volume hingga LaxFriedrichs pada π‘ = 0.2
N 100 200 400 800 1600
Galat pada Galat u 0.2650 0.1684 0.1028 0.0601 0.0344
Galat h 0.2112 0.1362 0.0842 0.0498 0.0287
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 60
3200 Rata-rata galat
0.0198
0.0166
0.1084
0.0877
Dari Tabel 4.1 tampak bahwa semakin kecil π yang diambil, semakin besar galat (error) yang dihasilkan. Ketika diambil nilai π yang cukup besar maka galat simulasi akan semakin kecil karena banyaknya partisi pada ruang di sumbu π₯ yang semakin banyak dan mendekati solusi eksaknya. Artinya ketika π besar solusi yang diperoleh akan lebih akurat. Dapat dilihat juga pada grafik bahwa solusi eksak dan numerisnya berhimpit. Namun pada ujung-ujung grafik, kedua grafik terlihat tidak berhimpit. Artinya masih ada galat perhitungan pada penggunaan metode ini. Ilustrasi galat secara geometris ditunjukkan pada Gambar 4.3.
Gambar 4.3: Grafik galat kecepatan aliran air (π’) dan kedalaman air (β) menggunakan metode volume hingga Lax-Friedrichs
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 61
Gambar 4.4: Grafik log galat kecepatan aliran air (π’) dan log galat kedalaman aliran air (β) menggunakan metode volume hingga Lax-Friedrichs Gambar 4.4 menunjukkan nilai log galat π’ πΏ1, β πΏ1, π’ πΏ2, β πΏ2, π’ πΏβ dan β πΏβ . Rumus galat πΏβ tidak tepat digunakan sebagai alat untuk mengukur keakuratan metode volume hingga Lax-Friedrichs untuk persamaan gelombang air dangkal. Rumus galat πΏβ tidak dapat menunjukkan bahwa semakin banyak titik, komputasi errornya akan semakin kecil. Sedangkan rumus galat πΏ1 dan πΏ2 merupakan rumus yang tepat untuk digunakan sebagai alat untuk mengukur keakuratan metode ini untuk persamaan gelombang air dangkal karena πΏ1 dan πΏ2 dapat menunjukkan bahwa semakin banyak titik, komputasi errornya akan semakin kecil.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 62
Kelebihan dari metode ini adalah skema numeriknya sederhana dan perhitungan komputasinya juga sangat mudah. Kekurangan metode ini adalah ketika diambil βπ‘ cukup besar metode volume hingga Lax-Friedrichs tidak stabil.
B.
Metode Beda Hingga Grid Kolokasi Selanjutnya akan dipaparkan hasil simulasi numeris penyelesaian gelombang
air dangkal menggunakan metode beda hingga grid koloksi. Pada Bab III telah dibahas solusi numeris untuk model gelombang air dangkal dengan metode beda hingga grid kolokasi. Solusi numeris yang diperoleh disimulasikan dengan menggunakan MATLAB. Kondisi awal yang digunakan adalah sama dengan pada simulasi sebelumnya. Grafik simulasi numeris ditunjukkan pada Gambar 4.5. Grafik yang dihasilkan tidak mulus karena banyak getaran semu pada grafik. Simulasi ini menggunakan nilai π = 1000, βπ₯ = 0.01, dan βπ‘ = 0.05 βπ₯. Simulasi berhenti pada saat π‘ = 0.2.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 63
Gambar 4.5: Grafik simulasi numeris dengan metode beda hingga grid kolokasi untuk π = 1000, π‘ = 0.2 detik, βπ₯ = 0.01, dan βπ‘ = 0.01.
Tampak pada gambar bahwa selisih solusi numeris dengan solusi eksak sangat besar. Hal ini mengakibatkan solusi numeris yang dihasilkan tidak akurat. Berikut merupakan hasil simulasi numeris untuk persamaan gelombang air dangkal menggunakan metode beda hingga grid kolokasi. Tabel 4.2. Hasil simulasi numeris metode beda hingga grid kolokasi pada π‘ = 0.2
π 100 200 400 800 1600 3200
Galat pada Galat π’ 1.2075 1.2168 1.2122 1.2099 1.2110 1.2105
Galat β 0.9629 0.9751 0.9746 0.9744 0.9759 0.9758
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 64
Rata-rata galat
1.2113
0.9731
Dari Tabel 4.2 terlihat bahwa tidak ada perbedaan galat yang signifikan. Misalnya pada π = 200 dan π = 1600, di mana galat yang dihasilkan hampir sama. Nilai galat π’ cukup besar yaitu berkisar 1.2 sedangkan nilai galat β berkisar 0.9, hal ini tidak sesuai dengan yang diharapkan. Ilustrasi galat secara geometris ditunjukkan pada gambar 4.6.
Gambar 4.6: Grafik galat kecepatan aliran air (π’) dan kedalaman air (β) menggunakan metode beda hingga grid kolokasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 65
Gambar 4.7: Grafik galat kecepatan aliran air (π’) dan kedalaman air (β) menggunakan metode beda hingga gris kolokasi Gambar 4.7 menunjukkan nilai log galat π’ πΏ1, β πΏ1, π’ πΏ2, β πΏ2, π’ πΏβ dan β πΏβ . Rumus galat πΏ1, πΏ2, dan πΏβ tidak tepat digunakan sebagai alat untuk mengukur keakuratan metode beda hingga grid kolokasi untuk persamaan gelombang air dangkal. Rumus galat πΏ1, πΏ2, dan πΏβ tidak dapat menunjukkan bahwa semakin banyak titik, komputasi errornya akan semakin kecil. Metode ini memiliki kelebihan yaitu ketika diambil βπ‘ cukup besar metode ini tetap stabil. Adapun kekurangan dari metode ini yaitu memiliki skema perhitungan numerik yang cukup rumit jika dibandingkan dengan skema eksplisit metode volume hingga Lax-Friedrichs. Metode ini memiliki sifat stabil tanpa syarat. Selain itu, kekurangan pada model ini adalah memiliki galat yang besar pada perhitungan numeriknya karena hanya dipandang satu grid saja untuk menghitung variabel yang tidak diketahui. Dengan demikian metode beda hingga grid kolokasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 66
bukan pilihan yang tepat untuk menyelesaikan persamaan gelombang air dangkal terkait dengan masalah bendungan bobol.
C.
Metode Beda Hingga Grid Selang-Seling Pada bagian sebelumnya telah dilihat hasil simulasi menggunakan metode
volume hingga dan metode beda hingga grid kolokasi. Pada metode beda hingga grid kolokasi masih terdapat getaran semu dalam hasil grafik yang dapat dilihat pada Gambar 4.8. Sehingga diperlukan model grid selang-seling untuk memperbaiki model grid kolokasi agar tidak ada getaran semu dalam hasil simulasi persamaan gelombang air dangkal. Hasil simulasi numeris menggunakan model grid selang-seling ditunjukkan pada Gambar 4.8.
Gambar 4.8: Grafik simulasi numeris dengan metode beda hingga grid selangseling untuk π = 1000, π‘ = 0.2 detik, βπ₯ = 0.01, dan βπ‘ = 0.05 βπ₯.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 67
Tampak pada Gambar 4.8 bahwa grafik kedalaman dan kecepatan aliran air terlihat lebih halus dari simulasi-simulasi sebelumnya. Grafik solusi numeris terlihat berhimpit dengan grafik solusi eksak. Namun pada ujung kiri grafik kecepatan aliran air tampak tidak berhimpit. Artinya, galat yang dihasilkan sangat kecil. Dibandingkan dengan kedua metode yang sudah dibahas diatas, metode beda hingga grid selang-seling memberikan hasil yang lebih akurat. Secara grafis terlihat bahwa solusi numeris tampak berhimpit dengan solusi eksaknya. Dengan kata lain, solusi numeris sudah sangat dekat dengan solusi eksaknya. Sekarang akan dilihat hasil simulasi numeris menggunakan metode beda hingga grid selang-seling. Tabel 4.3. Hasil simulasi numeris menggunakan metode beda hingga grid selangseling pada π‘ = 0.2 π 100 200 400 800 1600 3200 Rata-rata galat
Galat pada Galat π’ 0.1804 0.0897 0.0415 0.0285 0.0144 0.0089
Galat β 0.1239 0.0621 0.0416 0.0209 0.0140 0.0067
0.0605
0.0448
Tabel 4.3 menunjukkan bahwa semakin besar nilai π yang diambil, semakin kecil galat yang dihasilkan. Galat yang dihasilkan dengan metode beda hingga selang-seling yaitu setengah kali dari galat dengan nilai π yang diambil
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 68
sebelumnya. Misalnya pada π = 100 diperoleh galat π’ = 0.1804 dan galat β = 0.1239. Kemudian diuji untuk nilai π = 200 diperoleh galat π’ = 0.0897 dan galat β = 0.0621. Artinya, galat pada π = 200 adalah setengah kalinya galat pada π = 100. Ilustrasi galat secara geometris ditunjukkan pada Gambar 4.9.
Gambar 4.9: Grafik galat kecepatan aliran air (π’) dan kedalaman air (β) menggunakan metode beda hingga grid selang-seling Galat yang dihasilkan pada metode beda hingga grid selang-seling lebih kecil jika dibandingkan dengan metode beda volume hingga dan metode beda hingga kolokasi. Metode beda hingga grid kolokasi memiliki galat yang lebih besar dari kedua metode yang lain.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 69
Gambar 4.10: Grafik galat kecepatan aliran air (π’) dan kedalaman air (β) menggunakan beda hingga grid selang-seling Gambar 4.10 menunjukkan nilai log galat π’ πΏ1, β πΏ1, π’ πΏ2, β πΏ2, π’ πΏβ dan β πΏβ . Rumus galat πΏβ tidak tepat digunakan sebagai alat untuk mengukur keakuratan metode beda hingga grid selang-seling untuk persamaan gelombang air dangkal. Rumus galat πΏβ tidak dapat menunjukkan bahwa semakin banyak titik, komputasi errornya akan semakin kecil. Sedangkan rumus galat πΏ1 dan πΏ2 merupakan rumus yang tepat untuk digunakan sebagai alat untuk mengukur keakuratan metode ini untuk persamaan gelombang air dangkal karena πΏ1 dan πΏ2 dapat menunjukkan bahwa semakin banyak titik, komputasi errornya akan semakin kecil. Model grid selang-seling memiliki kelebihan dan kekurangan. Kelebihan dari model ini adalah perhitungan numeriknya lebih akurat dibandingkan dengan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 70
metode beda hingga grid kolokasi dan metode volume hingga Lax-Friedrichs. Kekurangan metode ini yaitu skema untuk menyelesaikan persamaan lebih rumit dibandingkan dengan skema grid kolokasi karena dalam perhitungan dipandang dua grid untuk menghitung setiap variabel yang berbeda. Jadi, setiap variabel yang tidak diketahui dihitung pada grid yang berbeda. Sehingga menghasilkan galat yang kecil. Dengan demikian, untuk menyelesaikan persamaan gelombang air dangkal secara numeris terkait dengan masalah bendungan bobol, penulis menyarankan penggunaan skema beda hingga grid selang-seling. Hasil-hasil pada bab ini telah diseminarkan pada The 2016 International Conference on Information Systems and Applied Mathematics (Mungkasi dan Ilga Purnama Sari, 2016).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB V PENUTUP Pada bab ini diberikan kesimpulan atas pembahasan bab-bab sebelumnya serta saran untuk penelitian selanjutnya. A.
Kesimpulan Telah dilihat bahwa untuk menyelesaikan model gelombang air dangkal
secara numeris dapat diselesaikan dengan berbagai metode numeris. Pada bab-bab sebelumnya telah diuji beberapa metode yaitu metode volume hingga, metode beda hingga grid kolokasi dan metode beda hingga grid selang-seling. Berdasarkan hasil simulasi numeris didapatkan penyelesaian yang terbaik dan sesuai yang diharapkan. Nilai rata-rata galat dari ketiga metode yang sudah dibahas pada Bab IV adalah sebagai berikut Metode Numeris Rata-rata galat π’ Metode volume hingga 0.1084 Lax-Friedrichs
Rata-rata galat β 0.0877
Metode beda hingga grid kolokasi
1.2113
0.9731
0.0605
0.0448
Metode beda hingga grid selang-seling
Dari ketiga metode tersebut dapat dilihat bahwa metode beda hingga grid selangseling memiliki rata-rata galat π’ dan β yang paling kecil dibandingkan dengan kedua metode lainnya. Metode beda hingga grid selang-seling adalah metode yang terbaik berdasarkan hasil simulasi numeris yang dilakukan, apabila dibandingkan dengan metode volume hingga dan metode beda hingga grid kolokasi. 71
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 72
Dengan demikian, untuk menyelesaikan model gelombang air dangkal terkait dengan masalah bendungan bobol, penulis menyarankan untuk menggunakan metode beda hingga grid selang-seling.
B.
Saran Penulis sadar bahwa dalam penulisan skripsi ini masih banyak kekurangan.
Oleh sebab itu, penulis mengharapkan kelak akan ada yang melanjutkan penelitian ini. Tulisan ini hanya membahas model gelombang air dangkal satu dimensi. Penulis berharap kelak akan ada yang melanjutkan penelitian ini di ruang dimensi yang lebih tinggi dan jika dimungkinkan menggunakan model yang lain yang mungkin memberikan hasil yang lebih baik lagi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR PUSTAKA
Anton, H. (2010). Elementary Linear Algebra: Applications version. Hoboken: John Wiley & Sons. Crowhurst, P. (2013). Numerical Solutions of One-Dimensional Shallow Water Equations. Melbourne: Australian Mathematical Sciences Institute. Crowhurst P. dan Li Z. Proceedings of the 2013 UKSim 15th International Conference on Computer Modelling and Simulation (IEEE, 2013), pp. 55-60. David. B dan George. C. (1995). Basic Partial Differential Equations, Honolulu: Hawaii. Doyen, D. dan Gunawan, P. H. (2014). An Explicit Staggered Finite Volume Scheme for the Shallow Water Equations. Finite Volumes for Complex Apllications VII-Methods and Theoritical Aspects, 227-235. LeVeque, R. J. (1992). Numerical Methods for Conservation Laws, Basel: Birkhauser. LeVeque, R. J. (2004). Finite-Volume Method for Hyperbolic Problems. Cambridge: Cambridge University Press. Mungkasi, S dan Ilga Purnama Sari. (2016). Numerical Solution to the Shallow Water Equations Using Explicit and Implicit Schemes. International Conference on Information System and Applied Mathematics. Submitted to AIP Conference Proceedings. Mungkasi, S. (2008). Finite Volume Methods for the One-Dimensional Shallow Water Equations. Masters Thesis, Canberra: Australian National University. Munir, R. (2008). Metode Numerik, Bandung: Informatika Bandung. Stelling, G. S. dan Duinmeijer, S. P. A. (2003). A Staggered Conservative Scheme for every Froude Number in Rapidly Varied Shallow Water Flows. International Journal for Numerical Methods in Fluids, 43, 1329-1354. Thomas, G. B. (2010). Thomasβ Calculus Early Transcendentals. Boston: Pearson Education.
73
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Lampiran Berikut ini adalah code program MATLAB untuk masing-masing metode yang digunakan dalam simulasi numeris untuk persamaan gelombang air dangkal satu dimensi. 1. Metode Volume Hingga Lax-Friedrichs a. Code untuk metode volume hingga Lax-Friedrichs close all; clear all; clc; N = 1000; %banyaknya langkah pada ruang x1 L = 5; dx = 2*L/N; %ukuran langkah pada ruang x x1 = -L:dx:L; %membuat langkah pada ruang dengan dx adalah jarak dari titik a ke b x = x1(1:N)+dx/2; %membuat langkah pada ruang x1 sehingga jarak langkah semakin kecil dt = 0.05*dx; %ukuran langkah waktu t % initial conditions u = zeros(N,1); %membuat ruang untuk kecepatan aliran air u h = zeros(N,1); %membuat ruang untuk kedalaman aliran air h uh = zeros(N,1); %membuat ruang untuk debit air Nm = N/2+1; %kedalaman air di atas kedalaman air disebelah kanan dinding hL=10; hR=4; h(1:Nm) = h(1:Nm)+ hL; %membuat ruang untuk kedalaman air di sebelah kiri dinding h(Nm+1:N) = h(Nm+1:N)+ hR; %membuat ruang untuk kedalaman air di sebelah kanan dinding h1 = h; u1 = u; uh1 = uh; g = 9.81;
%percepatan gravitasi bumi
tStop = 0.2; %waktu akhir iterasi t = 0; %waktu awal j=0;
74
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 75
uL=0; uR=0; xmin=-L; xmax=L; delta=(L-(-L))/N; %for shock wave exact computation c_L = sqrt(g*hL); % wave speed at left side c_R = sqrt(g*hR); % wave speed at right side Smin=-101.0; % initial bracketing for bisection method for shock speed S Smax=0.0; % terminal bracketing for bisection method for shock speed S for i=1:100 S=(Smin+Smax)/2.0; % bisecting u2=S-c_R*c_R/4.0/S*(1.0+sqrt(1.0+8.0*S*S/c_R/c_R)); % implicit function for velocity behind shock c2=c_R*sqrt(0.5*(sqrt(1.0+8.0*S*S/c_R/c_R)-1.0)); % implicit function for wave speed behind shock func = -2.0*c_L -u2 +2.0*c2; % characteristic relation between velocity and wave speed if (func > 0.0) % bisection procedure Smin=S; else % bisection procedure Smax=S; end end
while t < tStop j=j+1; for i=2:N-1 F2_right=0.5*(u(i+1)^2*h(i+1) + 0.5*g*h(i+1)^2 + u(i)^2*h(i)+0.5*g*h(i)^2) - dx/(2*dt)*(u(i+1)*h(i+1)-u(i)*h(i)); %menghitung flux 2 kanan F2_left=0.5*(u(i)^2*h(i) + 0.5*g*h(i)^2 + u(i-1)^2*h(i1)+0.5*g*h(i-1)^2) - dx/(2*dt)*(u(i)*h(i)-u(i-1)*h(i-1)); %menghitung flux 2 kiri F1_right=0.5*(u(i+1) *h(i+1) + u(i)*h(i)) dx/(2*dt)*(h(i+1)-h(i)); %menghitung flux 1 kanan F1_left=0.5*(u(i) *h(i) + u(i-1)*h(i-1)) dx/(2*dt)*(h(i)-h(i-1)); %menghitung flux 1 kiri h1(i)=h(i)-dt*(F1_right- F1_left)/dx; %menghitung kedalaman aliran air uh1(i)=uh(i)-dt*(F2_right- F2_left)/dx; %menghitung debit air yang mengalir end t = t + dt;
%update waktu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 76
h = h1; %memperbarui dan memanggil hasil akhir perhitungan kedalaman aliran air uh = uh1; %memperbarui dan memanggil hasil akhir debit air yang mengalir u = uh1./h1; %memperbarui dan memanggil hasil akhir perhitungan kecepatan aliran air %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Exact solution u_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact velocity u_ex h_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact height h_ex % the following iteration computes the exact solution at every spatial point xC=x; for i=1:length(xC) if xC(i) <= -c_L*t u_ex(i) = 0.0; h_ex(i) = hL; elseif xC(i) <= -(u2+c2)*t u_ex(i) = 2.0/3*(xC(i)/t + sqrt(g*hL)); h_ex(i) = 4.0/(9*g)*(-xC(i)/(2.0*t)+sqrt(g*hL))^2; elseif xC(i) < -S*t u_ex(i) = -u2; h_ex(i) = c2^2/g; else u_ex(i) = 0.0; h_ex(i) = hR; end end Q_ex = h_ex.*u_ex; % the exact momentum or discharge Q of water % Galat solusi eksak dengan solusi numeris %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% E_u = (1/N)*sum(abs(u(1:N)'-u_ex(1:N))) E_h = (1/N)*sum(abs(h(1:N)'-h_ex(1:N))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% subplot(2,1,1) %memesan tempat untuk gambar grafik kedalaman aliran air plot(x,h,'b', xC,h_ex,'r--'); %menggambar kedalaman air legend('Numerical Solution','Exact Solution'); title(sprintf('Depth at t=%4.3f',t)) %membuat judul grafik xlim([-L L]); %membuat ukuran sumbu x ylim([0 11]); %membuat ukuran sumbu y subplot(2,1,2) %memesan tempat untuk gambar grafik debit air yang mengalir plot(x,u,'b', xC,u_ex,'r--'); %menggambar kecepatan air yang mengalir legend('Numerical Solution','Exact Solution'); title(sprintf('Velocity at t=%4.3f',t)) %membuat judul grafik xlim([-L L]); %membuat ukuran sumbu x ylim([0 5]); %membuat ukuran sumbu y
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 77
pause(0.001);
%program akan berhenti setiap t detik
end max(h) min(h)
%hasil akhir kedalaman maksimum aliran air %hasil akhir kedalaman minimum aliran air
b. Code untuk grafik galat π’ dan β clc N = [100,200,400,800,1600,3200]; Galat_u = [0.265, 0.1684, 0.1028, 0.0601, 0.0344, 0.0198]; Galat_h = [0,2112, 0,1362, 0,0842, 0,0498, 0,0287, 0,0166]; plot(N,Galat_u,'--r*',N,Galat_h,'--b*') legend('Galat u','Galat h'); xlabel('Banyaknya langkah pada domain ruang (N)') ylabel('Galat') title('Galat Kecepatan dan Kedalaman Aliran Air')
c. Code untuk grafik galat πΏ1, πΏ2, dan πΏβ clear clc N1 = [100 200 400 800 1600 3200]; E_u_L1 = zeros(6,1) E_h_L1 = zeros(6,1) E_u_L2 = zeros(6,1) E_h_L2 = zeros(6,1) E_u_Linf = zeros(6,1) E_h_Linf = zeros(6,1) E_u_L1a = E_h_L1a = E_u_L2a = E_h_L2a = E_u_Linfa E_h_Linfa
E_u_L1 E_h_L1 E_u_L2 E_h_L2 = E_u_Linf = E_h_Linf
for kk = 1:length(N1) N = N1(kk) for k=1:length(N) L = 5; dx = 2*L/N; %ukuran langkah pada ruang x x1 = -L:dx:L; %membuat langkah pada ruang dengan dx adalah jarak dari titik a ke b x = x1(1:N)+dx/2; %membuat langkah pada ruang x1 sehingga jarak langkah semakin kecil dt = 0.05*dx; %ukuran langkah waktu t
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 78
% initial conditions u = zeros(N,1); %membuat ruang untuk kecepatan aliran air u h
= zeros(N,1);
%membuat ruang untuk kedalaman aliran
air h uh = zeros(N,1);
%membuat ruang untuk debit air
Nm = N/2+1; %kedalaman air di atas kedalaman air disebelah kanan dinding hL=10; hR=4; h(1:Nm) = h(1:Nm)+ hL; %membuat ruang untuk kedalaman air di sebelah kiri dinding h(Nm+1:N) = h(Nm+1:N)+ hR; %membuat ruang untuk kedalaman air di sebelah kanan dinding h1 = h; u1 = u; uh1 = uh; g = 9.81;
%percepatan gravitasi bumi
tStop = 0.2; %waktu akhir iterasi t = 0; %waktu awal j=0; uL=0; uR=0; xmin=-L; xmax=L; delta=(L-(-L))/N; %for shock wave exact computation c_L = sqrt(g*hL); % wave speed at left side c_R = sqrt(g*hR); % wave speed at right side Smin=-101.0; % initial bracketing for bisection method for shock speed S Smax=0.0; % terminal bracketing for bisection method for shock speed S for i=1:100 S=(Smin+Smax)/2.0; % bisecting u2=S-c_R*c_R/4.0/S*(1.0+sqrt(1.0+8.0*S*S/c_R/c_R)); % implicit function for velocity behind shock c2=c_R*sqrt(0.5*(sqrt(1.0+8.0*S*S/c_R/c_R)-1.0)); % implicit function for wave speed behind shock func = -2.0*c_L -u2 +2.0*c2; % characteristic relation between velocity and wave speed if (func > 0.0) % bisection procedure Smin=S; else % bisection procedure Smax=S; end end
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 79
while t < tStop j=j+1; for i=2:N-1 F2_right=0.5*(u(i+1)^2*h(i+1) + 0.5*g*h(i+1)^2 + u(i)^2*h(i)+0.5*g*h(i)^2) - dx/(2*dt)*(u(i+1)*h(i+1)-u(i)*h(i)); %menghitung flux 2 kanan F2_left=0.5*(u(i)^2*h(i) + 0.5*g*h(i)^2 + u(i1)^2*h(i-1)+0.5*g*h(i-1)^2) - dx/(2*dt)*(u(i)*h(i)-u(i-1)*h(i-1)); %menghitung flux 2 kiri F1_right=0.5*(u(i+1) *h(i+1) + u(i)*h(i)) dx/(2*dt)*(h(i+1)-h(i)); %menghitung flux 1 kanan F1_left=0.5*(u(i) *h(i) + u(i-1)*h(i-1)) dx/(2*dt)*(h(i)-h(i-1)); %menghitung flux 1 kiri h1(i)=h(i)-dt*(F1_right- F1_left)/dx; %menghitung kedalaman aliran air uh1(i)=uh(i)-dt*(F2_right- F2_left)/dx; %menghitung debit air yang mengalir end t = t + dt; %update waktu h = h1; %memperbarui dan memanggil hasil akhir perhitungan kedalaman aliran air uh = uh1; %memperbarui dan memanggil hasil akhir debit air yang mengalir u = uh1./h1; %memperbarui dan memanggil hasil akhir perhitungan kecepatan aliran air %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Exact solution u_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact velocity u_ex h_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact height h_ex % the following iteration computes the exact solution at every spatial point xC=x; for i=1:length(xC) if xC(i) <= -c_L*t u_ex(i) = 0.0; h_ex(i) = hL; elseif xC(i) <= -(u2+c2)*t u_ex(i) = 2.0/3*(xC(i)/t + sqrt(g*hL)); h_ex(i) = 4.0/(9*g)*(xC(i)/(2.0*t)+sqrt(g*hL))^2; elseif xC(i) < -S*t u_ex(i) = -u2; h_ex(i) = c2^2/g; else u_ex(i) = 0.0; h_ex(i) = hR;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 80
end end Q_ex = h_ex.*u_ex; % the exact momentum or discharge Q of water subplot(2,1,1) %memesan tempat kedalaman aliran air plot(x,h,'b', xC,h_ex,'r--'); air legend('Solusi Numerik','Solusi title(sprintf('Kedalaman air at judul grafik xlim([-L L]); %membuat ukuran ylim([0 11]); %membuat ukuran
untuk gambar grafik %menggambar kedalaman Eksak'); t=%4.3f',t))
%membuat
sumbu x sumbu y
subplot(2,1,2) %memesan tempat untuk gambar grafik debit air yang mengalir plot(x,u,'b', xC,u_ex,'r--'); %menggambar kecepatan air yang mengalir legend('Solusi Numerik','Solusi Eksak'); title(sprintf('Kecepatan aliran air at t=%4.3f',t)) %membuat judul grafik xlim([-L L]); %membuat ukuran sumbu x ylim([0 5]); %membuat ukuran sumbu y pause(0.001); %program akan berhenti setiap t detik end end
% Galat L1, L2, dan L inf E_u_L1a(kk,1) =(1/N)*sum(abs(u(1:N)'-u_ex(1:N))) E_h_L1a(kk,1) =(1/N)*sum(abs(h(1:N)'-h_ex(1:N))) E_u_L2a(kk,1) = (1/N)*sum((u(1:N)'-u_ex(1:N)).^2) E_h_L2a(kk,1) = (1/N)*sum((h(1:N)'-h_ex(1:N)).^2) E_u_Linfa(kk,1) = E_h_Linfa(kk,1) =
max(abs(u(1:N)'-u_ex(1:N))) max(abs(h(1:N)'-h_ex(1:N)))
end E_u_L1 = E_h_L1 = E_u_L2 = E_h_L2 = E_u_Linf E_h_Linf
E_u_L1a E_h_L1a E_u_L2a E_h_L2a = E_u_Linfa = E_h_Linfa
subplot(2,1,1) plot(log(N1),log(E_u_L1),'--r*',log(N1),log(E_u_L2),'--b*', log(N1), log(E_u_Linf),'--g*') legend('Galat u L1','Galat u L2', 'Galat u Linf'); xlabel('log(N)') ylabel('log(Galat u)') title('Galat Kecepatan Aliran Air')
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 81
subplot(2,1,2) plot(log(N1),log(E_h_L1),'--r*',log(N1),log(E_h_L2),'--b*', log(N1), log(E_h_Linf),'--g*') legend('Galat h L1','Galat h L2', 'Galat h Linf'); xlabel('log(N)') ylabel('log(Galat h)') title('Galat Kedalaman Aliran Air')
2. Metode Beda Hingga Grid Kolokasi a. Code untuk metode beda hingga grid kolokasi clear all; clear figure; N=1000; % jumlah langkah pada ruang zeta=0.01; % ukuran langkah waktu tStop=0.2; M=tStop/zeta; % jumlah langkah pada waktu L=5; hL=10; hR=4; uL=0; uR=0; xmin=-L; xmax=L; g=9.81; % konstanta percepatan gravitasi delta=(L-(-L))/N; dx=delta; u(:,:)=zeros(N+1,M+1); % membuat ruang untuk kecepatan h(:,:)=zeros(N+1,M+1); % membuat ruang untuk ketinggian u(1,:)=uL; u(N+1,:)=uR; h(1,:)=hL; h(N+1,:)=hR; x=-L:delta:L; % langkah ruang dan jarak t = 0; %for shock wave exact computation c_L = sqrt(g*hL); % wave speed at left side c_R = sqrt(g*hR); % wave speed at right side Smin=-101.0; % initial bracketing for bisection method for shock speed S Smax=0.0; % terminal bracketing for bisection method for shock speed S for i=1:100 S=(Smin+Smax)/2.0; % bisecting u2=S-c_R*c_R/4.0/S*(1.0+sqrt(1.0+8.0*S*S/c_R/c_R)); % implicit function for velocity behind shock c2=c_R*sqrt(0.5*(sqrt(1.0+8.0*S*S/c_R/c_R)-1.0)); % implicit function for wave speed behind shock
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 82
func = -2.0*c_L -u2 characteristic relation if (func > 0.0) % Smin=S; else % Smax=S; end end
+2.0*c2; % between velocity and wave speed bisection procedure bisection procedure
for k=2:N if k < N/2 h(k,1)= hL; % kedalaman aliran air di kiri dinding else h(k,1)= hR; % kedalaman aliran air di kanan dinding end end % Penyelesaian Matriks A=zeros(2*(N-1),2*(N-1)); %memesan tempat untuk matriks A b=zeros(2*(N-1),1); %memesan tempat untuk matriks b for j=2:M+1 A(1,N)=2*delta; A(1,N+1)=zeta*u(2,j-1); A(1,2)=zeta*h(2,j-1); % Persamaan pertama untuk i=1 b(1,1)=2*delta*h(2,j-1)+zeta*u(2,j-1)*h(1,j)+zeta*h(2,j1)*u(1,j); A(2,1)=2*delta*h(2,j-1); A(2,2)=zeta*u(2,j-1)*h(2,j-1); % persamaan kedua untuk i=1 A(2,N+1)=zeta*g*h(2,j-1); b(2,1)=2*delta*h(2,j-1)*u(2,j-1)+zeta*u(2,j-1)*h(2,j1)*u(1,j)+zeta*g*h(2,j-1)*h(1,j); A(2*N-3,2*N-2)=2*delta; A(2*N-3,N-2+N-1)=-zeta*u(N,j-1); A(2*N-3,N-1-1)=-zeta*h(N,j-1); % Persamaan pertama untuk i=3 b(2*N-3,1)=2*delta*h(N,j-1)-zeta*u(N,j-1)*h(N+1,j)-zeta*h(N,j1)*u(N+1,j); A(2*N-2,N-1)=2*delta*h(N,j-1); A(2*N-2,N-1-1)=-zeta*u(N,j-1)*h(N,j-1); A(2*N-2,N-2+N-1)=-zeta*g*h(N,j-1);
% Persamaan kedua untuk i=3 b(2*N-2,1)=2*delta*h(N,j-1)*u(N,j-1)-zeta*u(N,j-1)*h(N,j1)*u(N+1,j)-zeta*g*h(N,j-1)*h(N+1,j); for i=3:N-1 A(2*i-3,N-2+i)=2*delta; A(2*i-3,N-2+i+1)=zeta*u(i,j-1);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 83
A(2*i-3,N-2+i-1)=-zeta*u(i,j-1); A(2*i-3,i+1-1)=zeta*h(i,j-1); A(2*i-3,i-1-1)=-zeta*h(i,j-1); % persamaan pertama untuk i=2 b(2*i-3,1)=2*delta*h(i,j-1); A(2*i-2,i-1)=2*delta*h(i,j-1); A(2*i-2,i+1-1)=zeta*u(i,j-1)*h(i,j-1); A(2*i-2,i-1-1)=-zeta*u(i,j-1)*h(i,j-1); A(2*i-2,N-2+i+1)=zeta*g*h(i,j-1); A(2*i-2,N-2+i-1)=-zeta*g*h(i,j-1); % persamaan kedua untuk i=2 b(2*i-2,1)=2*delta*h(i,j-1)*u(i,j-1); end % menyelesaikan matriks A y=A\b;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % SOLUSI NUMERIS % solusi untuk ruang kecepatan dan kedalaman aliran air u(2:N,j)=y(1:N-1); h(2:N,j)=y(N:2*N-2); % Syarat batas u(1:5,j)=0; u(end-5:end,j)=0; h(1:5,j)=10; h(end-5:end,j)=4; t = t+zeta; %%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % SOLUSI EKSAK u_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact velocity u_ex h_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact height h_ex % the following iteration computes the exact solution at every spatial point xC=x; for i=1:length(xC) if xC(i) <= -c_L*t u_ex(i) = 0.0; h_ex(i) = hL; elseif xC(i) <= -(u2+c2)*t u_ex(i) = 2.0/3*(xC(i)/t + sqrt(g*hL)); h_ex(i) = 4.0/(9*g)*(-xC(i)/(2.0*t)+sqrt(g*hL))^2; elseif xC(i) < -S*t u_ex(i) = -u2; h_ex(i) = c2^2/g; else u_ex(i) = 0.0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 84
h_ex(i) = hR; end end Q_ex = h_ex.*u_ex; % the exact momentum or discharge Q of water
% Galat solusi eksak dengan solusi numeris %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% E_u = (1/N)*sum(abs(u(1:N)-u_ex(1:N))) E_h = (1/N)*sum(abs(h(1:N)-h_ex(1:N))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % membuat gambar grafik kedalaman dan kecepatan air subplot(2,1,1); plot(x,h(:,j),'b-', xC,h_ex, 'r--'); legend('Numerical Solution','Exact Solution'); title(sprintf('Depth at t=%4.3f',t)) axis([-L L 0 11]); subplot(2,1,2); plot(x,u(:,j),'b-',xC,u_ex,'r--'); legend('Numerical Solution','Exact Solution'); title(sprintf('Velocity at t=%4.3f',t)) axis([-L L 0 5]); pause(0.1) end
b. Code untuk grafik galat π’ dan β clc N = [100,200,400,800,1600,3200]; Galat_u = [1.2075, 1.2168, 1.2122, 1.2099, 1.2110, 1.2105]; Galat_h = [0.9629, 0.9751, 0.9746, 0.9744, 0.9759, 0.9758]; plot(N,Galat_u,'--r*',N,Galat_h,'--b*') legend('Galat u','Galat h'); xlabel('Banyaknya langkah pada domain ruang (N)') ylabel('Galat') title('Galat Kecepatan dan Kedalaman Aliran Air')
c. Code untuk grafik galat πΏ1, πΏ2, dan πΏβ clear all; clear figure; N1 = [100 200 400 800 1600 3200]; E_u_L1=zeros(6,1) E_h_L1=zeros(6,1) E_u_L2=zeros(6,1) E_h_L2=zeros(6,1)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 85
E_u_Linf=zeros(6,1) E_h_Linf=zeros(6,1) E_u_L1a=E_u_L1 E_h_L1a=E_h_L1 E_u_L2a=E_u_L2 E_h_L2a=E_h_L2 E_u_Linfa=E_u_Linf E_h_Linfa=E_h_Linf for kk = 1:length(N1) N = N1(kk) for jj=1:length(N) zeta=0.01; % ukuran langkah waktu tStop=0.2; M=tStop/zeta; % jumlah langkah pada waktu L=5; hL=10; hR=4; uL=0; uR=0; xmin=-L; xmax=L; g=9.81; % konstanta percepatan gravitasi delta=(L-(-L))/N; dx=delta; u=zeros(N+1,M+1); % membuat ruang untuk kecepatan h=zeros(N+1,M+1); % membuat ruang untuk kedalaman u(1,:)=uL; u(N+1,:)=uR; h(1,:)=hL; h(N+1,:)=hR; x=-L:delta:L; % langkah ruang dan jarak t = 0; %for shock wave exact computation c_L = sqrt(g*hL); % wave speed at left side c_R = sqrt(g*hR); % wave speed at right side Smin=-101.0; % initial bracketing for bisection method for shock speed S Smax=0.0; % terminal bracketing for bisection method for shock speed S for i=1:100 S=(Smin+Smax)/2.0; % bisecting u2=S-c_R*c_R/4.0/S*(1.0+sqrt(1.0+8.0*S*S/c_R/c_R)); % implicit function for velocity behind shock c2=c_R*sqrt(0.5*(sqrt(1.0+8.0*S*S/c_R/c_R)-1.0)); % implicit function for wave speed behind shock func = -2.0*c_L -u2 +2.0*c2; % characteristic relation between velocity and wave speed if (func > 0.0) % bisection procedure Smin=S; else % bisection procedure Smax=S; end end
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 86
for k=2:N if k < N/2 h(k,1)= hL; % kedalaman aliran air di kiri dinding else h(k,1)= hR; % kedalaman aliran air di kanan dinding end end % Penyelesaian Matriks A=zeros(2*(N-1),2*(N-1)); %memesan tempat untuk matriks A b=zeros(2*(N-1),1);
%memesan tempat untuk matriks b
for j=2:M+1 A(1,N)=2*delta; A(1,N+1)=zeta*u(2,j-1); A(1,2)=zeta*h(2,j-1); % Persamaan pertama untuk i=1 b(1,1)=2*delta*h(2,j-1)+zeta*u(2,j1)*h(1,j)+zeta*h(2,j-1)*u(1,j); A(2,1)=2*delta*h(2,j-1); A(2,2)=zeta*u(2,j-1)*h(2,j-1); % persamaan kedua untuk i=1 A(2,N+1)=zeta*g*h(2,j-1); b(2,1)=2*delta*h(2,j-1)*u(2,j-1)+zeta*u(2,j-1)*h(2,j1)*u(1,j)+zeta*g*h(2,j-1)*h(1,j); A(2*N-3,2*N-2)=2*delta; A(2*N-3,N-2+N-1)=-zeta*u(N,j-1); A(2*N-3,N-1-1)=-zeta*h(N,j-1); % Persamaan pertama untuk i=3 b(2*N-3,1)=2*delta*h(N,j-1)-zeta*u(N,j-1)*h(N+1,j)zeta*h(N,j-1)*u(N+1,j); A(2*N-2,N-1)=2*delta*h(N,j-1); A(2*N-2,N-1-1)=-zeta*u(N,j-1)*h(N,j-1); A(2*N-2,N-2+N-1)=-zeta*g*h(N,j-1);
% Persamaan kedua untuk i=3 b(2*N-2,1)=2*delta*h(N,j-1)*u(N,j-1)-zeta*u(N,j1)*h(N,j-1)*u(N+1,j)-zeta*g*h(N,j-1)*h(N+1,j); for i=3:N-1 A(2*i-3,N-2+i)=2*delta; A(2*i-3,N-2+i+1)=zeta*u(i,j-1); A(2*i-3,N-2+i-1)=-zeta*u(i,j-1); A(2*i-3,i+1-1)=zeta*h(i,j-1); A(2*i-3,i-1-1)=-zeta*h(i,j-1); % persamaan pertama untuk i=2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 87
b(2*i-3,1)=2*delta*h(i,j-1); A(2*i-2,i-1)=2*delta*h(i,j-1); A(2*i-2,i+1-1)=zeta*u(i,j-1)*h(i,j-1); A(2*i-2,i-1-1)=-zeta*u(i,j-1)*h(i,j-1); A(2*i-2,N-2+i+1)=zeta*g*h(i,j-1); A(2*i-2,N-2+i-1)=-zeta*g*h(i,j-1); % persamaan kedua untuk i=2 b(2*i-2,1)=2*delta*h(i,j-1)*u(i,j-1); end % menyelesaikan matriks A y=A\b;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % SOLUSI NUMERIS % solusi untuk ruang kecepatan dan kedalaman aliran air u(2:N,j)=y(1:N-1); h(2:N,j)=y(N:2*N-2); % Syarat batas u(1:5,j)=0; u(end-5:end,j)=0; h(1:5,j)=10; h(end-5:end,j)=4; t = t+zeta; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % SOLUSI EKSAK u_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact velocity u_ex h_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact height h_ex % the following iteration computes the exact solution at every spatial point xC=x; for i=1:length(xC) if xC(i) <= -c_L*t u_ex(i) = 0.0; h_ex(i) = hL; elseif xC(i) <= -(u2+c2)*t u_ex(i) = 2.0/3*(xC(i)/t + sqrt(g*hL)); h_ex(i) = 4.0/(9*g)*(xC(i)/(2.0*t)+sqrt(g*hL))^2; elseif xC(i) < -S*t u_ex(i) = -u2; h_ex(i) = c2^2/g; else u_ex(i) = 0.0; h_ex(i) = hR;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 88
end end Q_ex = h_ex.*u_ex; % the exact momentum or discharge Q of water
% Galat solusi eksak dengan solusi numeris %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% E_u = (1/N)*sum(abs(u(1:N)-u_ex(1:N))) E_h = (1/N)*sum(abs(h(1:N)-h_ex(1:N))) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% membuat gambar grafik kedalaman dan kecepatan air subplot(2,1,1); plot(x,h(:,j),'b-', xC,h_ex, 'r--'); legend('Numerical Solution','Exact Solution'); title(sprintf('Depth at t=%4.3f',t)) axis([-L L 0 11]); subplot(2,1,2); plot(x,u(:,j),'b-',xC,u_ex,'r--'); legend('Numerical Solution','Exact Solution'); title(sprintf('Velocity at t=%4.3f',t)) axis([-L L 0 5]); pause(0.1) end end % Galat L1, L2, dan L inf E_u_L1a(kk,1) =(1/N)*sum(abs(u(1:N)-u_ex(1:N))) E_h_L1a(kk,1) =(1/N)*sum(abs(h(1:N)-h_ex(1:N))) E_u_L2a(kk,1) = (1/N)*sum((u(1:N)-u_ex(1:N)).^2) E_h_L2a(kk,1) = (1/N)*sum((h(1:N)-h_ex(1:N)).^2) E_u_Linfa(kk,1) = E_h_Linfa(kk,1) = end E_u_L1 = E_h_L1 = E_u_L2 = E_h_L2 = E_u_Linf E_h_Linf
max(abs(u(1:N)-u_ex(1:N))) max(abs(h(1:N)-h_ex(1:N)))
E_u_L1a E_h_L1a E_u_L2a E_h_L2a = E_u_Linfa = E_h_Linfa
subplot(2,1,1) plot(log(N1),log(E_u_L1),'--r*',log(N1),log(E_u_L2),'--b*', log(N1), log(E_u_Linf),'--g*')
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 89
legend('Galat u L1','Galat u L2', 'Galat u Linf'); xlabel('log(N)') ylabel('log(Galat u)') title('Galat Kecepatan Aliran Air') subplot(2,1,2) plot(log(N1),log(E_h_L1),'--r*',log(N1),log(E_h_L2),'--b*', log(N1), log(E_h_Linf),'--g*') legend('Galat h L1','Galat h L2', 'Galat h Linf'); xlabel('log(N)') ylabel('log(Galat h)') title('Galat Kedalaman Aliran Air')
3. Metode Beda Hinggs Grid Selang-Seling a. Code untuk metode beda hingga grid selang-seling clc clear all g = 9.81; % percepatan gravitasi N = 100; % banyaknya langkah untuk mendiskritkan domain ruang L = 5; % ujung-ujung interval xmin=-L; xmax=L; dx = (L-(-L))/N; % jarak grid a ke grid b hL = 10; % ketinggian awal di sebelah kiri dinding, dinding berada pada x=0 hR = 4; % ketinggian awal di sebelah kanan dinding dt = 0.05*dx; % langkah waktu t tstop =0.2; % program ini berjalan sampai waktu tStop detik %for shock wave exact computation c_L = sqrt(g*hL); % wave speed at left side c_R = sqrt(g*hR); % wave speed at right side Smin=-101.0; % initial bracketing for bisection method for shock speed S Smax=0.0; % terminal bracketing for bisection method for shock speed S for i=1:100 S=(Smin+Smax)/2.0; % bisecting u2=S-c_R*c_R/4.0/S*(1.0+sqrt(1.0+8.0*S*S/c_R/c_R)); % implicit function for velocity behind shock c2=c_R*sqrt(0.5*(sqrt(1.0+8.0*S*S/c_R/c_R)-1.0)); % implicit function for wave speed behind shock func = -2.0*c_L -u2 +2.0*c2; % characteristic relation between velocity and wave speed if (func > 0.0) % bisection procedure Smin=S; else % bisection procedure Smax=S; end end
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 90
% make a grid x = (-L+dx/2 : dx : L+dx/2); % membuat langkah pada ruang x dengan ujung-ujung interval -L+dx/2 dan L+dx/2 h = zeros(1,N); % membuat ruang untuk kedalaman aliran air u = zeros(1,N); % membuat ruang untuk kecepatan aliran air q = zeros(1,N); % membuat ruang untuk debit aliran air xodd = zeros(1,N/2); % membuat ruang untuk menghitung kecepatan aliran air uodd = zeros(1,N/2); % membuat ruang untuk perhitungan kecepatan aliran air pada grid ganjil qodd = zeros(1,N/2); % membuat ruang untuk perhitungan debit aliran air pada grid ganjil xeven = zeros(1,N/2); % membuat ruang untuk menghitung kedalaman aliran air heven = zeros(1,N/2); % membuat ruang untuk perhitungan kedalaman aliran air pada grid genap % menghitung kecepatan dan kedalaman aliran air. Jika hasil modulonya nol % maka hasil perhitungannya masuk ke grid genap. Jika hasil modulonya tidak nol % maka hasil perhitungannya masuk ke grid ganjil. for i = 1:N if mod(i,2) == 0 xeven(i/2) = x(i); else xodd((i+1)/2) = x(i); end end %initial condition h(1,1:N/2) = hL; h(1,N/2:N) = hR; %now let start the evolution figure(1) t=0; %initial condition h(1) = hL; h(end) = hR; u(1) = 0; u(end) = 0; while (t
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 91
hhtimh = hh(i-2); uuimh = uu(i-1); qimh = hhtimh*uuimh; hnew(i) = hh(i) - dt/(2*dx)*(qiph - qimh); end end %boundary condition hnew(1:3) = hL; hnew(end-3:end) = hR; unew(1:3) = 0; unew(end-3:end) = 0; % perhitungan dengan metode beda hingga grid selang-seling for i=4:N-4 if mod(i,2)~=0; %u grids i.e. odd grids uutip1 = uu(i); uuti = uu(i-2); uuip3h = uu(i+2); hhtip3h = hh(i+1); qip3h = hhtip3h*uuip3h; uuiph = uu(i); hhtiph = hh(i-1); qiph = hhtiph*uuiph; qip1 = 0.5*(qiph+qip3h); uuimh = uu(i-2); hhtimh = hh(i-3); qimh = hhtimh*uuimh; qi = 0.5*(qimh+qiph); hhip1 = hh(i+1); hhi = hh(i-1); hhiph = 0.5*(hhi+hhip1); hip1 = hnew(i+1); hi = hnew(i-1); hiph = 0.5*(hi+hip1); unew(i) = (1/hiph)*(hhiph*uuiph dt/(2*dx)*(qip1*uutip1 - qi*uuti + 0.5*g*(hip1^2 - hi^2) ) ); end end %boundary condition hnew(1:4) = hL; hnew(end-4:end) = hR; unew(1:4) = 0; unew(end-4:end) = 0; h = hnew; u = unew;
% memperbarui hasil perhitungan h % memperbarui hasil perhitungan u
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 92
t=t+dt; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Exact solution u_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact velocity u_ex h_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact height h_ex % the following iteration computes the exact solution at every spatial point xC=x; for i=1:length(xC) if xC(i) <= -c_L*t u_ex(i) = 0.0; h_ex(i) = hL; elseif xC(i) <= -(u2+c2)*t u_ex(i) = 2.0/3*(xC(i)/t + sqrt(g*hL)); h_ex(i) = 4.0/(9*g)*(-xC(i)/(2.0*t)+sqrt(g*hL))^2; elseif xC(i) < -S*t u_ex(i) = -u2; h_ex(i) = c2^2/g; else u_ex(i) = 0.0; h_ex(i) = hR; end end Q_ex = h_ex.*u_ex; % the exact momentum or discharge Q of water % Menggambar hasil perhitungan h dan u hevenex = 0*heven; uoddex = 0*uodd; for i = 1:N if mod(i,2) == 0 heven(i/2) = h(i); hevenex(i/2) = h_ex(i); else uodd((i+1)/2) = u(i); uoddex((i+1)/2) = u_ex(i); end end % Galat solusi eksak dengan solusi numeris %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% E_u = 1/(N/2)*sum(abs(uodd-uoddex)) E_h = 1/(N/2)*sum(abs(heven-hevenex)) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(1) subplot(2,1,1) plot(xeven,heven,'b-', xeven,hevenex,'r-') legend('solusi numeris','solusi eksak')
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 93
title(sprintf('Kedalaman air pada waktu t=%4.3f',t)) xlim([-L L]) ylim([0 11]) subplot(2,1,2) plot(xodd,uodd,'b-', xodd,uoddex,'r-') legend('solusi numeris','solusi eksak') title(sprintf('Kecepatan air pada waktu t=%4.3f',t)) xlim([-L L]) ylim([0 5]) pause(0.1) end
b. Code untuk grafik galat π’ dan β clc N = [100,200,400,800,1600,3200]; Galat_u = [0.1804, 0.0897, 0.0415, 0.0285, 0.0144, 0.0089]; Galat_h = [0.1239, 0.0621, 0.0416, 0.0209, 0.0140, 0.0067]; plot(N,Galat_u,'--r*',N,Galat_h,'--b*') legend('Galat u','Galat h'); xlabel('Banyaknya langkah pada domain ruang (N)') ylabel('Galat') title('Galat Kecepatan dan Kedalaman Aliran Air')
c. Code untuk grafik galat πΏ1, πΏ2, dan πΏβ clc clear all N1 = [100 200 400 800 1600 3200]; E_u_L1=zeros(6,1) E_h_L1=zeros(6,1) E_u_L2=zeros(6,1) E_h_L2=zeros(6,1) E_u_Linf=zeros(6,1) E_h_Linf=zeros(6,1) E_u_L1a=E_u_L1 E_h_L1a=E_h_L1 E_u_L2a=E_u_L2 E_h_L2a=E_h_L2 E_u_Linfa=E_u_Linf E_h_Linfa=E_h_Linf for kk = 1:length(N1) N = N1(kk) for k=1:length(N) g = 9.81; % percepatan gravitasi L = 5; % ujung-ujung interval
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 94
xmin=-L; xmax=L; dx = (L-(-L))/N; % jarak grid a ke grid b hL = 10; % ketinggian awal di sebelah kiri dinding, dinding berada pada x=0 hR = 4; % ketinggian awal di sebelah kanan dinding dt = 0.05*dx; % langkah waktu t tstop =0.2; % program ini berjalan sampai waktu tStop detik %for shock wave exact computation c_L = sqrt(g*hL); % wave speed at left side c_R = sqrt(g*hR); % wave speed at right side Smin=-101.0; % initial bracketing for bisection method for shock speed S Smax=0.0; % terminal bracketing for bisection method for shock speed S for i=1:100 S=(Smin+Smax)/2.0; % bisecting u2=S-c_R*c_R/4.0/S*(1.0+sqrt(1.0+8.0*S*S/c_R/c_R)); % implicit function for velocity behind shock c2=c_R*sqrt(0.5*(sqrt(1.0+8.0*S*S/c_R/c_R)-1.0)); % implicit function for wave speed behind shock func = -2.0*c_L -u2 +2.0*c2; % characteristic relation between velocity and wave speed if (func > 0.0) % bisection procedure Smin=S; else % bisection procedure Smax=S; end end % make a grid x = (-L+dx/2 : dx : L+dx/2); % membuat langkah pada ruang x dengan ujung-ujung interval -L+dx/2 dan L+dx/2 h = zeros(1,N); % membuat ruang untuk kedalaman aliran air u = zeros(1,N); % membuat ruang untuk kecepatan aliran air q = zeros(1,N); % membuat ruang untuk debit aliran air xodd = zeros(1,N/2); % membuat ruang untuk menghitung kecepatan aliran air uodd = zeros(1,N/2); % membuat ruang untuk perhitungan kecepatan aliran air pada grid ganjil qodd = zeros(1,N/2); % membuat ruang untuk perhitungan debit aliran air pada grid ganjil xeven = zeros(1,N/2); % membuat ruang untuk menghitung kedalaman aliran air heven = zeros(1,N/2); % membuat ruang untuk perhitungan kedalaman aliran air pada grid genap % menghitung kecepatan dan kedalaman aliran air. Jika hasil modulonya nol % maka hasil perhitungannya masuk ke grid genap. Jika hasil modulonya tidak nol % maka hasil perhitungannya masuk ke grid ganjil. for i = 1:N if mod(i,2) == 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 95
xeven(i/2) = x(i); else xodd((i+1)/2) = x(i); end end %initial condition h(1,1:N/2) = hL; h(1,N/2:N) = hR; %now let start the evolution figure(1) t=0; %initial condition h(1) = hL; h(end) = hR; u(1) = 0; u(end) = 0; while (t
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 96
hhtiph = hh(i-1); qiph = hhtiph*uuiph; qip1 = 0.5*(qiph+qip3h); uuimh = uu(i-2); hhtimh = hh(i-3); qimh = hhtimh*uuimh; qi = 0.5*(qimh+qiph); hhip1 = hh(i+1); hhi = hh(i-1); hhiph = 0.5*(hhi+hhip1); hip1 = hnew(i+1); hi = hnew(i-1); hiph = 0.5*(hi+hip1); unew(i) = (1/hiph)*(hhiph*uuiph dt/(2*dx)*(qip1*uutip1 - qi*uuti + 0.5*g*(hip1^2 - hi^2) ) ); end end %boundary condition hnew(1:4) = hL; hnew(end-4:end) = hR; unew(1:4) = 0; unew(end-4:end) = 0; h = hnew; u = unew;
% memperbarui hasil perhitungan h % memperbarui hasil perhitungan u
t=t+dt; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Exact solution u_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact velocity u_ex h_ex=xmin+dx/2:dx:xmax-dx/2; % initial storage for exact height h_ex % the following iteration computes the exact solution at every spatial point xC=x; for i=1:length(xC) if xC(i) <= -c_L*t u_ex(i) = 0.0; h_ex(i) = hL; elseif xC(i) <= -(u2+c2)*t u_ex(i) = 2.0/3*(xC(i)/t + sqrt(g*hL)); h_ex(i) = 4.0/(9*g)*(xC(i)/(2.0*t)+sqrt(g*hL))^2; elseif xC(i) < -S*t u_ex(i) = -u2; h_ex(i) = c2^2/g; else u_ex(i) = 0.0; h_ex(i) = hR;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 97
end end Q_ex = h_ex.*u_ex; % the exact momentum or discharge Q of water % Menggambar hasil perhitungan h dan u hevenex = 0*heven; uoddex = 0*uodd; for i = 1:N if mod(i,2) == 0 heven(i/2) = h(i); hevenex(i/2) = h_ex(i); else uodd((i+1)/2) = u(i); uoddex((i+1)/2) = u_ex(i); end end % Galat solusi eksak dengan solusi numeris %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% E_u = 1/(N/2)*sum(abs(uodd-uoddex)) E_h = 1/(N/2)*sum(abs(heven-hevenex)) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(1) subplot(2,1,1) plot(xeven,heven,'b-', xeven,hevenex,'r-') legend('Numerical solution','Exact Solution') title(sprintf('Depth at t=%4.3f',t)) xlim([-L L]) ylim([0 11]) subplot(2,1,2) plot(xodd,uodd,'b-', xodd,uoddex,'r-') legend('Numerical solution','Exact Solution') title(sprintf('Velocity at t=%4.3f',t)) xlim([-L L]) ylim([0 5]) pause(0.1) end end % Galat solusi eksak dengan solusi numeris E_u_L1a(kk,1) =(1/N)*sum(abs(uodd-uoddex)) E_h_L1a(kk,1) =(1/N)*sum(abs(heven-hevenex)) E_u_L2a(kk,1) = (1/N)*sum((uodd-uoddex).^2) E_h_L2a(kk,1) = (1/N)*sum((heven-hevenex).^2) E_u_Linfa(kk,1) = E_h_Linfa(kk,1) = end
max(abs(uodd-uoddex)) max(abs(heven-hevenex))
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 98
E_u_L1 = E_h_L1 = E_u_L2 = E_h_L2 = E_u_Linf E_h_Linf
E_u_L1a E_h_L1a E_u_L2a E_h_L2a = E_u_Linfa = E_h_Linfa
subplot(2,1,1) plot(log(N1),log(E_u_L1),'--r*',log(N1),log(E_u_L2),'--b*', log(N1), log(E_u_Linf),'--g*') legend('Galat u L1','Galat u L2', 'Galat u Linf'); xlabel('log(N)') ylabel('log(Galat u)') title('Galat Kecepatan Aliran Air') subplot(2,1,2) plot(log(N1),log(E_h_L1),'--r*',log(N1),log(E_h_L2),'--b*', log(N1), log(E_h_Linf),'--g*') legend('Galat h L1','Galat h L2', 'Galat h Linf'); xlabel('log(N)') ylabel('log(Galat h)') title('Galat Kedalaman Aliran Air')