• Tidak ada hasil yang ditemukan

BAB IV HASIL PENELITIAN DAN PEMBAHASAN

D. Pembahasan

tinjauan. Kecepatan awal aliran air yang masuk ke sel pusat diasumsikan ( ).

b) Pada saat , menghitung volume air yang masuk ke sel pusat, ( ) . Pada saat ini, sel pusat berpeluang untuk mengalirkan air ke sel tetangga yang nilai ketinggiannya lebih rendah.

Step Kedua:

a) Memeriksa ( ), jika ( ) maka tidak ada air yang dapat dialirkan ke sel tetangga karena semua air yang masuk terserap ke dalam tanah pada sel tinjauan. Proses kembali ke Step 1b) untuk

Jika ( ) maka proses akan dilanjut ke Step Ketiga dimana

( ) ( ) … (4.6)

untuk ( ) pada keadaan awal, maka berlaku ( )

( ). Step Ketiga

1. Memeriksa sel-sel tetangga dari sel tinjauan ( ), sel tetangga dibagi menjadi tiga kondisi sebagai berikut:

a. Jika terdapat sel tetangga yang lebih rendah daripada sel tinjauan ( ) maka akan ditentukan banyaknya volume air yang dapat dialirkan ke sel tetangga yang lebih rendah

berdasarkan kecepatan aliran air dari sel tinjauan ( ) ke masing-masing sel tetangga yang akan dituju.

Gambar 26. Ilustrasi kondisi sel tetangga lebih rendah daripada sel pusat

1) Mengitung nilai-nilai Bernoulli sel tetangga yang telah ditentukan, dimana nilai-nilai Bernoulli tersebut merupakan kecepatan aliran air dari sel tinjuan ke sel tetangga ( ).

( ) ( ) √ ( ( ) ( )) ( ), …(4.7) dimana ( ) ( )

2) Menghitung volume air yang akan didistribusikan ( ) ke masing-masing sel tetangga yang lebih rendah berdasarkan kecepatan air yang diperoleh pada Step 3a 1).

( ) ( ) ( ) ( )

… (4.8)

Dimana ( ) ( ), ( ) ( )= Volume air yang keluar dari sel pusat ke sel tetangga pada posisi tertentu,

( ) ( )

= kecepatan aliran air dari sel pusat ke sel tetangga yang merupakan nilai Bernoulli.

Air dari sel pusat ke tetangga

b. Jika semua sel tetangga lebih tinggi daripada sel tinjauan ( ) maka akan dihitung daya tampung sel ( ) yaitu hasil kali luas sel ( ) dengan kedalaman sel ( ), atau dinyatakan sebagai

( ) ( ) ( ) … (4.9)

Sehingga banyaknya air yang dapat dialirkan ke sel tetangga

( ) dapat diperoleh dengan

( ) ( ) ( ) … (4.10)

Gambar 27. Ilustrasi kondisi semua sel tetangga lebih tinggi daripada sel pusat

1) Jika ( ) maka terdapat air yang akan dialirkan ke sel tetangga. Proses dilanjutkan ke Step 3c.

2) Jika ( ) maka tidak ada air yang dapat dialirkan ke sel tetangga. Menghitung perubahan kedalaman sel ( ( )), yaitu ( ) ( )

( ) . Proses kembali ke Step 1b untuk

.

c. Jika terdapat sel tetangga yang = sel tinjauan ( ) dan sel tetangga lainnya lebih tinggi daripada sel tinjauan ( ) maka

( ) akan didistribusikan ke sel tersebut berdasarkan kecepatan aliran yang diperoleh dari nilai Bernoulli

dh Air masuk ke sel pusat

menggunakan Pers.(1). Proses kembali ke Step 1b untuk .

Gambar 28. Ilustrasi kondisi ada sel tetangga memiliki ketinggian yang sama dengan sel pusat

Jika ( ) dialiri air lebih dari satu sel yang berstatus 1, maka

( ) ( ) ( ) … (4.11)

2. Meng-update nilai elevasi tiap-tiap sel pada peta tinjauan ( ) ( )

( ) … (4.11.a)

Sehingga pada timestep berikutnya, t+1, nilai elevassi setiap sel menjadi

( )( ) ( )( ) ( ) … (4.11.b) C0 = Keadaan awal sel.

2. Implementasi Sistem

a. Simulasi Penentuan Arah Aliran dan Distribusi Air dengan Algoritma Multiple Flow Direction (MD8)

Berikut adalah contoh perubahan status sel dalam simulasi sederhana aliran air dan distribusi air dengan menerapkan persamaan

Air dari sel pusat ke tetangga

Bernoulli dan algoritma Multiple Flow Direction (MD8). Adapun status sel pada setiap timestep ditunjukkan sebagai berikut:

(i) Sel dengan warna birudengansel berstatus 1, artinya berisi air yang dapat didistribusikan ke sel tetangganya.

(ii) Sel dengan warna birudengansel berstatus 0, artinyasel telah dialiri air tetapi tidak ada air yang dapat didistribusikan ke sel tetangganya.

(iii) Sel yang tidak berwarna berarti tidak berisi air.

Gambar input : Peta Sinjai dengan dimensi 583×383 Input : Curah hujan = 0.1 m

Daya serap = 0.25 Durasi hujan = 5 sekon Titik awal = (321,164) 1) Step Pertama

Contoh simulasi dibuat dengan dimensi sel 583 x 383. Luas masing-masing sel berdasarkan data raster peta adalah 92.4 . Setiap timestep berdurasi 1 sekon. Dikarenakan curah hujan sebesar 0.1 m maka setiap timestep volume air yang masuk ke sel pusat sebesar 9.24 , yaitu hasil kali curah hujan dengan luas sel.

Daerah tinjauan digambarkan pada tabel 1(a), pada saat t0 atau pada t=0 belum ada air yang masuk ke dalam daerah tinjauan. Sel pusat terletak pada sel (321,164) dengan nilai elevasi sebesar 658 m dan kedalaman sel yaitu 0 m sehingga memiliki daya tampung sebesar 0 m3.

Proses peng-inputan parameter tersebut pada sistem yang dibuat dapat digambarkan pada listing program berikut:

Listing Program menginput parameter

this.data = data.clone();

int X=this.data.length;

int Y=this.data[0].length;

this.titikHujan=newint[X][Y];

for(int i=0;i<titikHujan.length;i++){

int xi=titikHujan[i][0];

int yi=titikHujan[i][1];

this.titikHujan[xi][yi]=1;

}//end of for i

this.luasArea = luasArea;

this.curahHujan = curahHujan;

this.dayaSerap = dayaSerap;

this.durasiHujan = durasiHujan;

this.luasCell = this.luasArea/((double)(X*Y));

this.volumeHujan = this.curahHujan*this.luasCell;

this.cells = newdouble[X][Y];

this.volumeCells = newdouble[X][Y];

this.velocityCells = newdouble[X][Y];

this.status = newint[X][Y];

this.history = newint[X][Y];

for(int i=0;i<X;i++){

for(int j=0;j<Y;j++){

this.cells[i][j]=data[i][j];

}//end of for j }//end of for i

this.proses();

Listing Program menghitung volume air yang masuk ke sel

double volumeIn =volumeCellsProses[xp][yp];

double velocityIn =velocityCellsProses[xp][yp];

volumeCellsProses[xp][yp] =0;

velocityCellsProses[xp][yp] =0;

statusProses[xp][yp] =0;

double volumeAlir=volumeIn-this.dayaSerap;

/////-- --- --- --- --- --- --- --- -- --

UserInterface.jTextAreaInformasiProses.append("volumeIn("+(x p)+","+(yp)+")="+(volumeIn)+"\n");

UserInterface.jTextAreaInformasiProses.append("velocityIn("+

(xp)+","+(yp)+")="+(velocityIn)+"\n");

UserInterface.jTextAreaInformasiProses.append("volumeAlir("+

(xp)+","+(yp)+")="+(volumeAlir)+"\n");

2) Step Kedua

Pada saat , volume air yang masuk ke sel pusat sebesar dengan kecepatan aliran ⁄ . Karena jumlah air yang masuk ke sel sebanyak atau sesuai pers.(4.6) maka

( ) ( ) … (4.12)

Proses akan dilanjut ke Step Ketiga.

Listing Program menghitung volume air yang dapat dialirkan

3) Step Ketiga

Memeriksa sel-sel tetangga dari sel tinjauan ( ), terdapat sel tetangga yang lebih rendah dari sel ( ) yaitu sel ( ) dengan ketinggian 652, ( ) dengan ketinggian 651 dan, ( ) dengan ketinggian 653.

Selanjutnya akan ditentukan besar kecepatan aliran air dari sel tinjauan ( ( )) ke masing-masing sel tetangga tersebut, yang diperoleh dari nilai-nilai Bernolli dengan menggunakan Pers.(2.5) yaitu:

( ) ( ) √ ( ( ) ) ( ) sehingga diperoleh

if(volumeAlir>0){

Titik[][] tetangga=this.getTetangga(cellTinjauan);

double[][] cells33=getCells(tetangga, cellsProses);

double[][]selisih=getSelisihCell(cells33);

( ) ( ) √ ( ( ) ( )) ( ) √ ( )

( ) ( ) √ ( ( ) ( )) ( ) … (4.13) √ ( )

( ) ( ) √ ( ( ) ( )) ( ) √ ( )

Berikut listing program untuk menghitung kecepatan aliran air dari sel pusat menuju sel tetangga yang ketinggiannya lebih rendah.

Listing Program menghitung kecepatan aliran air

private double[][]getVelocityOut(double velocityIn, double[][]selisih){

double[][]velocityOut=new double[3][3];

for(int i=0;i<3;i++){

for(int j=0;j<3;j++){

if((!((i==1)&&(j==1)))&&(selisih[i][j]>0)){

double delta_h=selisih[i][j];

double v1=velocityIn;

double

v2=Math.sqrt((2*this.g*delta_h)+v1);//pers bernoulli velocityOut[i][j]=v2;

System.out.println("velocityOut[i][j]:

"+(velocityOut[i][j]));

Berdasarkan kecepatan aliran yang telah diperoleh yaitu pada Pers.(4.13) dan telah diketahui pada Pers.(4.12) ( ) , dengan menggunakan Pers.(4.8) maka dapat diketahui jumlah volume air yang dialirkan ke masing-masing sel tetangga yaitu:

( ) ( )

( ) ( )

( ) ( ) ( ) ( )

( ) ( )

( ) ( ) ( ) ( )

( ) ( )

( ) ( ) ( ) ( )

( ) ( )

Berikut listing program untuk memeriksa sel tetangga dimana keadaan sel tetangga terbagi menjadi tiga keadaan.

Listing Program memeriksa sel tetangga

if(isCellLebihRendahdariCellPusat(selisih)){

//distribusikan air menggunakanpersamaanbernoulli System.out.println("-a-");

double[][]velocityOut=getVelocityOut(velocityIn, selisih);

double sigmaVelocityOut=getSigmaVelocityOut(velocityOut);

double[][]volumeOut=getVolumeOut(velocityOut, sigmaVelocityOut, volumeAlir);

for(int i=0;i<3;i++){

for(int j=0;j<3;j++){

if(volumeOut[i][j]>0){

int x=tetangga[i][j].getX();

int y=tetangga[i][j].getY();

volumeCellsProses[x][y]=volumeCellsProses[x][y]+v olumeOut[i][j];

if(volumeCellsProses[x][y]>this.dayaSerap){

nextStatus[x][y]=1;

System.out.println("nextStatus["+(x)+"]["+(y)+"]

=1");

} ///-- --- --- --- --- --- --- --- -- --

UserInterface.jTextAreaInformasiProses.append("volumeOut -->

("+(x)+","+(y)+")="+(volumeOut[i][j])+" maka ");

UserInterface.jTextAreaInformasiProses.append("volumeCellsProses("

+(x)+","+(y)+")="+(volumeCellsProses[x][y])+"\n");

/////-- --- --- --- --- --- --- --- -- --

}//end of if(volumeOut[i][j]==0)}//end of for j

}//end of for i

}elseif(isCellSejajardenganCellPusat(selisih)){

//distribusikan air menggunakanpersamaanbernoulli System.out.println("-b-");

int nCellSejajar=getNCellSejajardenganCellPusat(selisih);

double delta_h=volumeAlir/this.luasCell;

double v1=velocityIn;

double v2=Math.sqrt((2*this.g*delta_h)+v1);//persbernoulli double sigmav2=(nCellSejajar+1)*v2;//karena cell nyasejajar + 1 cell pusat

double volumeOut=(v2/sigmav2)*volumeAlir;

for(int i=0;i<3;i++){

for(int j=0;j<3;j++){

if(selisih[i][j]==0){

int x=tetangga[i][j].getX();

int y=tetangga[i][j].getY();

volumeCellsProses[x][y]=volumeCellsProses[x][y]+

volumeOut;

if(volumeCellsProses[x][y]>this.dayaSerap){

nextStatus[x][y]=1;

UserInterface.jTextAreaInformasiProses.append("volumeOut -->

("+(x)+","+(y)+")="+(volumeOut)+" maka ");

UserInterface.jTextAreaInformasiProses.append("volumeCellsPr oses("+(x)+","+(y)+")="+(volumeCellsProses[x][y])+"\n");

}//end of if(selisih[i][j]==0)}//end of for j }//end of for i

cellsProses[xp][yp]=cellsProses[xp][yp]+(volumeOut/this.luas Cell);

}elseif(isCellLebihTinggiCellPusat(selisih)){

//hitungperubahanketinggian air (delta h) System.out.println("-c-");

double kedalaman=getKedalamanCellPusat(selisih);

double dayaTampungCell=kedalaman*this.luasCell;

double volumeCell=volumeAlir-dayaTampungCell;

if(volumeCell<=0){

//hitung (delta h)

double delta_h=volumeAlir/this.luasCell;

cellsProses[xp][yp]=cellsProses[xp][yp]+delta_h;

statusProses[xp][yp]=0;

System.out.println("-c- 1");

}else{

////hitung (delta h)=kedalamandan set volume sisakevolumecellproses

double delta_h=kedalaman;

cellsProses[xp][yp]=cellsProses[xp][yp]+delta_h;

volumeCellsProses[xp][yp]=volumeCell;

statusProses[xp][yp]=0;

if(volumeCellsProses[xp][yp]>this.dayaSerap){

nextStatus[xp][yp]=1;

} System.out.println("-c- 2");

}//end of if(volumeCell<=0) else }//end of if(isCellLebihRendahdariCellPusat(selisih))

Hasil dari proses pada timestep t=1 dapat dilihat pada Tabel 1(b).

Selanjutnya, masing-masing sel ( ) ( ) ( ) ( ) akan berstatus 1. Proses selanjutnya adalah meng-update nilai elevasi tiap-tiap sel yang terdapat pada sel tinjauan menggunakan Pers.(4.11a) dan Pers.(4.11b). Pada kasus ini, nilai elevasi masing-masing sel ( ) ( ) ( ) ( ) akan menjadi:

Untuk sel ( ) maka ( ) ( )

( )

( )( ) ( )( ) ( ) Untuk sel ( ) maka

( ) ( )

( )

( )( ) ( )( ) ( ) Untuk sel ( ) maka

( ) ( )

( )

( )( ) ( )( ) ( ) Untuk sel ( ) maka

( ) ( )

( )

( )( ) ( )( ) ( )

Demikian seterusnya untuk seluruh sel yang terdapat pada peta tinjauan, sehingga pada timestep berikutnya, t=2, data elevasi yang digunakan adalah nilai-nilai elevasi yang telah diupdate dan proses pada Step Kedua sampai Step Ketiga akan diulang untuk masing-masing sel berstatus 1 menjadi sel tinjauan. Hasil dari proses tersebut dapat dilihat pada tabel 1(c) - 1(h).

Tabel 1. Proses timestep 0 sampai timestep 18

timestep Proses

0

(317,163) 715

(317,164) 683

(317,165) 671

(317,166) 654

(317,167) 650

(317,168) 626

(317,169) 601

(317,170) 598

(317,171)

604

(318,163) 727

(318,164) 712

(318,165) 702

(318,166) 674

(318,167) 650

(318,168) 632

(318,169) 609

(318,170) 598

(318,171)

599

(319,163) 692

(319,164) 674

(319,165) 674

(319,166) 659

(319,167) 649

(319,168) 638

(319,169) 612

(319,170) 596

(319,171)

596

(320,163) 660

(320,164) 652

(320,165) 651

(320,166) 645

(320,167) 639

(320,168) 632

(320,169) 620

(320,170) 603

(320,171)

596

(321,163) 664

(321,164) 658

(321,165) 653

(321,166) 651

(321,167) 647

(321,168) 645

(321,169) 636

(321,170) 629

(321,171)

611

(322,163) 667

(322,164) 665

(322,165) 660

(322,166) 653

(322,167) 654

(322,168) 648

(322,169) 641

(322,170) 635

(322,171)

610

1

(317,163) 715

(317,164) 683

(317,165) 671

(317,166) 654

(317,167) 650

(317,168) 626

(317,169) 601

(317,170) 598

(317,171)

604

(318,163) 727

(318,164) 712

(318,165) 702

(318,166) 674

(318,167) 650

(318,168) 632

(318,169) 609

(318,170) 598

(318,171)

599

(319,163) 692

(319,164) 674

(319,165) 674

(319,166) 659

(319,167) 649

(319,168) 638

(319,169) 612

(319,170) 596

(319,171)

596

(320,163) 660

(320,164) 652

(320,165) 651

(320,166) 645

(320,167) 639

(320,168) 632

(320,169) 620

(320,170) 603

(320,171)

596

(321,163) 664

(321,164) 658.10

(321,165) 653

(321,166) 651

(321,167) 647

(321,168) 645

(321,169) 636

(321,170) 629

(321,171)

611

(322,163) 667

(322,164) 665

(322,165) 660

(322,166) 653

(322,167) 654

(322,168) 648

(322,169) 641

(322,170) 635

(322,171)

610

2

(317,163) 715

(317,164) 683

(317,165) 671

(317,166) 654

(317,167) 650

(317,168) 626

(317,169) 601

(317,170) 598

(317,171)

604

(318,163) 727

(318,164) 712

(318,165) 702

(318,166) 674

(318,167) 650

(318,168) 632

(318,169) 609

(318,170) 598

(318,171)

599

(319,163) 692

(319,164) 674

(319,165) 674

(319,166) 659

(319,167) 649

(319,168) 638

(319,169) 612

(319,170) 596

(319,171)

596

(320,163) 660

(320,164) 652.03

(320,165) 651.04

(320,166) 645

(320,167) 639

(320,168) 632

(320,169) 620

(320,170) 603

(320,171)

596

(321,163) 664

(321,164) 658.10

(321,165) 653.03

(321,166) 651

(321,167) 647

(321,168) 645

(321,169) 636

(321,170) 629

(321,171)

611

(322,163) 667

(322,164) 665

(322,165) 660

(322,166) 653

(322,167) 654

(322,168) 648

(322,169) 641

(322,170) 635

(322,171)

610

3

(317,163) 715

(317,164) 683

(317,165) 671

(317,166) 654

(317,167) 650

(317,168) 626

(317,169) 601

(317,170) 598

(317,171)

604

(318,163) 727

(318,164) 712

(318,165) 702

(318,166) 674

(318,167) 650

(318,168) 632

(318,169) 609

(318,170) 598

(318,171)

599

(319,163) 692

(319,164) 674

(319,165) 674

(319,166) 659

(319,167) 649

(319,168) 638

(319,169) 612

(319,170) 596

(319,171)

596

(320,163) 660

(320,164) 652.04

(320,165) 651.07

(320,166) 645.01

(320,167) 639

(320,168) 632

(320,169) 620

(320,170) 603

(320,171)

596

(321,163) 664

(321,164) 658.10

(321,165) 653.03

(321,166) 651.01

(321,167) 647

(321,168) 645

(321,169) 636

(321,170) 629

(321,171)

611

(322,163) 667

(322,164) 665

(322,165) 660

(322,166) 653

(322,167) 654

(322,168) 648

(322,169) 641

(322,170) 635

(322,171)

610

4

(317,163) 715

(317,164) 683

(317,165) 671

(317,166) 654

(317,167) 650

(317,168) 626

(317,169) 601

(317,170) 598

(317,171)

604

(318,163) 727

(318,164) 712

(318,165) 702

(318,166) 674

(318,167) 650

(318,168) 632

(318,169) 609

(318,170) 598

(318,171)

599

(319,163) 692

(319,164) 674

(319,165) 674

(319,166) 659

(319,167) 649

(319,168) 638

(319,169) 612

(319,170) 596

(319,171)

596

(320,163) 660

(320,164) 652.04

(320,165) 651.08

(320,166) 651.08

(320,167) 639.1

(320,168) 632

(320,169) 620

(320,170) 603

(320,171)

596

(321,163) 664

(321,164) 658.10

(321,165) 653.03

(321,166) 651.01

(321,167) 647.0

(321,168) 645

(321,169) 636

(321,170) 629

(321,171)

611

(322,163) 667

(322,164) 665

(322,165) 660

(322,166) 653

(322,167) 654

(322,168) 648

(322,169) 641

(322,170) 635

(322,171)

610

Perhitungan distribusi air mulai dari t0 sampai t=4 dapat dilihat pada lampiran 1.

b. Desain Perangkat Lunak

Rancangan user interface menggunakan form yang terdiri dari 3 tab untuk program aplikasi yang terdiri atas: tab Input, tab Proses dan tab Result.

a. Tab Input

Desain Main Menu pada tab input untuk program sebagai berikut :

Gambar 29. Desain Menu utama

Pada Main Menu terdapat 6 JButton yang terdiri atas:

1) Button Browse Image, berfungsi untuk mencari file image yang akan diproses.

2) Button Data, berfungsi untukmenampilkan titik-titik awal yang dipilih dengan cara meng-klik daerah pada peta atau dapat di-input manual.

3) Button Curah Hujan, Durasi Hujan dan Daya Serap Tanah berfungsi untuk meng-input parameter curah hujan, durasi hujan dan daya serap tanah.

4) Button Clear, merupakan button untuk mereset parameter-parameter yang telah di-input.

5) Button Run, merupakan button untuk memproses data dengan algoritma MD8 dan Persamaan Bernoulli serta menyimpan data History setiap timestep.

6) Button Break, merupakan button untuk menghentikan proses yang sedang berjalan.

b. Tab Proses

Form Proses berfungsi untuk menampilkan data hasil proses penentuan arah aliran dan distribusi air:

Gambar 30. Desain Tab Proses c. Tab Result

Pada bagian ini terbagi menjadi dua bagian yaitu tab timestep dan tab Preview.

1). Tab Timestep

Bagian ini berfungsi untuk menampilkan hasil proses tiap timestep-nya.

Gambar 31. Preview Image

2). Tab Preview

Bagian ini berfungsi untuk menampilkan kembali hasil proses yang telah disimulasikan.

Gambar 32. Tab Preview

Dokumen terkait