-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEngine.m
More file actions
77 lines (60 loc) · 2.86 KB
/
Engine.m
File metadata and controls
77 lines (60 loc) · 2.86 KB
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
74
75
76
77
classdef Engine
%Engine Summary of this class goes here
% Rotax 914F
properties
EngineWeight = 140.8; % engine Weight
susPower = 55000; % sustained Power
maxPower = 64250; % max power
maxRPM = 5600; % max RPM
cp; % specific fuel consumption [lb/(lb*ft/s * s) = 1/ft]
propD; % propeller Diameter [ft]
N = 2; % number of engine
throttle = 0.5 % default throttle
% computed properties
getWeight; % get engine weight
% digitized graphs
powerVsRPM; % power Vs RPM data. [hp];[RPM]
FVRVsRPM; % fuel Volume Rate Vs RMP data. [US gal/h];[RPM]
propEffVsPropAoA; % propeller efficiency vs propeller aoa
bladeAngleVsPropAoA; % blade angle vs propeller aoa
end
methods
% Constructor
function En = Engine(propD)
En.powerVsRPM = csvread('assets/enginePowerVsRPM.csv');
En.FVRVsRPM = csvread('assets/fuelConsumpVsRPM.csv');
En.propEffVsPropAoA = csvread('assets/propEffVsPropAoA.csv');
En.bladeAngleVsPropAoA = csvread('assets/bladeAngleVsPropAoA.csv');
En.propD = propD;
end
% Getters
function getWeight = get.getWeight(En)
getWeight = 2.5758*(En.EngineWeight)^.922*2;
end
function cp = get.cp(En)
gasolineDensity = 6.073; % [lb/US Gal]
fuelMassRate = En.getFuelVolumeRateByRPM(En.getRPMByThrottle(En.throttle))*gasolineDensity/3600; % [lb/s]
cp = fuelMassRate/En.getPowerByRPM(En.getRPMByThrottle(En.throttle));
end
% Methods
function RPM = getRPMbyPower(En,power) % power [lbf.ft/s]
converter = 0.0018181817; % [lbf.ft/s] to [hp]
power = power*converter;
RPM = interp1(En.powerVsRPM(:,2),En.powerVsRPM(:,1),power);
end
function power = getPowerByRPM(En,RPM) % power [lbf.ft/s]
converter = 0.0018181817; % [lbf.ft/s] to [hp]
power = interp1(En.powerVsRPM(:,1),En.powerVsRPM(:,2),RPM);
power = power/converter;
end
function throttle = getThrottleByRPM(En, rpm)
throttle = rpm/En.maxRPM;
end
function rpm = getRPMByThrottle(En,throttle)
rpm = En.maxRPM* throttle;
end
function fvr = getFuelVolumeRateByRPM(En,rpm)
fvr = interp1(En.FVRVsRPM(:,1),En.FVRVsRPM(:,2),rpm);
end
end
end