-
Notifications
You must be signed in to change notification settings - Fork 0
/
ftrimRect.asv
57 lines (49 loc) · 1.65 KB
/
ftrimRect.asv
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
% ftrimRect.m
% function to be minimized to calculate steady rectilinear flight
% conditions for a fixed wing aircraft
% usage
% y = ftrimRect(Xi,V,h,Vvert,deltaCGb,aircraft)
% where
% Xi = [alpha;deltat;pitchControl] : vector with variables to be
% calculated in steady rectilinear flight condition
% with
% alpha : angle of attack (rad)
% deltat : propulsion system control (0<=deltat<=1)
% pitchControl : pitch control, it is ih if aircraft.Cmih~=0, or deltae
% otherwise (rad)
% V : airspeed (m/s)
% h : altitude (m)
% deltaCGb : position of aircraft CG respect a nominal CG position
% expressed in body frame (m)
% aircraft : aicraft data structure
% y : value of ftrimRect
%
function y = ftrimRect(Xi,V,h,Vvert,deltaCGb,aircraft)
% extract components of Xi
alpha = Xi(1,1);
deltat = Xi(2,1);
pitchControl = Xi(3,1);
% calculate flight path angle
gamma = asin(Vvert/V);
% define components of state vector x
pe = [0;0;-h];
phi = 0;
theta = gamma+alpha;
psi = 0;
Phi = [phi;theta;psi];
beta = 0;
Vb = [V*cos(alpha)*cos(beta);V*sin(beta);V*sin(alpha)*cos(beta)];
Phidot = [0;0;0];
omegab = Hinv(Phi)*Phidot;
% assemble state vector x
x = [pe;Phi;Vb;omegab];
% define components of derivative of state vector xdot
Cbe = DCM(Phi);
pedot = Cbe'*Vb;
Vbdot = [0;0;0];
omegabdot = [0;0;0];
% assemble derivative of state vector xdot
xdot = [pedot;phidot;Vbdot;omegabdot];
% define components of controls vector delta
y = norm(xdot-faircraft(t,x,delta,Vwe,deltaCGb,aircraft))^2
end