model Tugas_Besar_Mekflu
// ==================================== DEFINITION PHASE ====================================
parameter Real miu = 0.3 "dynamic viscosity";
parameter Real rho = 900 "density";
parameter Real Qinlet = 5e-4 "flow rate inlet";
parameter Real Pinlet = 39182 "pressure inlet";
parameter Real Poutlet = -3665 "pressure inlet";
parameter Integer boundary[:] = {1, 6} "Boundary Point";
parameter Integer nPipe = 6 "number of piping";
parameter Integer nPoint = 6 "number of point connected";
final constant Real pi=2*Modelica.Math.asin(1.0);
//Inputing pipe connection, length (L) and diameter (D)
parameter Real data[nPipe,2] = [ 70.71, 0.1 ;
50.99, 0.075 ;
50 , 0.075 ;
53.85, 0.05 ;
70.71, 0.05 ;
60 , 0.1 ];
parameter Integer no[nPoint,2] = [ 1, 2;
2, 3;
2, 4;
3, 5;
4, 5;
5, 6];
//Solution
Real Pressure[nPoint], Flowrate[nPipe], Reynolds[nPipe];
protected
Real g[nPoint,nPoint], G[nPoint,nPoint], id[nPoint,nPoint]=identity(nPoint), P[nPoint], Res;
// ==================================== SOLUTION PHASE ====================================
algorithm
//Iterating to create global matrice
for i in 1:nPipe loop
Res:= pi*data[i,2]^4/(128*data[i,1]*miu);
g:=zeros(nPoint,nPoint);
g[no[i,1],no[i,1]]:= Res;
g[no[i,1],no[i,2]]:= -Res;
g[no[i,2],no[i,1]]:= -Res;
g[no[i,2],no[i,2]]:= Res;
G:= G+g;
end for;
//Implementing boundary
for i in boundary loop
for j in 1:nPoint loop
G[i,j]:= id[i,j];
end for;
end for;
//Solving pressure in each point connected
P[boundary[1]]:= Pinlet;
P[boundary[2]]:= Poutlet;
Pressure:= Modelica.Math.Matrices.solve(G,P);
//Solving flowrate in each pipe
for i in 1:nPipe loop
Flowrate[i]:= pi*data[i,2]^4/(128*data[i,1]*miu)*(Pressure[no[i,1]]-Pressure[no[i,2]]);
end for;
//Solving Reynolds Number in each pipe flow
for i in 1:nPipe loop
Reynolds[i]:= 4*rho*Flowrate[i]/(pi*miu*data[i,2]);
end for;
end Tugas_Besar_Mekflu;
|