Professional Documents
Culture Documents
Code Q
Code Q
if(itercount==1)
mass_fuel1 = 0.0125*mass_to; % SI (kg)
end
if(itercount~=1)
% ----------------- FUEL CONSIDERATIONS ------------------------
power_idle = frac_power_idle*power_installed;
if config_ID == 3 % when idling, were only using hover/props
power_idle = frac_power_idle*power_installed_2;
end
[sfc_seg1] = engine_model(engine_ID,3,nengine,power_idle,...
power_installed,theta_HOGE,delta_HOGE);
mass_fuel1 = sfc_seg1*(power_idle/1000)*time_idle;
end % SI (kg), power in kW and
time in hrs
% Mass at the end of this segment
mass_seg1 = mass_to - mass_fuel1;
(1+KD_mcp*(delta_HOGE-1));
power_seg1 = power_idle_seg1;
end
power_installed_1 = power_seg1;
%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%
% Segment 2: 2 min HIGE Takeoff, HOGE at mid-mission 2000 ft MSL 85 deg F
% 90% Engine MRP, 100% Contingency XMSN torque
% ----------------------- MAIN ROTOR ---------------------------
% aircraftID
% Should account for the rotor downwash on the wing if present
if(itercount==1)
hover_dwld_factor = 0.05;
else
hover_dwld_factor = 0.02+0.9*wing_area/rotor_disk_area;
% Note this is true even if we have two rotors as the
% eqn is 0.02+0.9*(Sw/2)/A+0.9*(Sw/2)/A = 0.02+0.9*Sw/A
end
% mode is 1
DATA_RESULT = run_BEMT4(hover_dwld_factor, DL_MR/(lb2kg*grav/(f2m)^2),
rho_alt_HOGE*0.00194032,...
tip_speed_MR(vtip)*m2f,1,Mcr, Mtip_cr(tscr), Mtip_hover(vtip),nblade_MR/num_MR,
twist(tw),af1end(af),af2end,af3end, rho_alt_BEMT,...
Vtip_cr(tscr),Pshaft_alt, ((dia_MR/2)*m2f)^2 * pi, Msweepstart, sweepstrength);
sigma_MR(armr,nb) = DATA_RESULT(1);
FM_MR(fm) = DATA_RESULT(11);
eff_propeller(np) = DATA_RESULT(14);
ct_sig_cruise = DATA_RESULT(8); % segment 4 used
Trotor_cruise = 2 * ct_sig_cruise * sigma_MR(armr,nb) *
rho_alt_cruise*((dia_MR/2)^2*pi)*(Vtip_cr(tscr)*f2m)^2;% Newtons - both rotors
Trotor_climb = 2 * ct_sig_cruise * sigma_MR(armr,nb) *
1/2*(rho_alt_cruise+rho_alt_HOGE)*((dia_MR/2)^2*pi)*(Vtip_cr(tscr)*f2m)^2;% Newtons -
both rotors
AR_MR(armr) = nblade_single_rotor/(pi*sigma_MR(armr,nb));
else
%%
end
% add the wing area and compute new aspect ratio due to
% outboard wing extensions
wing_chord_owe = 0.6*wing_chord;
wing_area_owe = 0.15*wing_area;
wing_span_owe = wing_area_owe/wing_chord_owe;
wing_loading = mass_to/wing_area;
cp_single_rotor_ideal = ct_single_rotor^1.5/sqrt(2);
%cp_single_rotor_act = 1.15*(ct_single_rotor^1.5/sqrt(2)) +
((1/8)*cd0*sigma_MR(armr,nb));
cp_single_rotor_act = 1/(FM_MR(fm))*cp_single_rotor_ideal;
power_hover_MR = cp_single_rotor_act*(rho_alt_HOGE*pi*rad_MR^2*tip_speed_MR(vtip)^3);
% engine model
power_seg2 = power_hover_total;
%[sfc_seg2] = engine_model(2,theta_HOGE,delta_HOGE);
[sfc_seg2] = engine_model(engine_ID,2,nengine,power_seg2,...
power_installed,theta_HOGE,delta_HOGE);
%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%
% Segment 3: Cruise-climb at best climb speed (V_BOC) where range credit may be taken
for the total % radius of action (ROA)for segments 4 and 6
% Notes: Assumed that the wing and wing mounted props carry
% the helicopter in climb. The main rotor is
% completely offloaded and tip is adjusted so that
% tip mach number <= 0.9.
% Notes: For a tiltrotor. Climb takes place in airplane mode.
% The propeller_effeciency is reduced for a tiltrotor.
%
% ==============================================================
if(itercount==1);v_climb_cl1 = v_climb;end
rho_in = 0.5*(rho_alt_HOGE+rho_alt_cruise);
sigma_in = 0.5*(sigma_HOGE+sigma_cruise);
[thrust_max_seg3,power_climb_ts3,power_climb_tf3,power_climb,mass_fuel3,mass_out,v_cl
imb,dist_climb,CL_climb,...
f_helicopter,sfc_cl3,mass_fuel_tf3,mass_fuel_ts3,time_seg3,power_shaft_altitude_seg3,
p_engine_alt_seg3]...
=
climb_segment(mach_climb,frac_power_mcp,delta_HOGE,delta_cruise,theta_HOGE,...
theta_cruise,power_installed_2,config_ID,...
config_mil,config_civ,mass_to, wing_loading,v_climb_cl1,DL_MR(dl),...
a,b,c,d,kg2lb,f2m,tip_speed_MR(vtip),cd0,grav,rho_in,wing_area,...
AR_wing(arw),oswald,climb_rate,m2f,sigma_in,eff_propeller(np),...
hp2kw,altitude_HOGE,altitude_cruise(alt),rotor_disk_area,...
sigma_MR(armr,nb),aircraft_ID,dia_prop,sigma_prop,num_prop,num_MR(nmr),power_share_pe
rc(PS_perc),Trotor_climb);
power_seg3 = power_climb;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% NEW 3/14/2023 - 5% efficency boost to turbofan engines at altitude.
%%%% Basing off of Xavier's lapse rate code/plots. This is an initial
%%%% estimation. ONLY FOR CRUISE AND CLIMB SEGMENTS - idk properties at dash altitude
%%%%%%%
if config_ID == 2 % folding TR, turbofan only
power_top = power_climb_top/...
((1-KT_mcp*(0.5*(theta_cruise+theta_HOGE)-1))*...
(1+KD_mcp*(0.5*(delta_cruise+delta_HOGE)-1))*.95);
power_installed_3tf = frac_install*frac_inst_mcp*power_top;
end
if config_ID == 3
power_top_3tf = power_climb_tf3/...
((1-KT_mcp*(0.5*(theta_cruise+theta_HOGE)-1))*...
(1+KD_mcp*(0.5*(delta_cruise+delta_HOGE)-1))*.95);
power_installed_3tf = frac_install*frac_inst_mcp*power_top_3tf;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%power_installed_3 =1.25*power_top;
power_installed_3 = frac_install*frac_inst_mcp*power_top; %how to get eqn
%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%
% Segment 4: Cruise 450 nm (833 km) at no less than 20000 ft (6096 m) ISA, or best
cruise altitude
% at V_BR or no less than 450 KTAS (833 km/hr)
cruise_range = range_onward-dist_climb;
power_installed_2,config_ID,config_mil,config_civ,mass_to,v_cruise_onward(mission_ID)
,...
speed_sound_cruise,tip_mach_max,wing_loading,wing_area,DL_MR(dl),rotor_disk_area,...
sigma_MR(armr,nb),rho_alt_cruise,AR_wing(arw),eff_propeller(np),cruise_range,.
..
a,b,c,d,f2m,kg2lb,cd0,grav,aircraft_ID,tip_speed_MR(vtip)...
,dia_prop,sigma_prop,num_prop,num_MR(nmr),flat_plate_factor,oswald,power_share
_perc(PS_perc),Trotor_cruise);
power_cruise_seg4_total = power_cruise;
% Account for reserve fuel, very crude. Refine it later. --> Where does
% this come from. Doesnt seem important as it gets over written later
if config_ID == 1
% TR, sfc based on turboshaft engine
mass_fuel_reserve = (power_cruise/1000)*sfc_cr4* (reserve_fuel_time); % SI (kg).
reserve fuel time in hrs.
elseif config_ID == 2
%FTR, tsfc for turbofan engine
mass_fuel_reserve =
(power_cruise/v_cruise_onward(mission_ID))*tsfc_cr4*(reserve_fuel_time*3600); % SI
(kg). reserve fuel time in hrs.
elseif config_ID == 3
mass_fuel_reserve_ts = (p_engine_alt_seg4/1000)*sfc_cr4*(reserve_fuel_time);
mass_fuel_reserve_tf =
(power_cruise_tf4/v_cruise_onward(mission_ID))*tsfc_cr4*(reserve_fuel_time*3600);% SI
(kg). reserve fuel time in hrs.
mass_fuel_reserve = mass_fuel_reserve_ts + mass_fuel_reserve_tf;
end
power_seg4 = power_cruise;
power_top = power_cruise_top/((1-KT_mcp*(theta_cruise-1))*...
(1+KD_mcp*(delta_cruise-1)));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% NEW 3/14/2023 - 10% efficency decrease to turbofan engines at altitude.
%%%% Basing off of Xavier's lapse rate code/plots. This is an initial
%%%% estimation. ONLY FOR CRUISE AND CLIMB SEGMENTS - idk properties at dash altitude
%%%%%%%
if config_ID == 2
power_top_4tf = power_cruise_top/((1-KT_mcp*(theta_cruise-1))*...
(1+KD_mcp*(delta_cruise-1))*.9);
power_installed_4tf = frac_install*frac_inst_mcp*power_top_4tf;
end
if config_ID == 3
power_top_4tf = power_cruise_tf4/((1-KT_mcp*((theta_cruise)-1))*...
(1+KD_mcp*((delta_cruise)-1))*.9);
power_installed_4tf = frac_install*frac_inst_mcp*power_top_4tf;
power_top_4ts = p_engine_alt_seg4/((1-KT_mcp*((theta_cruise)-1))*...
(1+KD_mcp*((delta_cruise)-1)));
power_top = power_top_4ts + power_top_4tf;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%power_installed_4 =1.25*power_top;
power_installed_4 = frac_install*frac_inst_mcp*power_top; %how to get eqn
%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%
% Segment 5: Descend to 2000 ft MSL 85 deg F (no range credit)
% compute the time taken in descent. Assumed that the power
% setting is flight idle. SI (s)
time_descent = (altitude_cruise(alt)-altitude_loiter)/descent_rate;
% idle power for seg5 --> why KT_mrp, not Irp, not OEI, etc..
% NOB says becasue
power_idle_seg5 = power_idle*(1-KT_mrp*(0.5*(theta_loiter+...
theta_cruise)-1))*(1+KD_mrp*(0.5*(delta_loiter+delta_cruise)-1));
[sfc_seg5] = engine_model(engine_ID,3,nengine,power_idle_seg5,...
power_installed,0.5*(theta_loiter+theta_cruise),...
0.5*(delta_loiter+delta_cruise));
mass_fuel5 = sfc_seg5*(power_idle_seg5/1000)*(time_descent/3600);
power_installed_5 = power_seg5;
%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%
% Segment 6: 50 nm (92.6 km) of low-altitude, high-speed penetration
% Assumed that this segment is in helicopter mode at loiter speed
% Considerations for Mission 1. Treated as low speed cruise flight.
if(mission_ID==1 || mission_ID==2)
% Specify the mode which we will be using for high speed penetration
% 1- Helicopter Mode - SAR
% 2 - Airplane Mode - Military high speed
HSP_type_ID = 2;
%------------------------------------------------------------------------%
end
%################################################################
% High speed penetration in AIRPLANE mode
if HSP_type_ID == 2
[thrust_max_seg6,power_loiter_ts6,power_loiter_tf6,power_loiter,mass_fuel6,mass_seg6,
CL_loiter,f_helicopter_lo,...
fuel_flow_rate_lo,LD_heli_lo,sfc_lo,tsfc_lo,drag_total_lb_seg6,mass_fuel_tf6,m
ass_fuel_ts6,time_seg6,power_shaft_altitude_seg6,p_engine_alt_seg6]...
= cruise_segment(mach_loiter,frac_power_mcp,delta_HOGE,theta_HOGE,...
power_installed_2,config_ID,config_mil,config_civ,mass_to,v_cruise_loiter(mission_ID)
,...
speed_sound_loiter,tip_mach_max,wing_loading,wing_area,DL_MR(dl),rotor_disk_ar
ea,...
sigma_MR(armr,nb),rho_alt_loiter,AR_wing(arw),eff_propeller(np),...
range_loiter(mission_ID),a,b,c,d,f2m,kg2lb,cd0,grav,...
aircraft_ID,tip_speed_MR(vtip),dia_prop,sigma_prop,num_prop,num_MR,...
flat_plate_factor,oswald,power_share_perc(PS_perc),Trotor_cruise);
power_seg6 = power_loiter;
power_loiter_top = power_loiter;
power_top = power_loiter_top/((1-KT_mcp*(theta_loiter-1))*...
(1+KD_mcp*(delta_loiter-1)));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% NEW 3/14/2023 - 10% efficency decrease to turbofan engines at altitude.
%%%% Basing off of Xavier's lapse rate code/plots
if config_ID == 2
power_top_6tf = power_loiter_top/((1-KT_mcp*(theta_loiter-1))*...
(1+KD_mcp*(delta_loiter-1)));
power_installed_6tf = frac_install*frac_inst_mcp*power_top_6tf;
end
if config_ID == 3
power_installed_6tf = power_loiter_tf6/((1-KT_mcp*((theta_loiter)-1))*...
(1+KD_mcp*((delta_loiter)-1))*.9);
power_installed_6tf = frac_install*frac_inst_mcp*power_installed_6tf;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%power_installed_4 =1.25*power_top;
power_installed_6 = frac_install*frac_inst_mcp*power_top;
LD_loiter_NOBedit =
(((mass_seg5+mass_seg6)/2*grav)*(v_cruise_loiter(mission_ID)))/power_loiter;
end
% ############################################################
end % Mission_ID 1 or 2
% % --------------------------------------------------------------
% % --------------------------------------------------------------
if(mission_ID==3)
% Specify the mode which we will be using for high speed penetration
% 1- Helicopter Mode - SAR
% 2 - Airplane Mode - Miliatry high speed
HSP_type_ID = 1;
if HSP_type_ID == 1
[sfc_seg6] = engine_model(engine_ID,3,nengine,power_idle_seg6,...
power_installed,theta_loiter,delta_loiter);
mass_fuel6_1 = sfc_seg6*(power_idle_seg6/1000)*(0.5);
[sfc_to] = engine_model(engine_ID,2,nengine,power_top,...
power_installed,theta_loiter,delta_loiter);
power_installed_6 = frac_install*frac_inst_irp*power_top;
mass_fuel6_2 = (power_hover_total6/1000)*sfc_to*time_hover;
mass_fuel6 = mass_fuel6_1+mass_fuel6_2;
power_seg6 = power_hover_total6;
% sfc of the segment
sfc_seg6 = sfc_lo; % SI (kg/kW-hr)
end
%################################################################
% High speed penetration in AIRPLANE mode
if HSP_type_ID == 2
[thrust_max_seg6,power_loiter_ts6,power_loiter_tf6,power_loiter,mass_fuel6,mass_seg6,
CL_loiter,f_helicopter_lo,...
fuel_flow_rate_lo,LD_heli_lo,sfc_lo,tsfc_lo,drag_total_lb_seg6,mass_fuel_tf6,m
ass_fuel_ts6,time_seg6,power_shaft_altitude_seg6,p_engine_alt_seg6]...
= cruise_segment(mach_loiter,frac_power_mcp,delta_HOGE,theta_HOGE,...
power_installed_2,config_ID,config_mil,config_civ,mass_to,v_cruise_loiter(mission_ID)
,...
speed_sound_loiter,tip_mach_max,wing_loading,wing_area,DL_MR(dl),rotor_disk_ar
ea,...
sigma_MR(armr,nb),rho_alt_loiter,AR_wing(arw),eff_propeller(np),...
range_loiter(mission_ID),a,b,c,d,f2m,kg2lb,cd0,grav,...
aircraft_ID,tip_speed_MR(vtip),dia_prop,sigma_prop,num_prop,num_MR,...
flat_plate_factor,oswald,power_share_perc(PS_perc),Trotor_cruise);
% ############################################################
power_seg6 = power_loiter;
power_loiter_top = power_loiter;
power_top = power_loiter_top/((1-KT_mcp*(theta_loiter-1))*...
(1+KD_mcp*(delta_loiter-1)));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% NEW 3/14/2023 - 10% efficency decrease to turbofan engines at altitude.
%%%% Basing off of Xavier's lapse rate code/plots
if config_ID == 2
power_top_6tf = power_loiter_top/((1-KT_mcp*(theta_loiter-1))*...
(1+KD_mcp*(delta_loiter-1)));
power_installed_6tf = frac_install*frac_inst_mcp*power_top_6tf;
end
if config_ID == 3
power_installed_6tf = power_loiter_tf6/((1-KT_mcp*((theta_loiter)-1))*...
(1+KD_mcp*((delta_loiter)-1))*.9);
power_installed_6tf = frac_install*frac_inst_mcp*power_installed_6tf;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%power_installed_4 =1.25*power_top;
power_installed_6 = frac_install*frac_inst_mcp*power_top;
LD_loiter_NOBedit =
(((mass_seg5+mass_seg6)/2*grav)*(v_cruise_loiter(mission_ID)))/power_loiter;
end
end % Mission 3
%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%
% Segment 7: 2-min mid-mission Landing Zone (LZ) HOGE at Mid-Mission Gross Weight
(MMGW)
% (Similar to Segment 2)
cp_single_rotor_ideal = ct_single_rotor^1.5/sqrt(2);
% cp_single_rotor_act = 1.15*(ct_single_rotor^1.5/sqrt(2)) +
((1/8)*cd0*sigma_MR(armr,nb));
cp_single_rotor_act = 1/(FM_MR(fm))*cp_single_rotor_ideal;
power_hover_MR = cp_single_rotor_act*(rho_alt_HOGE*pi*rad_MR^2*tip_speed_MR(vtip)^3);
% FM_MR_seg7 = cp_single_rotor_ideal/cp_single_rotor_act;
%if(itercount==1);power_idle = frac_power_idle*power_installed_7;end
% engine model
power_seg7 = power_hover_seg7;
%[sfc_seg2] = engine_model(2,theta_HOGE,delta_HOGE);
%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%
% Segment 8: Cruise-climb at best climb speed (V_BOC) where range credit may be taken
for the total radius of action (ROA)for segments 4 and 6 [Similar to Segment 3]
% Notes: Assumed that the wing and wing mounted props carry
% the helicopter in climb. The main rotor is
% completely offloaded and tip is adjusted so that
% tip mach number <= 0.9.
% Notes: For a tiltrotor. Climb takes place in airplane mode.
% The propeller_effeciency is reduced for a tiltrotor.
%
% ==============================================================
rho_in = 0.5*(rho_alt_HOGE+rho_alt_cruise);
sigma_in = 0.5*(sigma_HOGE+sigma_cruise);
[thrust_max_seg8,power_climb_ts8,power_climb_tf8,power_climb,
mass_fuel8,mass_seg8,v_climb_cl1,dist_climb,CL_climb,...
f_helicopter_cl1,sfc_cl8,mass_fuel_tf8,mass_fuel_ts8,time_seg8,power_shaft_altitude_s
eg8,p_engine_alt_seg8] = ...
climb_segment(mach_climb,frac_power_mcp,delta_HOGE,delta_cruise, ...
theta_HOGE, theta_cruise,power_installed_2,config_ID,...
config_mil,config_civ,mass_to, wing_loading,v_climb_cl1,DL_MR(dl),...
a,b,c,d,kg2lb,f2m,tip_speed_MR(vtip),cd0,grav,rho_in,wing_area,...
AR_wing(arw),oswald,climb_rate,m2f,sigma_in,eff_propeller(np),...
hp2kw,altitude_HOGE,altitude_cruise(alt),rotor_disk_area,...
sigma_MR(armr,nb),aircraft_ID,dia_prop,sigma_prop,num_prop,num_MR(nmr),power_share_pe
rc(PS_perc),Trotor_climb);
power_seg8 = power_climb;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% NEW 3/14/2023 - 5% efficency boost to turbofan engines at altitude.
%%%% Basing off of Xavier's lapse rate code/plots. This is an initial
%%%% estimation. ONLY FOR CRUISE AND CLIMB SEGMENTS - idk properties at dash altitude
%%%%%%%
if config_ID == 2
power_top_8tf = power_climb_top/...
((1-KT_mcp*(0.5*(theta_cruise+theta_HOGE)-1))*...
(1+KD_mcp*(0.5*(delta_cruise+delta_HOGE)-1))*.95);
power_installed_8tf = frac_install*frac_inst_mcp*power_top_8tf;
end
if config_ID == 3
power_installed_8tf = power_climb_tf8/...
((1-KT_mcp*(0.5*(theta_cruise+theta_HOGE)-1))*...
(1+KD_mcp*(0.5*(delta_cruise+delta_HOGE)-1))*.95);
power_installed_8tf = frac_install*frac_inst_mcp*power_installed_8tf;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%power_installed_8 =1.25*power_top;
power_installed_8 = frac_install*frac_inst_mcp*power_top;
%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%
% Segment 9: Cruise 450 nm (833 km) at no less than 20000 ft (6096 m) ISA, or best
cruise altitude
% at V_BR or no less than 450 KTAS (833 km/hr) [Same as Segment 4]
cruise_range = range_onward-dist_climb;
[thrust_max_seg9,power_cruise_ts9,power_cruise_tf9,power_cruise,mass_fuel9,mass_seg9,
CL_cruise1,f_helicopter_cr1,...
fuel_flow_rate_cr2,LD_heli_cr2,sfc_cr9,tsfc_cr9,drag_total_lb_seg9,mass_fuel_t
f9,mass_fuel_ts9,time_seg9,power_shaft_altitude_seg9,p_engine_alt_seg9]...
= cruise_segment(mach_cruise,frac_power_mcp,delta_cruise,theta_cruise,...
power_installed_2,config_ID,config_mil,config_civ,mass_to,v_cruise_onward(mission_ID)
,...
speed_sound_cruise,tip_mach_max,wing_loading,wing_area,DL_MR(dl),rotor_disk_area,...
sigma_MR(armr,nb),rho_alt_cruise,AR_wing(arw),eff_propeller(np),cruise_range,.
..
a,b,c,d,f2m,kg2lb,cd0,grav,aircraft_ID,tip_speed_MR(vtip)...
,dia_prop,sigma_prop,num_prop,num_MR(nmr),flat_plate_factor,oswald,power_share
_perc(PS_perc),Trotor_cruise);
% Account for reserve fuel, very crude. Refine it later. --> Where does
% this come from
if config_ID == 1
% TR, sfc based on turboshaft engine
mass_fuel_reserve = (power_cruise/1000)*sfc_cr9* (reserve_fuel_time); % SI (kg).
reserve fuel time in hrs.
elseif config_ID == 2
%FTR, tsfc for turbofan engine
mass_fuel_reserve =
(power_cruise/v_cruise_onward(mission_ID))*tsfc_cr9*(reserve_fuel_time*3600); % SI
(kg). reserve fuel time in hrs.
elseif config_ID == 3
mass_fuel_reserve_ts = (p_engine_alt_seg9/1000)*sfc_cr9*(reserve_fuel_time);
mass_fuel_reserve_tf =
(power_cruise_tf9/v_cruise_onward(mission_ID))*tsfc_cr9*(reserve_fuel_time*3600);% SI
(kg). reserve fuel time in hrs.
mass_fuel_reserve = mass_fuel_reserve_ts + mass_fuel_reserve_tf;
end
power_seg9 = power_cruise;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% NEW 3/14/2023 - 10% efficency decrease to turbofan engines at altitude.
%%%% Basing off of Xavier's lapse rate code/plots. This is an initial
%%%% estimation. ONLY FOR CRUISE AND CLIMB SEGMENTS - idk properties at dash altitude
%%%%%%%
if config_ID == 2 %tf only
power_top_9tf = power_cruise_top/((1-KT_mcp*(theta_cruise-1))*...
(1+KD_mcp*(delta_cruise-1))*.9);
power_installed_9tf = frac_install*frac_inst_mcp*power_top_9tf;
end
if config_ID == 3
power_top_9tf = power_cruise_tf9/((1-KT_mcp*((theta_cruise)-1))*...
(1+KD_mcp*((delta_cruise)-1))*.9);
power_installed_9tf = frac_install*frac_inst_mcp*power_top_9tf;
power_top_9ts = p_engine_alt_seg9/((1-KT_mcp*((theta_cruise)-1))*...
(1+KD_mcp*((delta_cruise)-1)));
power_top = power_top_9tf + power_top_9ts;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%power_installed_4 =1.25*power_top;
power_installed_9 = frac_install*frac_inst_mcp*power_top; %how to get eqn
%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%
% Segment 10: Descend to 2000 ft MSL 85 deg F (no range credit) [Same as Segment 5]
% compute the time taken in descent. Assumed that the power
% setting is flight idle. SI (s)
time_descent = (altitude_cruise(alt)-altitude_loiter)/descent_rate;
[sfc_seg10] = engine_model(engine_ID,3,nengine,power_idle_seg10,...
power_installed,0.5*(theta_loiter+theta_cruise),...
0.5*(delta_loiter+delta_cruise));
mass_fuel10 = sfc_seg10*(power_idle_seg10/1000)*(time_descent/3600);
power_installed_10 = power_seg10;
%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%
% Segment 11: 50 nm (92.6 km) of low-altitude, high-speed penetration [Same as
Segment 6]
% Considerations for Mission 1. Treated as low speed cruise flight.
if(mission_ID==1 || mission_ID==2)
% Specify the mode which we will be using for high speed penetration
% 1- Helicopter Mode - SAR
% 2 - Airplane Mode - Military high speed
HSP_type_ID = 2;
% High speed penetration in HELICOPTER mode
if HSP_type_ID == 1
% advance ratio
advance_ratio = v_cruise_loiter(mission_ID)/tip_speed_MR(vtip);
end
% #########################################################
% High speed penetration in AIRPLANE mode
if HSP_type_ID == 2
[thrust_max_seg11,power_loiter_ts11,power_loiter_tf11,power_loiter,mass_fuel11,mass_s
eg11,CL_loiter,f_helicopter_lo,...
fuel_flow_rate_lo,LD_heli_lo,sfc_lo, tsfc_lo,
drag_total_lb_seg11,mass_fuel_tf11,mass_fuel_ts11,time_seg11,power_shaft_altitude_seg
11,p_engine_alt_seg11]...
= cruise_segment(mach_loiter,frac_power_mcp,delta_HOGE,theta_HOGE,...
power_installed_2,config_ID,config_mil,config_civ,mass_to,v_cruise_loiter(mission_ID)
,...
speed_sound_loiter,tip_mach_max,wing_loading,wing_area,DL_MR(dl),rotor_disk_ar
ea,...
sigma_MR(armr,nb),rho_alt_loiter,AR_wing(arw),eff_propeller(np),...
range_loiter(mission_ID),a,b,c,d,f2m,kg2lb,cd0,grav,...
aircraft_ID,tip_speed_MR(vtip),dia_prop,sigma_prop,num_prop,num_MR(nmr),...
flat_plate_factor,oswald,power_share_perc(PS_perc),Trotor_cruise);
power_seg11 = power_loiter;
power_loiter_top = power_loiter;
power_top = power_loiter_top/((1-KT_mcp*(theta_loiter-1))*...
(1+KD_mcp*(delta_loiter-1)));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% NEW 3/14/2023 - 10% efficency decrease to turbofan engines at altitude.
%%%% Basing off of Xavier's lapse rate code/plots
if config_ID == 2
power_top_11tf = power_loiter_top/((1-KT_mcp*(theta_loiter-1))*...
(1+KD_mcp*(delta_loiter-1)));
power_installed_11tf = power_top_11tf*frac_install*frac_inst_mcp;
end
if config_ID == 3
power_top_11tf = power_loiter_tf11/((1-KT_mcp*((theta_loiter)-1))*...
(1+KD_mcp*((delta_loiter)-1)));
power_installed_11tf = frac_install*frac_inst_mcp*power_top_11tf;
power_top_11ts = p_engine_alt_seg11/((1-KT_mcp*((theta_loiter)-1))*...
(1+KD_mcp*((delta_loiter)-1)));
%power_installed_4 =1.25*power_top;
power_installed_11 = frac_install*frac_inst_mcp*power_top;
LD_NOBedit_lo11 =
(((mass_seg10+mass_seg11)/2*grav)*(v_cruise_loiter(mission_ID)))/power_loiter;
end
% #########################################################
end % Mission_ID 1 or 2
% % --------------------------------------------------------------
% % --------------------------------------------------------------
if(mission_ID==3)
% Specify the mode which we will be using for high speed penetration
% 1- Helicopter Mode - SAR
% 2 - Airplane Mode - Military high speed
HSP_type_ID = 1;
[sfc_seg11] = engine_model(engine_ID,3,nengine,power_idle_seg6,...
power_installed,theta_loiter,delta_loiter);
mass_fuel11_1 = sfc_seg11*(power_idle_seg6/1000)*(0.5);
[sfc_to] = engine_model(engine_ID,2,nengine,power_top,...
power_installed,theta_loiter,delta_loiter);
power_installed_11 = frac_install*frac_inst_irp*power_top;
mass_fuel11_2 = (power_hover_total11/1000)*sfc_to*time_hover;
mass_fuel11 = mass_fue11_1+mass_fuel11_2;
power_seg11= power_hover_total11;
end
[thrust_max_seg11,power_loiter_ts11,power_loiter_tf11,power_loiter,mass_fuel11,mass_s
eg11,CL_loiter,f_helicopter_lo,...
fuel_flow_rate_lo,LD_heli_lo,sfc_lo, tsfc_lo,
drag_total_lb_seg11,mass_fuel_tf11,mass_fuel_ts11,time_seg11,power_shaft_altitude_seg
11,p_engine_alt_seg11]...
= cruise_segment(mach_loiter,frac_power_mcp,delta_HOGE,theta_HOGE,...
power_installed_2,config_ID,config_mil,config_civ,mass_to,v_cruise_loiter(mission_ID)
,...
speed_sound_loiter,tip_mach_max,wing_loading,wing_area,DL_MR(dl),rotor_disk_ar
ea,...
sigma_MR(armr,nb),rho_alt_loiter,AR_wing(arw),eff_propeller(np),...
range_loiter(mission_ID),a,b,c,d,f2m,kg2lb,cd0,grav,...
aircraft_ID,tip_speed_MR(vtip),dia_prop,sigma_prop,num_prop,num_MR(nmr),...
flat_plate_factor,oswald,power_share_perc(PS_perc),Trotor_cruise);
power_seg11 = power_loiter;
%%%%% Turboshaft power provided
% TR --> this is the total power from climb
% FTR --> no power by turboshaft
% TR with Jet assist --> partial power by turboshaft
power_loiter_top_ts = power_loiter_ts11/...
((1-KT_mcp*((theta_HOGE)-1))*...
(1+KD_mcp*((delta_HOGE)-1)));
power_installed_11ts = frac_install*frac_inst_mcp*power_loiter_top_ts;
power_loiter_top = power_loiter;
power_top = power_loiter_top/((1-KT_mcp*(theta_loiter-1))*...
(1+KD_mcp*(delta_loiter-1)));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% NEW 3/14/2023 - 10% efficency decrease to turbofan engines at altitude.
%%%% Basing off of Xavier's lapse rate code/plots
if config_ID == 2
power_top_11tf = power_loiter_top/((1-KT_mcp*(theta_loiter-1))*...
(1+KD_mcp*(delta_loiter-1)));
power_installed_11tf = frac_install*frac_inst_mcp*power_top_11tf;
end
if config_ID == 3
power_top_11tf = power_loiter_tf11/((1-KT_mcp*((theta_loiter)-1))*...
(1+KD_mcp*((delta_loiter)-1)));
power_installed_11tf = frac_install*frac_inst_mcp*power_top_11tf;
power_top_11ts = p_engine_alt_seg11/((1-KT_mcp*((theta_loiter)-1))*...
(1+KD_mcp*((delta_loiter)-1)));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%power_installed_4 =1.25*power_top;
power_installed_11 = frac_install*frac_inst_mcp*power_top;
LD_NOBedit_lo11 =
(((mass_seg10+mass_seg11)/2*grav)*(v_cruise_loiter(mission_ID)))/power_loiter;
end % if HSP 2
end % Mission ID 3
% % --------------------------------------------------------------
% % --------------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%
% Segment 12: 2-min HOGE landing [Same as Segment 7]
% VARIATION MADE BY BHARATH
ct_single_rotor = (mass_seg11*grav*(1+hover_dwld_factor)/num_MR(nmr))/...
(rho_alt_HOGE*pi*rad_MR^2*tip_speed_MR(vtip)^2);
cp_single_rotor_ideal = ct_single_rotor^1.5/sqrt(2);
%cp_single_rotor_act = 1.15*(ct_single_rotor^1.5/sqrt(2)) +
((1/8)*cd0*sigma_MR(armr,nb));
cp_single_rotor_act = 1/(FM_MR(fm))*cp_single_rotor_ideal;
power_hover_MR = cp_single_rotor_act*(rho_alt_HOGE*pi*rad_MR^2*tip_speed_MR(vtip)^3);
%if(itercount==1);power_idle = frac_power_idle*power_installed_12;end
% engine model
power_seg12 = power_hover_seg12;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% FINAL CALCULATIONS:
% %Compiling each segments properties
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ==============================================================
%
% Other rotorcraft calculations
%
% ==============================================================
%%%%%% Power used at the stage, aka output/needed during the condition,
%%%%%% turbofan
power_output_tf =
[0,0,power_climb_tf3,power_cruise_tf4,0,power_loiter_tf6,0,power_climb_tf8,power_crui
se_tf9,0,power_loiter_tf11,0];
%%%%%% time of segments
times =
[time_idle,time_hover,time_seg3/3600,time_seg4/3600,time_descent/3600,time_seg6/3600,
time_hover,time_seg8/3600,time_seg9/3600,time_descent/3600,time_seg11/3600,time_hover
];
installed_thrust_cruise = ([thrust_max_seg4,thrust_max_seg9])./(0.93*sigma_cruise*(1-
.73*mach_cruise+0.53*mach_cruise^2));
installed_thrust_loiter =
([thrust_max_seg6,thrust_max_seg11])./(0.93*sigma_loiter*(1-
.73*mach_loiter+0.53*mach_loiter^2));
max_installed_thrust = max([installed_thrust_cruise,installed_thrust_loiter]);
% Compute the weights of the components
eval('AFDD_component_mass');
%mass_payload = useful_load_sizing-(mass_fuel_total+mass_crew*num_crew);
% Useful load
useful_load = mass_to-mass_empty;
% Compute convergence
errortol = (mass_to-mass0_to)/mass0_to;
disp('Error Tol, Mass TO, FM, Eta_prop, itercount, loop count,
sim size')
disp([errortol, mass_to, FM_MR(fm), eff_propeller(np),
itercount,loop_counter,max_loop_counter])
% ##############################################################
% --- END OF FILE ---
% #########################################################