k=1.4;
A_throat = 1.0841e+03;
r_throat = sqrt(A_throat/pi);
Me = 0.12;
A = (k+1)/(2*(k-1));
B= k/(k-1);
C = 1/(k-1);
D = k-1;
E = k+1;
Pb = 2e6;
P_0 = 2.5e6;
L=100;
r=0;
delta_M = 0.1;
M1_guess = 1+1e-4;
iter_sub = 0;
iter_p=0;
error = 1e-6;
error1=6000;
x =1;
while error1>1000
for z=1:1:100
r_position = sqrt((r_throat^2)*(1 + (2.5*((x/L)^2))));
A_positon = pi*(r_position^2);
shock_area = A_positon/A_throat;
mach_shock_eqn = @(Ms,shock_area) ((1/Ms)*((2+(D*Ms^2))/E)^A) - shock_area;
dx=0.1;
for i=1:1:100
for j=1:1:100
M_1= mach_shock_eqn(M1_guess,shock_area);
M_2= mach_shock_eqn(M1_guess+delta_M,shock_area);
if (M_1*M_2 >0)
M1_guess = M1_guess + delta_M;
end
if (abs(M_1-M_2) <=error)
iter_sub =i;
end
end
end
M_shock1 = M1_guess;
M_shock2 = sqrt((M_shock1^2 + 2*C)/(2*B*M_shock1^2 -1));
P1 = P_0/((1+(0.5*D*(M_shock1^2)))^B);
P2 = P1*(M_shock1/M_shock2)*((2+(D*(M_shock1^2)))/(2+(D*(M_shock2^2))))^0.5;
P_02 = P2 *(1+0.5*D*(M_shock2^2))^B;
Pb_calc = P_02 / ((1+(0.5*D*(Me^2)))^B);
if (Pb_calc<Pb)
x=x+dx;
else if (Pb_calc > Pb)
x=x-dx;
else
x = x;
break
end
end
error1 = abs(Pb-Pb_calc)
end
end
y=x