BAB 2 LANDASAN TEORI
2.1
Teori Umum Berikut ini adalah beberapa teori umum yang digunakan dalam penelitian dan penyusunan program.
2.1.1 Rekayasa Piranti Lunak Piranti lunak, oleh Roger S. Pressman (2010, hal. 4) didefinisikan sebagai instruksi program komputer yang ketika dijalankan akan memberikan fitur, fungsi, dan performa seperti yang diinginkan, suatu struktur data yang memungkinkan program untuk memanipulasi informasi, dan informasi deskriptif dalam bentuk cetak atau maya yang menggambarkan operasi dan guna dari suatu program. Dalam bukunya, Pressman menyebutkan bahwa piranti lunak memiliki beberapa karakteristik yang membedakannya dari piranti keras, yaitu sebagai berikut : - Piranti lunak dikembangkan atau direkayasa - Piranti lunak tidak rusak karena pengaruh lingkungan - Walaupun industri bergerak ke arah konstruksi berbasis komponen, namun kebanyakan piranti lunak tetap disusun sesuai pesanan Pada saat ini, terdapat beberapa kategori piranti lunak, yaitu seperti piranti lunak sistem, piranti lunak aplikasi, piranti lunak ilmiah atau teknik, embedded, product-line, aplikasi web, dan kecerdasan buatan. Untuk menghasilkan piranti lunak yang mampu mengikuti tuntutan perkembangan zaman, diperlukan suatu tindakan rekayasa yang disertai dengan usaha untuk memahami masalah yang ingin dipecahkan, memperhatikan desain yang sesuai, dan rekayasa piranti lunak sedemikian rupa sehingga mampu memberikan kualitas tinggi dan dapat dipelihara. IEEE menyebutkan bahwa rekayasa piranti lunak adalah aplikasi pendekatan sistematis, disiplin, dan terukur dari pengembangkan, operasi, dan pemeliharaan piranti lunak, atau studi mengenai hal tersebut (Pressman, 2010, hal. 13).
7
8 Rekayasa piranti lunak terdiri dari beberapa lapisan, seperti ditunjukan oleh Gambar 2.1.
Gambar 2.1 Lapisan Dalam Rekayasa Piranti Lunak (Pressman, 2010, hal. 14)
Dasar yang mendukung rekayasa piranti lunak adalah fokus akan kualitas. Lapisan berikutnya, proses, adalah perekat dari semua lapisan, yaitu dengan memberikan kerangka untuk menghasilkan piranti kualitas tinggi melalui pengembangan yang rasional dan manajemen waktu yang baik. Lapisan metode memberikan langkah-langkah teknikal dalam penyusunan piranti lunak, mencakup komunikasi, analisis persyaratan, pemodelan desain, konstruksi program, pengujian, dan dukungan. Lapisan tool, atau sarana, memberikan dukungan otomatis atau semi-otomatis untuk lapisan proses dan metode.
2.1.2 Prototyping Kerangka proses dalam rekayasa piranti lunak pada bagian 2.1.1 mencakup beberapa hal, yaitu sebagai berikut ini : - Komunikasi, yaitu antara tim penyusun dan pelanggan, serta segala pemegang kepentingan lainnya. - Perencanaan, sebagai peta yang membimbing tim penyusun dalam membuat piranti lunak. - Pemodelan, yaitu adanya sketsa garis besar dari piranti yang ingin dibuat dalam persyaratan dan desain. - Konstruksi, yaitu penyusunan kode dan pengujian. - Penerapan, dimana piranti lunak diberikan kepada pelanggan. Pelanggan akan mengevaluasi piranti tersebut, lalu memberikan umpan balik sebagai hasilnya.
9 Penerapan kelima poin kerangka proses berhubungan erat dengan aliran proses. Aliran proses adalah bagaimana kerangka proses serta aktivitas dan tugas yang terdapat pada tiap kerangka diorganisir sesuai dengan urutan dan waktunya. Terdapat empat jenis aliran proses, yaitu : a. Linear, dimana tiap aktivitas dilakukan sekali dan secara berurutan setelah aktivitas pendahulunya, dimulai dari komunikasi dan diakhiri dengan penerapan. b. Iteratif, dimana tiap aktivitas dilakukan dengan urutan seperti dalam proses linear, namun dapat terjadi perulangan jika dibutuhkan, yaitu dalam tahap komunikasi dilakukan kembali setelah perencanaan, pemodelan yang dilakukan berulang-ulang, serta komunikasi setelah proses kontsruksi. c. Evolusioner, dimana tiap aktivitas dilakukan dengan urutan seperti dalam proses linear namun dapat dilakukan berulang, dimana setelah tahap penerapan, aktivitas yang dilakukan adalah komunikasi. d. Paralel, dimana beberapa aktivitas dalam kerangka dapat dilakukan secara bersamaan, misalnya perencanaan dan pemodelan. Salah satu model evolusioner yang banyak dikenal adalah proses model prototyping. Proses ini sering digunakan saat pemangku kepentingan (stakeholder) memberikan objektif dari piranti lunak yang akan dibuat, namun tidak mengetahui persyaratan fungsi dan fitur yang dibutuhkan di dalamnya. Proses prototyping juga digunakan program tidak didesain untuk digunakan secara luas, serta tidak diketahuinya kemampuan adaptasi dari sistem operasi dan bentuk interaksi dari manusia dengan mesin yang akan digunakan. Gambar 2.2 menunjukkan proses kerja prototyping.
10
Gambar 2.2 Proses Prototyping (Pressman, 2010, hal. 43)
2.1.3 UML (Unified Modeling Language) Unified Modeling Language, atau yang seringkali disingkat sebagai UML, adalah bahasa standar dalam membuat cetak biru sebuah piranti lunak. UML digunakan untuk memvisualisasi, menspesifikasi, menyusun, dan mendokumentasi artefak dari sistem internsif piranti lunak (Skrien, 2008). Diagram UML dapat mencakup beberapa diagram berikut :
a. Diagram Kasus Penggunaan (Use Case Diagram) Diagram kasus penggunaan menunjukkan fungsi dan fitur dari piranti lunak dari sudut pandang pengguna. “Kasus penggunaan” menggambarkan bagaimana pengguna dan sistem berinteraksi dengan mendefinisikan langkahlangkah yang digunakan untuk mencapai sebuah tujuan (Pressman, 2010, hal. 847). Gambar 2.3 adalah contoh diagram kasus penggunaan.
11
Gambar 2.3 Contoh Diagram Kasus Penggunaan untuk Sistem Layanan Kurir JNE
Pada Gambar 2.3, figur orang merepresentasikan aktor, yaitu pihak yang berhubungan secara langsung dengan sistem. Aktor berjumlah minimal satu orang. Pada contoh, terdapat dua aktor, yaitu karyawan dan pelanggan. Pada kotak, kasus penggunaan digambarkan dalam bentuk oval dan terhubung dengan aktor dengan garis. Detail dari kasus penggunaan tidak tercantum dalam diagram, namun dituliskan secara terpisah.
b. Diagram Aktivitas (Activity Diagram) Diagram aktivitas menggambarkan perilaku dinamis dari sistem dalam mengeksekusi tugas (Pressman, 2010, hal. 853). Diagram ini terdiri dari node tindakan yang digambarkan sebagai kotak berujung lengkung, yang merupakan suatu tugas yang dilakukan oleh sistem piranti lunak. Aliran kontrol ditunjukkan dengan tanda panah antara node tindakan satu ke node tindakan lainnya. Tanda panah ini menandakan bahwa setelah tindakan pada sumber panah selesai, maka tindakan pada tujuan panah dikerjakan. Titik hitam penuh menandakan mulainya suatu aktivitas, sedangkan titik hitam penuh dengan lingkaran di sekelilingnya menandakan usainya aktivitas tersebut. Sebuah aktivitas dapat bercabang menjadi dua atau lebih aktivitas yang berjalan secara bersamaan, ditandai dengan fork, yaitu bar horizontal hitam dengan sebuah tanda panah masuk mewakili aktivitas pendahulunya dan beberapa tanda panah keluar mewakili beberapa aktivitas berikutnya yang berjalan bersamaan. Sebaliknya, beberapa aktivitas dapat diikuti oleh hanya satu aktivitas dengan menggunakan bar hitam dengan beberapa tanda panah masuk dan satu tanda panah keluar, disebut sebagai join. Selain itu, terdapat
12 pula node yang merepresentasikan keputusan kondisional, digambarkan sebagai belah ketupat dengan dua atau lebih tanda panah keluar. Dalam diagram aktivitas, seringkali digambarkan swimlane berupa garis vertikal dengan nama pelaku aktivitas di bagian teratasnya, yang berguna untuk merepresentasikan pelaku jika terdapat lebih dari dari satu pelaku dalam diagram. Gambar 2.4 adalah contoh dari diagram aktivitas.
Gambar 2.4 Contoh Diagram Aktivitas Sebuah Mobil Keluar dari Lapangan Parkir
c. Diagram Kelas (Class Diagram) Diagram kelas memodelkan kelas, mencakup atribut, operasi, serta hubungan dan asosiasinya dengan kelas lainnya. Diagram ini bersifat statis dan struktural (Pressman, 2010, hal. 842). Diagram terbagi menjadi beberapa bagian. Bagian teratas berisi nama dari kelas. Bagian kedua berisi atribut kelas, yaitu sesuatu yang diketahui atau
13 disediakan oleh objek dari kelas. Atribut pada kelas dapat memiliki informasi tambahan berupa tipe atribut dan tingkat visibility. Tipe diletakkan mengikuti nama atribut atau operasi, dipisahkan dengan tanda titik dua (:). Tingkat visibility berupa tanda – untuk private, # untuk protected, ~ untuk package, atau + untuk public. Informasi tipe dan visibility adalah informasi pilihan, tidak harus ada. Bagian ketiga berisi operasi kelas, yaitu apa yang dapat dilakukan oleh objek dari kelas tersebut, yang diimplementasikan dalam bentuk metode. Operasi juga memiliki tingkat visibility, parameter dengan nama dan tipe dalam tanda kurung, serta tipe yang dikembalikan (return) di belakang, dipisahkan dengan tanda titik dua (:). Gambar 2.5 adalah contoh sebuah kelas pada diagram kelas.
Gambar 2.5 Contoh Kelas “Sepeda” pada Diagram Kelas Penyewaan Sepeda
Pada Gambar 2.5, “sepeda” menunjukkan nama kelas. Kelas tersebut memiliki empat atribut, yaitu id, tipe, merek, dan hargaSewa, serta lima operasi, yaitu setHargaSewa(), getHargaSewa(), getId(), getTipe(), dan getMerek(). Atribut id dan harga sewa memiliki tipe bilangan bulat, sedangkan atribut tipe dan merek memiliki tipe rangkaian huruf. Keempat atribut tersebut memiliki private visibility. Operasi setHargaSewa() memiliki parameter bilangan bulat. Keempat operasi lainnya akan mengembalikan nilai, dimana harga sewa dan id dalam tipe bilangan bulat, sedangkan tipe dan merek dalam bentuk rangkaian huruf. Diagram kelas juga menunjukkan hubungan antara kelas. Hubungan antara kelas dan sub-kelas ditandai dengan tanda panah dengan kepala kosong,
14 dimana panah mengarah kepada kelas yang superior. Hubungan ini disebut sebagai generalisasi. Terdapat pula hubungan asosiasi, ditandai dengan garis lurus dengan label nama. Hubungan lainnya, yaitu agregasi dan komposisi, melambangkan suatu kelas yang terdiri dari kelas-kelas lainnya, ditandai dengan tanda belah ketupat. Agregasi ditandai dengan belah ketupat kosong, sedangkan komposisi ditandai dengan belah ketupat berisi. Gambar 2.6 menunjukkan contoh dari sebuah diagram kelas
Gambar 2.6 Contoh Diagram Kelas Mengenai Kuda
d. Diagram Urutan (Sequence Diagram) Diagram urutan menunjukkan komunikasi dinamis antar objek dalam eksekusi dari suatu tugas (Pressman, 2010, hal. 848). Diagram ini menunjukkan urutan dimana pesan dikirimkan antar objek. Diagram urutan dapat digunakan untuk menunjukkan interaksi antar kasus penggunaan atau skenario sistem piranti lunak. Contoh diagram urutan terdapat pada Gambar 2.7.
15
Gambar 2.7 Contoh Diagram Urutan untuk Penyewaan Sepeda
Pada Gambar 2.7, ditunjukkan langkah-langkah penyewaan sepeda. Tiap kotak di baris paling atas diagram adalah objek. Kotak tersebut juga dapat diisi dengan kelas. Garis vertikal menandakan waktu. Garis horizontal menunjukkan pemanggilan metode, dimulai dari dari pemanggil sampai pada yang dipanggil. Garis ini disertai dengan nama metode yang dapat mencakup parameter, tipe, dan tipe yang dikembalikan. Ketika sebuah metode dieksekusi, bar aktivasi, yaitu kotak putih pada objek, akan muncul, juga dapat disertai dengan nilai yang dikembalikan dari metode.
2.1.4 Interaksi Manusia dan Komputer Interaksi manusia dan komputer adalah suatu aturan mengenai desain, evaluasi, dan implementasi dari sistem komputer interaktif yang digunakan oleh manusia, serta pembelajaran mengenai hal tersebut (Hewett, et al., 1992). Interaksi manusia dan komputer sangat bergantung pada penyusunan sistem antar muka grafis. Ben Shneiderman (2005, hal. 74-75) menyebutkan delapan aturan emas dalam menyusun sistem antar muka, yaitu sebagai berikut ini.
16 a. Konsistensi Konsisten berarti adanya penggunaan tindakan yang sama pada situasi yang serupa, istilah yang sama pada prompt, menu, dan halaman bantuan, serta kesamaan warna, penyusunan, kapitalisasi, huruf, dan lain sebagainya.
b.
Penggunaan Universal Penyusun sistem antar muka harus mempertimbangkan adanya keragaman tingkatan kemampuan pengguna dimulai dari pemula hingga seseorang yang sudah ahli dalam konteks yang berhubungan, rentang umur, serta teknologi yang digunakan. Fitur-fitur seperti penjelasan untuk pemula dan shortcut untuk mempercepat navigasi bagi seorang ahli dapat meningkatkan kualitas sistem yang dibuat.
c. Umpan Balik yang Informatif Untuk tiap tindakan yang dilakukan oleh pengguna, harus terdapat umpan balik yang sesuai. Untuk tindakan kecil dan sering, umpan balik yang diberikan bersifat sederhana. Sedangkan untuk tindakan yang lebih besar, umpan balik cenderung lebih besar pula. Pada sistem yang baik, perubahan yang eksplisit harus ditunjukkan secara visual pada objek yang berhubungan.
d. Adanya Dialog Penutup Urutan tindakan pada sistem harus terorganisir menjadi bagian awal, tengah, dan akhir. Pada akhir dari tiap kumpulan tindakan, dapat diberikan dialog penutup sehingga pengguna memperoleh kepuasan pencapaian, kelegaan, menghilangkan beban pikiran, dan mempersiapkan kumpulan tindakan selanjutnya.
e. Mencegah Kesalahan Sistem yang didesain harus mencegah kesalahan yang dapat dilakukan pengguna menjadi seminimal mungkin. Misalnya, pembedaan warna pada menu yang tidak dapat dipilih dan tidak memungkinkan masukan berupa huruf pada kolom yang harus diisi dengan angka. Jika pengguna melakukan kesalahan, maka sistem antar muka harus memberikan instruksi untuk perbaikan yang mudah, membangun, dan spesifik.
17
f. Menyediakan Tindakan Pengembalian yang Mudah Contoh tindakan pengembalian adalah pembatalan tindakan tertentu yang tidak diinginkan.
Tindakan
yang
dapat
dibatalkan
dapat
menghilangkan
kekhawatiran pengguna untuk melakukan tindakan yang baru.
g. Mendukung Pusat Kontrol Internal Operator yang telah berpengalaman memiliki keinginan untuk memegang kontrol atas sistem antar muka, serta agar sistem mampu merespon tindakan yang dilakukannya. Hal-hal yang harus dihindari adalah tindakan yang mengejutkan dari sistem antar muka, pemasukan data yang banyak dan membosankan, kesulitan memperoleh informasi penting, dan ketidakmampuan untuk menghasilkan tindakan yang diinginkan.
h. Mengurangi Beban Ingatan Jangka Pendek Ingatan manusia bersifat terbatas. Karena itu, tampilan harus sesederhana mungkin dengan sedikitnya jumlah perpindahan halaman. Jika dibutuhkan, dapat ditambahkan akses daring untuk informasi sintaks, singkatan, kode, dan lain-lain.
2.1.5 Python Python adalah salah satu bahasa pemrograman multi paradigma yang mendukung pemrograman berorientasi objek, prosedural, dan fungsional (Kuchling, 2015). Hal ini memungkinkan suatu program ditulis dalam beberapa pendekatan sekaligus. Misalnya, antar muka grafis dibuat dalam bentuk orientasi objek, sedangkan pemrosesan dalam bentuk fungsional atau prosedural. Python disusun oleh Guido van Rossum. Van Rossum memulai pengerjaan Python pada akhir dekade 1980, di “Institusi Riset Matematika dan Ilmu Komputer Nasional” (Centrum voor Wiskunde en Informatica), Belanda (Venners, 2003). Sejak saat itu, Python menjadi sangat terkenal di kalangan penyusun program. Python memberikan berbagai fitur seperti variasi tipe data, penggunaan kelas, penggabungan kode ke dalam bentuk modul dan paket, penggunaan
18 pengecualian dalam menangani kesalahan, tipe data yang kuat dan dinamis, dan otomasi manajemen memori. Holden (2015) menyebutkan beberapa kelebihan dari bahasa ini, antara lain : - Sintaks yang elegan, sehingga kode yang telah ditulis mudah untuk dibaca - Bahasa yang mudah digunakan, sehingga banyak digunakan untuk pembuatan prototype - Banyaknya jumlah library standar - Interaktif, sehingga kode pendek dapat diuji dengan mudah - Mudahnya ekstensi dengan modul - Dapat ditanamkan pada aplikasi untuk membuat antar muka yang dapat diprogram - Dapat digunakan pada berbagai sistem operasi, termasuk Windows, MacOS, dan lain sebagainya - Bersifat open source Dalam penyusunan program, versi Python yang digunakan adalah Python 2.7.9.0. Beberapa library dalam Python yang digunakan adalah sebagai berikut ini :
a. NumPy NumPy adalah paket Python untuk komputerisasi sains. Paket ini mencakup aplikasi array dan aljabar linear, transformasi Fourier, dan kemampuan angka acak (NumPy Developers, 2013). NumPy dapat digunakan untuk menampung data dalam bentuk multi dimensi, sehingga mudah diintegrasikan dengan berbagai jenis basis data. Dalam penyusunan program, NumPy yang digunakan adalah versi 1.8.2-7.
b. SymPy SymPy adalah library Python untuk matematika simbolis yang bertujuan untuk menyediakan sistem aljabar komputer (SymPy Development Team, 2013). SymPy memberikan berbagai fitur, seperti : - Polinomial, seperti faktorisasi, kelipatan persekutuan terbesar, faktor persekutuan terkecil, dan pembagian fungsi - Kalkulus, mencakup diferensial, integral, limit, dan deret Taylor - Kombinatorika, contohnya kombinasi, permutasi, dan subset
19 - Statistik - Matriks, yaitu nilai dan vektor eigen, determinan, inversi, dan lain-lain - Plot, dimana SymPy yang digabungkan dengan library Matplotlib dapat menghasilkan gambar dari fungsi tertentu - dan berbagai fitur matematika lainnya Dalam penyusunan program, SymPy yang digunakan adalah versi 0.7.66.
c. Matplotlib Matplotlib adalah library untuk membuat plot dua dimensi (The Matplotlib Development Team, 2015). Hasil dapat ditampilkan dalam bentuk sebaran titik-titik, diagram garis, diagram batang, histogram, spektrum, dan lain-lain. Penyusun program juga memiliki kontrol atas model titik, garis, bidang, huruf, sumbu, dan berbagai unsur lainnya dalam tampilan hasil. Matplotlib juga mencakup mplot3D, sehingga hasil yang dapat ditampilkan tidak hanya berbentuk dua dimensi, namun juga tiga dimensi (The Matplotlib Development Team, 2015). Hasil mplot3D bersifat interaktif, memungkinkan pengguna untuk memperbesar dan memperkecil, serta melakukan rotasi pada gambar. Dalam penyusunan program, Matplotlib yang digunakan adalah versi 1.4.2-6.
2.1.6 PyQt PyQt adalah binding untuk aplikasi Qt buatan Digia yang dapat digunakan pada berbagai sistem operasi, termasuk Windows, MacOS, dan Linux (Riverbank Computing Limited, 2015). Kelas pada Qt menggunakan mekanisme sinyal komunikasi antar objek yang aman namun berpasangan secara longgar, sehingga komponen piranti lunak yang dapat digunakan berulang-ulang dapat dengan mudah dibuat. Qt juga mencakup Qt Designer, yaitu sebuah aplikasi yang untuk mendesain antar muka grafis. Qt Designer memungkinkan pembuatan widget, dialog, dan main window lengkap dengan hanya melakukan drag-and-drop pada form (Python Software Foundation, 2015). Dengan menggunakan Qt
20 Designer, tiap perubahan pada halaman yang telah dibuat dapat dilihat secara langsung. Berkas yang dibuat dalam Qt Designer dapat diubah menjadi berkas Python. Kontrol terhadap antar muka grafis yang dibuat dapat ditambahkan dalam bentuk kode Python. Hal ini menjadi suatu kelebihan dari PyQt, dimana kemudahan desain yang disediakan oleh Qt dapat dimanipulasi dengan bahasa Python yang cenderung mudah dipelajari. Tampilan aplikasi Qt Desainer ditunjukkan pada Gambar 2.8.
Gambar 2.8 Tampilan Qt Designer
Dalam penyusunan program, digunakan PyQt4 versi 4.9.6-4 dan Qt Designer 4.8.4.
2.1.7 Persamaan Diferensial Persamaan diferensial adalah suatu persamaan untuk fungsi tertentu, yang menghubungkan nilai fungsi tersebut dengan derivatifnya (Chasnov, 2009, hal. 11). Menurut Chasnov, derivatif, atau turunan suatu fungsi (misalkan fungsi
), didefinisikan sebagai penurunan garis tangen terhadap
21 kurva
pada titik
tersebut disebut sebagai
. Derivatif dari fungsi satu peubah dari fungsi atau
.
Istilah persamaan diferensial parsial digunakan untuk merujuk kepada persamaan dengan fungsi yang bergantung pada dua atau lebih variabel bebas. dan persamaan gelombang
Contohnya seperti persamaan difusi dimana
adalah fungsi
.
Persamaan diferensial juga dapat digolongkan sebagai persamaan linear dan non-linear. Persamaan diferensial disebut linear jika di dalam persamaan tersebut, fungsi tak bebas muncul secara linear, dimana koefisien dari variabel tak bebas tersebut merupakan variabel bebas terhadapnya. Jika persamaan tidak dapat direpresentasikan sedemikian, maka persamaan tersebut disebut nonlinear. Pernyelesaian persamaan diferensial non-linear cenderung lebih sulit dari penyelesaian linear.
2.1.8 Metode Beda Hingga Metode beda hingga adalah salah suatu metode yang dapat digunakan untuk memecahkan persamaan diferensial, terutama pada permasalahan persamaan diferensial partial bersifat non-linear yang tidak dapat dipecahkan secara analitik (Chaudhry, 2008, hal. 368). Konsep dasar metode ini adalah membentuk grid ruang dan waktu. Grid digunakan sebagai acuan untuk menemukan solusi pada tempat dan waktu tertentu, yang direpresentasikan sebagai titik di dalam grid tersebut. Metode beda hingga mengaplikasikan penggunaan deret Taylor. Bentuk dari deret Taylor adalah sebagai berikut :
22
(2. 1)
(2. 2) Terdapat tiga aproksimasi yang digunakan dalam metode beda hingga, yaitu beda maju (forward difference), beda mundur (backward difference), dan beda pusat (central difference), masing-masing didasarkan pada penurunan deret Taylor orde 1.
a. Beda Maju Metode ini berdasarkan dengan penurunaan deret Taylor (2.1) dimana untuk orde pertama berlaku (2.3)
(2.4) (2.5)
b. Beda Mundur Metode ini berdasarkan dengan penurunaan deret Taylor (2.2), dimana untuk orde pertama berlaku : (2.6)
(2.7) (2.8)
23 c. Beda Pusat Jika kita mengurangi persamaan beda maju dengan beda mundur, maka diperoleh (2.9)
(2.10) (2.11)
Pada persamaan di atas, diaproksimasikan sebagai
adalah turunan fungsi f terhadap x dan dapat
. fi mewakili nilai f pada titik xi. Dalam solusi
numerik yang dihasilkan, terdapat error yang disebut error diskritisasi atau error pemotongan. Error ini terjadi karena adanya batasan orde dari deret Taylor yang digunakan, dilambangkan sebagai
pada persamaan (2.4)
dan (2.7). Metode beda hingga dapat digunakan sebagai salah satu cara penyelesaian masalah derivatif parsial. Misalkan terdapat fungsi dan adalah variabel bebas. Maka, dapat dibuat bidang 2.9, dimana i adalah indeks dari
dimana seperti Gambar
dan j adalah indeks dari .
Gambar 2.9 Grid Metode Beda Hingga (Chaudhry, 2008, hal. 371)
Metode beda hingga dapat dibagi menjadi dua jenis, yaitu :
24
a. Beda Hingga Eksplisit Pada metode ini, variabel yang digunakan adalah pada waktu yang telah diketahui, yaitu k, sehingga diperoleh : Maju :
(2.12)
Mundur : (2.13)
Pusat : (2.14)
b. Beda Hingga Implisit Pada metode ini, variabel yang digunakan adalah pada waktu yang tidak diketahui,
, sehingga diperoleh :
Maju :
(2.15)
Mundur : (2.16)
Pusat : (2.17)
2.2
Teori Khusus Berikut ini adalah beberapa teori khusus yang digunakan dalam penelitian dan penyusunan program.
2.2.1 Konsep Dasar Aliran Air Kanal Air, sebagai salah satu zat cair, dapat dialirkan dari suatu tempat ke tempat lainnya melalui saluran, yang seringkali disebut sebagai kanal air.
25 Kanal, menurut Christopher Marriage Marsh (2015) adalah jalur air alami atau buatan yang digunakan untuk navigasi, irigasi, pasokan air, atau drainase. Kanal sebagai saluran air dapat terbagi menjadi dua bentuk menurut permukaannya. Yang pertama adalah saluran tertutup, dimana permukaan air tidak terpengaruh oleh tekanan atmosfer secara langsung, seperti yang dapat dijumpai pada pipa dan terowongan air. Sedangkan bentuk kedua adalah saluran terbuka, seperti pada sungai dan estuari (Chaudhry, 2008, hal. 2). Perbedaan kedua bentuk tersebut tampak pada Gambar 2.10.
Gambar 2.10 Kanal Permukaan Tertutup (Kiri) dan Terbuka (kanan) (Chaudhry, 2008, hal. 2)
Aliran air pada saluran terbuka dapat diklasifikasikan lebih lanjut, yaitu seperti dijelaskan sebagai berikut ini. - Aliran tunak (steady) dan tak tunak (unsteady) Aliran disebut tunak jika kecepatan alirannya tidak berubah menurut waktu. Sedangkan jika kecepatan berubah menurut waktu, maka disebut aliran tak tunak (Chaudhry, 2008, hal. 5). Pada aliran tunak, percepatan lokal, yaitu bernilai nol di semua titik sepanjang kanal. - Seragam (uniform) dan tak seragam (varied, non-uniform) Aliran tak seragam adalah aliran dimana kecepatan aliran berubah menurut jarak titik tersebut dengan titik awal. Jika kecepatan tidak berubah menurut jarak, maka aliran disebut seragam (Chaudhry, 2008, hal. 7). Pada Tabel 2.1, ditunjukkan pengaruh tipe aliran air sesuai klafisikasi yang telah diuraikan terhadap kecepatan dan kedalaman aliran airnya, dimana
26 melambangkan kecepatan,
melambangkan jarak titik yang dipantau dari
hulu, melambangkan waktu, dan
melambangkan kedalaman.
Tabel 2.1 Tipe Aliran, Kecepatan, dan Kedalaman Aliran Tipe aliran Seragam
Kecepatan konstan
Kedalaman = konstan
Tunak Tak seragam Seragam Tak tunak Tak seragam
Pada aliran tunak seragam, kecepatan aliran dan kedalaman konstan atau selalu sama di setiap titik sepanjang kanal. Sedangkan pada aliran tunak tak seragam, kecepatan dan kedalaman berubah sesuai dengan jarak titik dari hulu, sehingga berupa fungsi dari . Pada aliran tak tunak seragam, kecepatan dan kedalaman aliran berubah sesuai dengan waktu saja. Sedangkan pada aliran tak tunak tak seragam, kecepatan dan kedalaman berubah sesuai dengan jarak titik dari hulu dan waktu. Suatu kanal dengan penampang yang tidak berubah di seluruh titik sepanjang kanal dan memiliki kemiringan pada bagian dasarnya seringkali disebut kanal prismatik. Beberapa properti pada kanal prismatik adalah lebar permukaan kanal ( ), luas penampang kanal yang terisi air ( ), dan keliling pada penampang kanal yang terbasahi ( ). Pada Gambar 2.11, ditunjukkan properti sungai tersebut.
27
Gambar 2.11 Properti
, , dan
pada Penampang Kanal
Beberapa properti lainnya yang menjadi turunan dari properti sebelumnya adalah radius hidraulik ( ) dan kedalaman hidraulik (
), yang
dapat didefinisikan sebagai berikut : (2.18)
(2.19)
= lebar permukaan kanal = luas penampang kanal yang terisi air = keliling pada penampang kanal yang terbasahi = radius hidraulik = kedalaman hidraulik
Selain beberapa properti yang telah dipaparkan sebelumnya, terdapat pula properti celerity. Celerity diartikan sebagai kecepatan gelombang relatif terhadap kecepatan medium dimana gelombang bergerak (Chaudhry, 2008, hal. 60). Celerity didefinisikan sebagai (2.20) = celerity = percepatan gravitasi
28 = kedalaman air
2.2.2 Persamaan Saint-Venant Untuk kanal aliran terbuka, properti air pada penampang kanal, seperti kedalaman aliran, kecepatan aliran air, atau debit air, dapat dianalisa melalui dua persamaan dasar, yaitu persamaan kontinuitas dan persamaan momentum. Kedua persamaan tersebut disebut sebagai persamaan Saint-Venant, atau yang lebih sering dikenal sebagai persamaan air dangkal atau shallow water equation (Chaudhry, 2008, hal. 334). Persamaan ini pertama kali dicetuskan oleh Adhémar Jean Claude Barré de Saint-Venant, seorang matematikawan dari Prancis, pada tahun 1800-an. Persamaan air dangkal dapat diturunkan melalui beberapa prosedur. Salah satunya adalah menggunakan teorema transpor Reynolds untuk kanal prismatik dengan aliran masuk (inflow) dan aliran keluar (outflow) lateral. Pada penurunannya, dibuat beberapa asumsi sebagai berikut : - Tekanan hidrostatis, dimana tidak terdapat belokan tajam pada aliran - Kemiringan dasar pada kanal kecil - Properti aliran air pada sebuah penampang kanal seragam, dengan kata lain, properti air pada titik tertentu sama semua dengan titik lain yang berjarak sama dari hulu. - Kanal berbentuk prismatik, dimana kemiringan dasar dan bentuk penampang sungai tidak berubah di sepanjang kanal - Head loss pada aliran tak tunak disimulasikan dengan hukum resistansi, yaitu persamaan Manning. Persamaan transpor Reynolds yang menggambarkan variabel aliran pada suatu sistem, memiliki bentuk sebagai berikut : (2.21) (2.22) = properti ekstensif dari sistem yang diamati = properti intensif dari sistem yang diamati
29 = kerapatan massa = volume = kecepatan aliran air = massa = waktu
a. Persamaan Kontinuitas Persamaan kontinuitas diturunkan dengan menggunakan persamaan Reynolds dimana
dan
. Bentuk persamaan (2.21) dan (2.22)
menjadi (2.23) = massa = rate volumetrik dari aliran masuk dan aliran keluar lateral per unit jarak
dimana 1 dan 2 melambangkan dua buah titik penampang. Dalam hukum konservasi massa, diketahui bahwa
, sehingga
persamaan (2.23) dapat dikembangkan ke dalam bentuk (2.24) dengan membagi kedua sisi dengan , maka (2.25) dan karena debit
dapat dinyatakan dengan persamaan
, maka (2.26)
Hukum Leibnitz menyatakan bahwa
(2.27)
30 dengan mensubstitusikan hukum Leibnitz ke persamaan (2.26) dan karena dan
kontinu terhadap
dan , maka diperoleh (2.28)
Dengan mengaplikasikan teorema nilai rata-rata (mean value theorem), yang menyatakan bahwa ,
(2.29)
maka persamaan (2.28) dapat diubah menjadi (2.30) Jika pada kanal yang diamati tidak terdapat aliran masuk dan aliran keluar lateral, maka persamaan kontinuitas yang berlaku adalah (2.31) dan karena
, maka berlaku (2.32)
Dengan mengaplikasikan aturan rantai pada suku kedua dari persamaan (2.32) dan mengaplikasikan sedikit manipulasi aljabar, maka diperoleh (2.33) Karena penampang kanal adalah persegi panjang, maka berlaku (2.34) dimana
adalah konstan di sepanjang sungai. Dengan mensubstitusikan
persamaan (2.34) ke persamaan (2.33), dan menurut persamaan (2.19) mengenai kedalaman hidraulik, maka diperoleh (2.35)
(2.36)
31 b. Persamaan Momentum Persamaan momentum diturunkan dengan menggunakan persamaan Reynolds dimana
adalah momentum pada volume kontrol,
, dan
. Hukum kedua Newton menyebutkan bahwa rate perubahan momentum terhadap waktu bernilai sama dengan jumlah gaya yang berlaku pada suatu volume kontrol. Pernyataan tersebut dapat dinyatakan sebagai (2.37) = gaya
Dengan mensubstitusikan persamaan tersebut ke teorema transpor Reynolds, diperoleh (2.38 ) dan jika kedua sisi dibagi dengan
, maka persamaan ini menjadi (2.39)
Dengan mensubstitusikan teorema nilai rata-rata didapat bahwa (2.40) Pada kontrol volume, terdapat empat gaya yang berpengaruh, yaitu tekanan pada hulu, tekanan pada hilir, gaya berat pada air searah dengan sumbu x, dan gaya gesek antara air dengan sisi dan dasar kanal. Keempat gaya tersebut secara berurutan direpresentasikan sebagai berikut : (2.41) (2.42) (2.43) (2.44)
32 = kedalaman sentroid aliran = kemiringan dasar kanal = kemiringan gesekan kanal
Dengan tanda positif berarti gaya searah dengan arah aliran dan negatif untuk gaya yang berlawanan arah dengan arah aliran, maka total gaya yang bekerja pada volume atur adalah (2.45) Sehingga dengan mesubstitusikan persamaan (2.45) ke persamaan (2.40) diperoleh (2.46) Dengan mesubstitusikan teorema nilai rata-rata pada suku kedua dari sisi kiri, diperoleh (2.47) (2.48) (2.49) Jika pada kanal yang diamati tidak terdapat aliran masuk dan aliran keluar lateral, maka persamaan momentum yang berlaku adalah (2.50) dan dengan mensubstitusikan
, maka berlaku (2.51)
Karena
adalah pusat dari penampang aliran air, maka (2.52)
Dengan mensubstitusikan persamaan (2.52) ke persamaan (2.51), diperoleh bahwa (2.53)
33 Dan jika kita menggunakan aturan rantai pada suku pertama dan kedua dari persamaan, persamaan tersebut menjadi (2.54 ) (2.55 ) (2.56 ) Dengan mensubstitusikan persamaan (2.33) ke suku di dalam kurung, maka (2.57) (2.58) Persamaan (2.36) dan (2.58) disebut sebagai persamaan Saint-Venant tanpa aliran masuk dan aliran keluar lateral. Persamaan ini tidak memiliki solusi analitik, namun dapat diselesaikan dengan beberapa metode, seperti metode karakteristik dan metode beda hingga.
2.2.3 Koefisien Manning Persamaan Manning, disebutkan oleh A. Flamant kepada R. Manning pada tahun 1891, dalam bentuk (2.59) = koefisien Manning (satuan
)
(Chaudhry, 2008, hal. 94). Nilai koefisien Manning bergantung pada beberapa hal, seperti kasarnya permukaan kanal, vegetasi, kekeruhan air, erosi, endapan, dan lain-lain. Dalam Tabel 2.2 ditunjukkan beberapa contoh nilai koefisien Manning yang umum.
34
Tabel 2.2 Koefisien Manning (Chaudhry, 2008, hal. 95) Bahan
Nilai n
Baja
0,012
Besi cor
0,013
Logam bergelombang
0,025
Kaca
0,010
Semen
0,011
Beton
0.013
Kayu
0,012
Tanah liat
0,013
Bata
0,013
Potongan batu
0,035
Sungai alami lurus yang bersih
0,030
Sungai dengan dasar berbatu dan kerikil
0,040
Sungai dengan dasar batuan besar
0,050
2.2.4 Skema Difusif Lax Skema difusif adalah suatu metode pemecahan masalah persamaan diferensial parsial hiperbolik berdasarkan skema eksplisit, khususnya persamaan Saint-Venant. Persamaan eksplisit awal yang digunakan adalah : (2.60) (2.61) Lax memberikan beberapa modifikasi pada persamaan ekspilisit tersebut, sehingga persamaan (2.60) dan (2.61) menjadi : (2.62) (2.63) (2.64)
35 Chaudry menyebutkan bahwa modifikasi tersebut mudah diaplikasikan dan mampu memberikan hasil yang sesuai (Chaudhry, 2008, hal. 372).
2.2.5 Angka Courant Kondisi Courant-Fredriches-Lewy atau yang biasa disebut sebagai angka Courant adalah suatu kondisi yang harus dipenuhi untuk mencapai stabilitas pada metode beda hingga, yaitu konvergensi dalam perhitungan. Angka Courant merupakan perbandingan kecepatan fisik gelombang dengan kecepatan sinyal numerik (Devi, 2013). Pada metode beda hingga, khususnya pada beda hingga ekpslisit, kondisi angka Courant harus dipenuhi untuk setiap titik pada grid. Secara perhitungan, langkah waktu harus sekecil mungkin untuk memenuhi syarat. Pada skema Lax, stabilitas dicapai apabila angka Courant memenuhi syarat (2.65) = angka Courant (Chaudhry, 2008, hal. 375).