-
Notifications
You must be signed in to change notification settings - Fork 0
/
impactProbeStation_4.m
73 lines (62 loc) · 1.54 KB
/
impactProbeStation_4.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
function [P, Po, M, V, T, To] = impactProbeStation_4(m_dot, A, Tm, P, RF,isVarK)
% Inputs arrays, outputs arrays
% Handles all the array complications for different spool speeds
numDataPoints = 8;
Po = zeros(1,numDataPoints);
M = zeros(1,numDataPoints);
V = zeros(1,numDataPoints);
T = zeros(1,numDataPoints);
To = zeros(1,numDataPoints);
for i = 1:numDataPoints
[P(i), Po(i), M(i), V(i), T(i), To(i)] =...
station4(m_dot(i), A, Tm(i), P(i), RF,isVarK);
end
end
function [P, Po, M, V, T, To] = station4(m_dot, A, Tm, P, RF, isVarK)
% Iterative procedure to determine MFP, To, M, and T
M = 0;
T = 0;
To = Tm;
Po = P;
if isVarK == true
[Cp,Cv,k] = specHeat(T);
else
[Cp,Cv,k] = specHeat(300);
end
R = Cp - Cv;
dP = 1;
dT = 0.01;
while(true)
while(true)
MFP = m_dot/A*sqrt(R*To)/Po;
M = fsolve( @(M) M*sqrt(k)*(1+(k-1)/2*M^2)^...
(-(k+1)/(2*(k-1))) - MFP,[0.1],...
optimset('Display','off'));
Po_P = (1+(k-1)/2*M^2)^((k-1)/k);
Po_new = Po_P * P;
if( abs((Po_new-Po)/Po) < 1e-3 )
Po = Po_new;
break;
end
end
To_Tm = (1+(k-1)/2*M^2)/(1+RF*(k-1)/2*M^2);
To_new = To_Tm * Tm;
if( abs((To_new-To)/To) < 1e-3 )
To = To_new;
break;
end
if isVarK == true
[Cp,Cv,k] = specHeat(T);
else
[Cp,Cv,k] = specHeat(300);
end
T = Tm / (1+RF*(k-1)/2*M^2);
end
if isVarK == true
[~,~,k] = specHeat(T);
else
[~,~,k] = specHeat(300);
end
T = Tm / (1+RF*(k-1)/2*M^2);
V = M * sqrt(k*R*T);
end