SKAA 3413 COMPUTER PROGRAMMING
GROUP PROJECT RECTANGULAR CHANNEL CONSTRICTION
STUDENT/ MATRIC NO.
MOHD AZLAN BIN AMIR NORDIN SX130554KAWS04 MOHD HASNAN BIN HASSAN SX130580KAWS04 MOHD ZAMY SHAM BIN MOHD ZIN SX130577KAWS04 MUHAMMAD ASYRAF BIN MASRI SX130588KAWS04 NOORSHAFIY BIN AZMEY SX130600KAWS04
SESI - SEM
2014/2015 – 1
SECTION
03
LECTURER
DR. PONSELVI JEEVARAGAGAM
ii
TABLE OF CONTENTS
CHAPTER
1
2
3
4
5
TITLE
PAGE
INTRODUCTION
1
1.1
Background of Problem
1
1.2
Objectives of Program
2
1.3
Benefits of Program
2
PROGRAM ALGORITHM
3
2.1
Analysis Method
3
2.2
Pseudo Code
4
2.3
Flow Chart
5
PROGRAM STRUCTURE
7
3.1
GUI Setting
7
3.2
Script
8
TEST PLAN
11
4.1
Input Validation
11
4.2
Test 1 - Wier
12
4.3
Test 2 - Constriction
14
4.4
Test 3 - Weir & Constriction
15
REFERENCES
APPENDICES
Appendix 1 - Work Program Appendix 2 - Test Plan Calculation
16
CHAPTER 1
1
1.1
INTRODUCTION
Background of Problem
The water will flow uniformly in an open channel if there is no obstruction to the flow. The possi le obstruction for the flow is either bro d crested weir or constriction or both.
Weir is a str cture that is placed at the channel invert that will increase the invert level while co striction is the reduction of the channel wid th. Obstruction will modify the hydraulic profile and energy line of the flow.
Figure 1.1 Channel constriction.
2
Figure 1.2 Broad crested weir.
1.2
Objectives o Program
The program will analyse the flow of water in a rectan ular open channel trough the obstructio . The hydraulic profile of the flow will depends on: 1.
State f flow before the obstruction (subcritical/su ercritical).
2.
Height of weir, h.
3.
Width of constriction, B2.
The objectives of the program are: 1.
To de ermine the water depth at the obstruction ( 2), upstream of the obstruction ( y1) and downstream of the obstruction ( y3).
1.3
2.
To ill strate the hydraulic profile of the flow.
3.
To wr te the output to text file ‘Result.txt’.
Benefits of P ogram
The benefits f the program are: 1.
Quickly calculate values of E , y, and yc from upstream section to downstream section.
2.
Quick ly plot the elevation of hydraulic profile of the flow.
3.
User friendly by application of GUI.
CHAPTER 2
2
2.1
PROGRAM ALGORITHM
Analysis Method
The program is using the concept of specific energy as a method of analysis as shown in equation below:
E
=
y+
q2
2 gy 2
The values of E are equal from upstream to downstream of control structure and must satisfy the E min for each section. If E 0 > E min2 + h, the value of E 1 and E 2 are equal to the value of E 0 and value of y1 and y3 are equal with value of y0. The value of E 2 = E 0 – h and y2 to be calculated from equation below:
y2 +
q22
2 gy22
=
E0 − h
If E 0 < E min2 + h, the value of E 2 is equal to the value of E min2 and value of y2 are equal with value of yc2. The value of E 1, E 3 = E min2 + h and the value of y1 and y3 are to be calculated from equation below:
y +
q
2
2 gy 2
=
Emin2 + h
4 2.2
Pseudo Code
The algorithm of the program is listed below:
1.
User input Q , y0 , B , B2 and h
2.
Validate input until Q , y0 , B , B2
3.
q = Q B , yc
4.
q2
=Q
5.
E0
6.
If E0
=
=
3
B2 , yc 2
y0 + >
= 3
B and h ≥ 0
= 1.5yc
q22 g , Emin 2
= 1.5 yc 2
q2
2 gy0
Emin 2 + h
a. E1 = E3 b. y1 = y3 c. E2
q 2 g , Emin
> 0 , B2 <
E 0
= =
y0
E0 − h
=
d. Determine y2 by solving equation 2 gy23 − 2 gE2 y22 + q 22
yc 2 7.
If E0
<
<
y2
<
y0 if y0
>
yc 2 or y0
<
y2
<
yc 2 if y0
<
=
0 where
yc 2
Emin 2 + h
a. E2
=
E min2
b. y2
=
yc 2
c. E1 = E3
=
Emin2 + h
d. Solving equation 2 gy 3 − 2 gE1 y 2 + q 2 where y1
>
y0 and y3
<
=
0 to determine y1 and y3
yc
8.
Plot graph to display E , y , and yc for section 0 to section 3
9.
Write output ‘Result.txt’ as format below Location E(m) y(m) yc(m) -------------------------------------------------(0)Normal E0 y0 yc0 (1)Upstream E1 y1 yc1 (2)Structure E2 y2 yc2 (3)Downstream E3 y3 yc3
5 2.3
Flow Chart
Main Program (PRJ_Main.m) Start
Input Q, y0 , B, B2 , h
B2
≤
B
Q, y0 , B, B2
>
0
No
h≥0
Yes 2 q = Q B , yc = 3 q g , Emin = 1.5 yc q2 = Q B2 = 1.5 yc 2 E , yc 2 = 3 q22 g , min 2
E0
Yes
E0
=
>
y0 +
q2
2 gy0
Emin 2 + h
UDF_Uncontrol
No
UDF_Control E0 , E1, E 2 , E 3 y0 , y1, y 2 , y3 yc 0 , yc 1, y c 2 , yc 3
Plot hydraulic profile Write ‘Result.txt’
End
6 UDF_Uncontrol.m:
E1
E3
=
E 0
y1 = y3
=
y0
=
E2 3
Solve 2 gy2
Yes
yc 2
<
y2
<
E0 − h
=
2
2
− 2 gE2 y2 + q 2 =
y0
No
yc 2
>
0
y0
y0
UDF_Control.m:
E2
E1
=
=
E min 2
y2
=
yc 2
E3
=
Emin 2 + h
Solve 2 gy 3 − 2 gE1 y 2 + q 2 y1
>
y0
y3
<
yc
=
0
<
y2
<
yc 2
CHAPTER 3
3
3.1
PROGRAM STRUCTURE
GUI Setting
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
Marker
Tag
Marker
Tag
(1)
txtQ
(6)
txtVal
(2)
txty0
(7)
FigGraph
(3)
txtB
(8)
btnRUN
(4)
txtB2
(9)
btnCLEAR
(5)
txth
(10)
btnEND
8 3.2
Script
btnRUN script % --- Executes on button press in btnRUN. function btnRUN_Callback(hObject, eventdata, handles) % hObject handle to btnRUN (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Q=str2double(get(handles.txtQ,'string')); y0=str2double(get(handles.txty0,'string')); B=str2double(get(handles.txtB,'string')); B2=str2double(get(handles.txtB2,'string')); h=str2double(get(handles.txth,'string')); if isnan(Q)||isnan(y0)||isnan(B)||isnan(B2)||isnan(h)||... (Q<=0||y0<=0||B<=0||B2<=0||h<0)==1 set(handles.txtVal,'string',... 'All inputs must be a positive number.',... 'ForegroundColor','r') axes(handles.FigGraph),cla reset,axis off axes(handles.FigAns),cla reset,axis off elseif B2>B set(handles.txtVal,'string',... 'B2 must be smaller than or equal to B.',... 'ForegroundColor','r') axes(handles.FigGraph),cla reset,axis off axes(handles.FigAns),cla reset,axis off else set(handles.txtVal,'string','') Inp.Q=Q; Inp.y0=y0; Inp.B=B; Inp.B2=B2; Inp.h=h; %Calculation g=9.81; q=Q/B; yc=(q^2/9.81)^(1/3); Emin=1.5*yc; E0=y0+q^2/2/g/y0^2; q2=Q/B2; yc2=(q2^2/9.81)^(1/3); Emin2=1.5*yc2; if E0>Emin2+h [Out]=UDF_Uncontrol(E0,y0,yc2,h,q2); else [Out]=UDF_Control(q,E0,y0,h,Emin2,yc2); end %List location and yc Out(1).Loc='(0)Normal '; Out(2).Loc='(1)Upstream '; Out(3).Loc='(2)Structure '; Out(4).Loc='(3)Downstream'; Out(1).yc=yc; Out(2).yc=yc; Out(3).yc=yc2; Out(4).yc=yc;
9 %Table for plot Tbl(1,:)=0:7; Tbl(2,1:2)=Out(1).E; Tbl(2,3:4)=Out(2).E; Tbl(2,5:6)=Out(3).E+h; Tbl(2,7:8)=Out(4).E; Tbl(3,1:2)=Out(1).y; Tbl(3,3:4)=Out(2).y; Tbl(3,5:6)=Out(3).y+h; Tbl(3,7:8)=Out(4).y; Tbl(4,1:2)=Out(1).yc; Tbl(4,3:4)=Out(2).yc; Tbl(4,5:6)=Out(3).yc+h; Tbl(4,7:8)=Out(4).yc; %Plot profile axes(handles.FigGraph),cla reset,axis off,hold on area(Tbl(1,:),Tbl(3,:),'FaceColor','c') area([3.5 4 5 5.5],[0 h h 0],'FaceColor','y') plot(Tbl(1,:),Tbl(2,:),'k','LineStyle','--') plot(Tbl(1,:),Tbl(4,:),'r','LineStyle','-.') text(0.5,Out(1).E,'\nablaE','HorizontalAlignment','c',... 'VerticalAlignment','base') text(0.5,Out(1).y,'\nablay','HorizontalAlignment','c',... 'VerticalAlignment','base') text(0.5,Out(1).yc,'\nablay_{c}','HorizontalAlignment','c',... 'VerticalAlignment','base') if h>0 text(4.5,h,sprintf('h=%.2fm',h),'HorizontalAlignment',... 'c','VerticalAlignment','bottom') end,hold off %Display result axes(handles.FigAns),cla reset,axis off,hold on xlim([0 7]) text(0.5,0,sprintf('E_{0}=%.3fm\ny_{0}=%.3fm\ny_{c}=%.3fm',... Out(1).E,Out(1).y,Out(1).yc),'HorizontalAlignment','c',... 'VerticalAlignment','bottom') text(2.5,0,sprintf('E_{1}=%.3fm\ny_{1}=%.3fm\ny_{c}=%.3fm',... Out(2).E,Out(2).y,Out(2).yc),'HorizontalAlignment','c',... 'VerticalAlignment','bottom') text(4.5,0,sprintf('E_{2}=%.3fm\ny_{2}=%.3fm\ny_{c2}=%.3fm',... Out(3).E,Out(3).y,Out(3).yc),'HorizontalAlignment','c',... 'VerticalAlignment','bottom') text(6.5,0,sprintf('E_{3}=%.3fm\ny_{3}=%.3fm\ny_{c}=%.3fm',... Out(4).E,Out(4).y,Out(4).yc),'HorizontalAlignment','c',... 'VerticalAlignment','bottom'),hold off %Write result fid=fopen('Results.txt','w'); fprintf(fid,'%s%.3fm\n%s%.3fm\n%s%.3fm\n%s%.3fm\n%s%.3fm\n',... 'Q = ',Inp.Q,'y0 = ',Inp.y0,'B = ',Inp.B,'B2 = ',... Inp.B2,'h = ',Inp.h) fprintf(fid,'\n Location E(m) y(m) yc(m)\n') fprintf(fid,'---------------------------------------------\n') for i=1:4 fprintf(fid,' %s%10.3f%10.3f%10.3f\n',Out(i).Loc,... Out(i).E,Out(i).y,Out(i).yc) end fclose(fid) end
10 btnCLEAR script % --- Executes on button press in btnCLEAR. function btnCLEAR_Callback(hObject, eventdata, handles) % hObject handle to btnCLEAR (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.txtQ,'string','') set(handles.txty0,'string','') set(handles.txtB,'string','') set(handles.txtB2,'string','') set(handles.txth,'string','') set(handles.txtVal,'string','') axes(handles.FigGraph) cla reset set(handles.FigGraph,'Visible','off') axes(handles.FigAns) cla reset set(handles.FigAns,'Visible','off')
btnEND script % --- Executes on button press in btnEND. function btnEND_Callback(hObject, eventdata, handles) % hObject handle to btnEND (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) delete(handles.PRJ_Main)
CHAPTER 4
4
TEST PLAN
Testing for this program was made using exercise from Hydraulics Lecture Notes by Mr. Amat Sairin Demun.
4.1
Input Validation
The program requires all inputs are positive number. A notification will appear if any of the input is not a positive number as shown below.
12
The program also requires the value of B2 is less than or equal to the value of B. If the value of B2 is greater than B a notification will appear as hown below.
4.2
Test 1 - Wier
Q=
A5 3 P
23
23
AR
53
S A =
n
=
Qn S
=
53
( By0 )
( B + 2 y0 )
23
S
23
P n
9.8 × 0.015
=
0.0008
5.197
53
( 2.6 y0 )
( 2.6 + 2 y0 )
23
= 5.197
⇒
y0
=
2.270m
13
Location E(m) y(m) yc(m) --------------------------------------------(0)Normal 2.411 2.270 1.131 (1)Upstream 2.411 2.270 1.131 (2)Structure 1.911 1.642 1.131 (3)Downstream 2.411 2.270 1.131
Location E(m) y(m) yc(m) --------------------------------------------(0)Normal 2.411 2.270 1.131 (1)Upstream 2.617 2.501 1.131 (2)Structure 1.697 1.131 1.131 (3)Downstream 2.617 0.599 1.131
14 4.3
Test 2 - Constriction
53
( 2.6 y0 )
( 2.6 + 2 y0 )
= 23
9.8 × 0.016 0.02
= 1.109
⇒
y0
=
0.715m
15 4.4
Test 3 - Weir & Constriction
Location E(m) y(m) yc(m) -------------------------------------------- (0)Normal 2.715 0.450 0.972 (1)Upstream 8.794 8.788 0.972 (2)Structure 3.794 2.529 2.529 (3)Downstream 8.794 0.231 0.972
5
REFERENCES
Amat Sairin Demun (2010). Hydraulics Lecture Notes. (3rd Edition). Skudai: UTM.
Mohamad Hidayat Jamal (2014). Lecture Module for SKAA 2513 Hydraulics. Unpublished, UTM.
Ponselvi Jeevaragagam (2014). Lecture Module for SKAA 3413 Computer Programming. Unpublished, UTM.
APPENDIX 1 Work Program
PROGRAM FOR RECTANGULAR CHANNEL CONSTRICTION Work Program
November No.
Works Description
Action by
1
Choosing the problem: Weir & constriction
2
Plan the program, pseudo code, flowchart, algorithm
Shafiy/Hasnan
3
Draft the program, GUI
Hasnan/Zamy
4
Develop the program, script
Asyraf/Azlan
5
Test the program
6
Prepare the report, compile the program
7
Submission
Everyone
Everyone Zamy/Shafiy
Week 10
Week 11
December Week 12
Week 13
Week 14
January Week 15
Week 16
Week 17
Week 18
APPENDIX 2
Test Plan Calculation