Appendix for Section 2 - Purdue University
Contents
Dynamics and Control
2.1 Transit Orbit………..…………………………………………………………………1
2.2 Jovian Tour…………………………………………………………………………...3
2.3 Landing and Communications Concerns……………………………………………15
4. Transit Disturbance Analysis and Attitude Control…………………………………18
5. Lander Attitude Control……………………………………………………………..22
Propulsion
1. Launch Vehicle and Upper Stage…………………………………………………...23
2. Lander and Orbiter Main Propulsion System……………………………………….30
3. Attitude Control Thrusters and AUV Propulsion…………………………………...37
Structures
1. Orbiter Structure…………………………………………………………………….39
2. Lander Structure and AUV Hull…………………………………………………….42
Hydrodynamics
5.1 AUV Features and Configuration……..…………………………………………….49
Power
1. Spacecraft Power Systems…………………………………………………………..55
Thermal
1. Orbiter Thermal and Radiation Control……………………………………………..56
Communications
1. Communication Between AUV, Lander & Orbiter…………………………………73
2. Communications Between Orbiter and Earth……………………………………….74
Appendix 2.1 Transit Orbit Masaki Kakoi
|Calculation of Delta-V at earth and JOI | | |
| | | | | | |
|Altitude |200.00 |(km) |mu Jupiter |1.267E+08 | |
|mu |3.986E+05 | |radius of J |71492 | |
|radius of E |6345.14 |(km) |periapsis |285968 |(km) |
|mu is gravity constant (km^3/s^2) | | | |
| | | | | | |
|Tp |17280000 |(sec) |(period) | | |
|a |1.381E+09 |(km) | | | |
| | | | | | |
|Calculation of departure delta V | | | |
|deltaV = sqrt(vinf^2+2*mu/(altitude+radius)) - sqrt(mu/(altitude+radius)) |
| | | | | | |
|Calculation of JOI | | | | |
|deltaV = sqrt(2*(Vinf^2/2 + mu/periapsis)) - sqrt(2*mu/periapsis - mu/a) |
| | | | | | |
|Launch Date |Vinf(Earth) |deltaV |Vinf(Jupiter) |DeltaV |Total |
|8/23/2018 |3.6 |3.805E+00 |6.14 |6.281E-01 |4.433E+00 |
|8/24/2018 |3.6 |3.805E+00 |6.18 |6.363E-01 |4.441E+00 |
|8/25/2018 |3.5 |3.774E+00 |6.16 |6.322E-01 |4.406E+00 |
|8/26/2018 |3.5 |3.774E+00 |6.19 |6.383E-01 |4.412E+00 |
|8/27/2018 |3.5 |3.774E+00 |6.22 |6.444E-01 |4.419E+00 |
|8/28/2018 |3.5 |3.774E+00 |6.26 |6.526E-01 |4.427E+00 |
|8/29/2018 |3.5 |3.774E+00 |6.3 |6.609E-01 |4.435E+00 |
|8/30/2018 |3.5 |3.774E+00 |6.34 |6.692E-01 |4.443E+00 |
|8/31/2018 |3.5 |3.774E+00 |6.38 |6.775E-01 |4.452E+00 |
|9/1/2018 |3.5 |3.774E+00 |6.42 |6.859E-01 |4.460E+00 |
|9/2/2018 |3.5 |3.774E+00 |6.46 |6.944E-01 |4.469E+00 |
|9/3/2018 |3.4 |3.744E+00 |6.35 |6.713E-01 |4.416E+00 |
|9/4/2018 |3.4 |3.744E+00 |6.39 |6.796E-01 |4.424E+00 |
|9/5/2018 |3.4 |3.744E+00 |6.42 |6.859E-01 |4.430E+00 |
|9/6/2018 |3.6 |3.805E+00 |5.92 |5.845E-01 |4.389E+00 |
|9/7/2018 |3.6 |3.805E+00 |5.92 |5.845E-01 |4.389E+00 |
|9/8/2018 |3.6 |3.805E+00 |5.93 |5.864E-01 |4.391E+00 |
|9/9/2018 |3.6 |3.805E+00 |5.94 |5.884E-01 |4.393E+00 |
|9/10/2018 |3.6 |3.805E+00 |5.95 |5.903E-01 |4.395E+00 |
|9/11/2018 |3.6 |3.805E+00 |5.97 |5.943E-01 |4.399E+00 |
|9/12/2018 |3.6 |3.805E+00 |6 |6.002E-01 |4.405E+00 |
|9/13/2018 |3.6 |3.805E+00 |6.02 |6.041E-01 |4.409E+00 |
|9/14/2018 |3.6 |3.805E+00 |6.06 |6.121E-01 |4.417E+00 |
|9/15/2018 |3.6 |3.805E+00 |6.1 |6.201E-01 |4.425E+00 |
|9/16/2018 |3.6 |3.805E+00 |6.14 |6.281E-01 |4.433E+00 |
|9/17/2018 |3.6 |3.805E+00 |6.2 |6.403E-01 |4.445E+00 |
|9/18/2018 |3.6 |3.805E+00 |6.25 |6.506E-01 |4.455E+00 |
|9/19/2018 |3.6 |3.805E+00 |6.31 |6.629E-01 |4.468E+00 |
|9/20/2018 |3.7 |3.836E+00 |6.19 |6.383E-01 |4.474E+00 |
|9/21/2018 |3.7 |3.836E+00 |6.25 |6.506E-01 |4.487E+00 |
|9/22/2018 |3.7 |3.836E+00 |6.31 |6.629E-01 |4.499E+00 |
|9/23/2018 |3.8 |3.868E+00 |6.07 |6.141E-01 |4.482E+00 |
Appendix 2.2 Jovian Tour Evan Brooks
This portion of the appendix contains the computer code employed to calculate the arrival conditions at Ganymede as well as the possible Jovian tours.
Using the Jupiter and Ganymede orbital elements and knowing the time after epoch, the position of Jupiter and Ganymede are calculated in the code. The code then employs Lambert’s equation to determine a trajectory that intersects both the Ganymede position and our initial position (at the apoapse of the 200-day orbit). The code iterates on semi-major axis in four segments of decreasing step sizes to solve Lambert’s equation. Four step sizes are used so as to decrease the time that the code takes to run. When the trajectory has been determined, the code calculates the PJR maneuver. The last section of the code calculates the arrival V( at Ganymede and its right ascension
The four tours that appear are the major steps in the iteration to find a favorable tour. Each tour has a text portion that shows the sequence of flybys with 4 being Callisto, 3 being Ganymede, and 2 being Europa. Each tour also has a plot of the trajectories that were found included. In each plot, trajectories are represented by a “1” and are plotted in terms of their time of flight and V( at Europa.
clear
%---Jupiter Orbital Elements (J2000)---%
aJ0=5.20336301; %AU
eJ0=0.04839266;
iJ0=1.30530; %deg
LanJ0=100.55615; %deg
LpJ0=14.75385; %deg
MLJ0=34.40438; %deg
JulianCentury=100*11.89130999*365; %days
Rj=71492.0; %km
muj=1.26712e8; %km^3/sec^2
%--------------------------------------%
%---Jupiter Orbital Element Rates------%
%all per Julian Century
aJr=0.00060737;
eJr=-0.00012880;
iJr=-4.15/3600;
LanJr=1217.17/3600;
LpJr=839.93/3600;
MLJr=10925078.35/3600;
%--------------------------------------%
%-Ganymede Orbital Elements (Epoch 1976 Aug 10.00)-%
aG=1070400; %km
eG=0.0016;
wG=68.990; %deg
MG=292.375; %deg
iG=0.186; %deg
LanG0=119.841; %deg
%--------------------------------------------------%
%Rate of change of Longitude
LanGr=50.3176092; %deg/day
%Days after J2000 of arrival
tafterJ2000=9132;
TOF=[108:0.01:110];
for r=1:length(TOF)
Cys=(tafterJ2000+100+TOF(r))/JulianCentury;
%--Jupiter Orbital Elements on Arrival-%
aJ=aJ0+Cys*aJr; %AU
eJ=eJ0+Cys*eJr;
iJ=iJ0+Cys*iJr; %deg
LanJ=LanJ0+Cys*LanJr; %deg
LpJ=LpJ0+Cys*LpJr; %deg
MLJ=MLJ0+Cys*MLJr; %deg
%--------------------------------------%
%---Find True Anomaly of Jupiter on Arrival
%---in order to locate to direction of Xhat
%Iteratively solve for eccentric anomaly (E)
found=0;
MLJ=MLJ*pi/180; %rad
EJ=MLJ; %rad
while ~found
MLnew=EJ-eJ*sin(EJ);
if abs(MLnew-MLJ) 0
if e_angle_min < 0
eclipse = 1;
disp(['Sun is Eclipsed']);
disp(' ');
else
disp(['Sun is in Line-of-Sight, Distance: ',num2str(d),' AU']);
disp(' ');
end
end
if planetswitch == 1
disp(['Planetary Effects are ON, Distance: ',num2str(Dratio),' radii']);
disp([' Angle off Solar Vector: ', num2str(gamma.*180./pi),' deg.']);
disp([' Angular Width: ',num2str(ang_width),' deg.']);
disp([' Average Blackbody Temperature: ',num2str(Tplanet),' K']);
disp([' Albedo Factor: ',num2str(AF)]);
disp(' ');
disp(['Panel Method Settings: ']);
disp([' Spacecraft Curved-Surface Panels: ',num2str(ceil(2.*pi./dbeta))]);
disp([' Vertical Planetary Surface Panels: ',num2str(vert_pts)]);
disp([' Angular Planetary Surface Panels: ',num2str(ang_pts)]);
disp([' Total Planetary Surface Panels: ',num2str(ang_pts.*vert_pts)]);
disp(' ');
else
disp(['Planetary Effects are OFF']);
disp(' ');
disp(['Panel Method Settings: ']);
disp([' Spacecraft Curved-Surface Panels: ',num2str(ceil(2.*pi./dbeta))]);
disp(' ');
end
step = 1; %first iteration step
iterate = 1; %so the first loop will always run...
if tempiter == 1
disp(['Performing Bisector Iteration for Steady State Internal Temperature...']);
disp(' ');
disp(['Initial Temperature: ',num2str(Tint),' K']);
disp(['Iteration: ',num2str(step)]);
else
disp(['Determining steady state heat flux and temperature...']);
disp(' ');
end
while iterate == 1
%sun vector set (inertial)
C_BS = [ cos(psi)*sin(theta)+sin(psi)*cos(phi)*cos(theta), cos(psi)*cos(theta)-sin(psi)*cos(phi)*sin(theta),-sin(psi)*sin(phi);
-sin(psi)*sin(theta)+cos(psi)*cos(phi)*cos(theta), -sin(psi)*cos(theta)-cos(psi)*cos(phi)*sin(theta), -cos(psi)*sin(phi);
sin(phi)*cos(theta), -sin(phi)*sin(theta), cos(phi)];
sun = C_BS(:,1); %actual sun vector, s1
if eclipse == 0
%solar -- curved cylinder surface
%integration around the cylinder in body-fixed coordinate frame
for i = 1:length(beta)
n = [cos(beta(i)) sin(beta(i)) 0];
if dot(sun,n) >= 0 %solar line of sight check
qs_c(i) = (1368./d.^2).*alpha.*dot(sun,n); %W/m^2
else
qs_c(i) = 0;
end
end
if tempiter == 0
figure;
polar(beta,qs_c);
drawnow;
hold on;
end
Qs_c = trapz(qs_c.*L.*dbeta.*R); %W
Ts_c_4th = (qs_c)./const.sigma./(epsilon_eff + epsilon); %K^4
%solar -- top surface
n = [0 0 1];
if dot(sun,n) >= 0 %solar line of sight check
qs_top = (1368./d.^2).*alpha.*dot(sun,n); %W/m.^2
else
qs_top = 0;
end
Qs_top = qs_top.*pi.*R.^2; %W
Ts_top_4th = (qs_top)./const.sigma./(epsilon_eff + epsilon); %K^4
%solar - bottom surface
n = [0 0 -1];
if dot(sun,n) >= 0 %solar line of sight check
qs_bottom = (1368./d.^2).*alpha.*dot(sun,n); %W/m^2
else
qs_bottom = 0;
end
Qs_bottom = qs_bottom.*pi.*R.^2; %W
Ts_bottom_4th = (qs_bottom)./const.sigma./(epsilon_eff + epsilon); %K^4
Qs_tot = Qs_c + Qs_top + Qs_bottom; %W
else
figure;
end
if planetswitch == 1
%planetary blackbody radiation - curved surface
dtheta2 = theta2max./vert_pts;
dphi2 = 2.*pi./ang_pts;
theta2 = 0:dtheta2:theta2max; %vertical planetary angle
phi2 = 0:dphi2:2.*pi; %axial planetary angle
ntop = [0 0 1];
nbottom = [0 0 -1];
for i = 1:length(beta)
n = [cos(beta(i)) sin(beta(i)) 0];
for j = 1:length(phi2)
for k = 1:length(theta2)
theta1(k) = acos((Dratio - cos(theta2(k)))./((1 + Dratio.^2 - 2.*(Dratio).* ...
cos(theta2(k))).^0.5));
P = [(((cos(psi).*cos(gamma-theta) + sin(psi).*cos(phi).*sin(gamma-theta)).*...
cos(phi2(j)) + sin(psi).*sin(phi).*sin(phi2(j))).*sin(theta1(k)) + (-cos(psi).*...
sin(gamma-theta) + sin(psi).*cos(phi).*cos(gamma-theta)).*cos(theta1(k)));
(((-sin(psi).*cos(gamma-theta) + cos(psi).*cos(phi).*sin(gamma-theta)).*...
cos(phi2(j)) + cos(psi).*sin(phi).*sin(phi2(j))).*sin(theta1(k)) + (sin(psi).*...
sin(gamma-theta) + cos(psi).*cos(phi).*cos(gamma-theta)).*cos(theta1(k)));
((sin(phi).*sin(phi-theta).*cos(phi2(j)) - cos(phi).*sin(phi2(j))).*sin(theta1(k)) +...
(sin(phi).*cos(gamma-theta)).*cos(theta1(k)))];
C_BN = [((cos(psi).*cos(gamma-theta)+sin(psi).*cos(phi).*sin(gamma-theta)).*...
cos(phi2(j))+sin(psi).*sin(phi).*sin(phi2(j))).*sin(theta2(k))-(-cos(psi).*...
sin(gamma-theta)+sin(psi).*cos(phi).*cos(gamma-theta)).*cos(theta2(k)), ((cos(psi).*...
cos(gamma-theta)+sin(psi).*cos(phi).*sin(gamma-theta)).*cos(phi2(j))+sin(psi).*sin(phi).*...
sin(phi2(j))).*cos(theta2(k))+(-cos(psi).*sin(gamma-theta)+sin(psi).*cos(phi).*...
cos(gamma-theta)).*sin(theta2(k)),(cos(psi).*cos(gamma-theta)+sin(psi).*cos(phi).*...
sin(gamma-theta)).*sin(phi2(j))-sin(psi).*sin(phi).*cos(phi2(j));
((-sin(psi).*cos(gamma-theta)+cos(psi).*cos(phi).*sin(gamma-theta)).*...
cos(phi2(j))+cos(psi).*sin(phi).*sin(phi2(j))).*sin(theta2(k))-(sin(psi).*...
sin(gamma-theta)+cos(psi).*cos(phi).*cos(gamma-theta)).*cos(theta2(k)), ((-sin(psi).*...
cos(gamma-theta)+cos(psi).*cos(phi).*sin(gamma-theta)).*cos(phi2(j))+cos(psi).*...
sin(phi).*sin(phi2(j))).*cos(theta2(k))+(sin(psi).*sin(gamma-theta)+cos(psi).*...
cos(phi).*cos(gamma-theta)).*sin(theta2(k)), (-sin(psi).*cos(gamma-theta)+cos(psi).*...
cos(phi).*sin(gamma-theta)).*sin(phi2(j))-cos(psi).*sin(phi).*cos(phi2(j));
(sin(phi).*sin(gamma-theta).*cos(phi2(j))-cos(phi).*sin(phi2(j))).*...
sin(theta2(k))-sin(phi).*cos(gamma-theta).*cos(theta2(k)), (sin(phi).*...
sin(gamma-theta).*cos(phi2(j))-cos(phi).*sin(phi2(j))).*cos(theta2(k))+sin(phi).*...
cos(gamma-theta).*sin(theta2(k)), sin(phi).*sin(gamma-theta).*sin(phi2(j))+cos(phi).*cos(phi2(j))];
%Blackbody Radiation on side curved surface
if dot(P,n) >= 0 %planetary surface line of sight check
qbb_c_ang2(i,j,k) = alpha.*((const.sigma.*Tplanet.^4)).*sin(theta2(k)).*...
dtheta2.*dphi2.*dot(P,n)./(2.*pi.*(1 + Dratio.^2 - 2.*Dratio.*cos(theta2(k)))); %W/m^2
else
qbb_c_ang2(i,j,k) = 0; %W/m^2
end
if eclipse == 0
%Reflected Sunlight on side curved surface
if dot(P,n) >=0 %planetary line of sight check
if dot(sun,C_BN(:,1)) >=0 %solar line of sight check (for planetary differential area)
qrefl_c_ang2(i,j,k) = AF.*(1368./d.^2).*alpha.*sin(theta2(k)).*...
dtheta2.*dphi2.*dot(P,n).*dot(sun,C_BN(:,1))./(2.*pi.*(1 + Dratio.^2 - 2.*Dratio.*cos(theta2(k)))); %W/m^2
else
qrefl_c_ang2(i,j,k) = 0; %W/m^2
end
else
qrefl_c_ang2(i,j,k)=0; %W/m^2
end
end
end
%summation of contributions along vertical planetary angle
qbb_c_ang1(i,j) = trapz(qbb_c_ang2(i,j,:));
if eclipse == 0
qrefl_c_ang1(i,j) = trapz(qrefl_c_ang2(i,j,:));
end
end
%summation of contributions along axial planetary angle
qbb_c(i) = trapz(qbb_c_ang1(i,:)); %W/m^2
Tbb_c_4th = (qbb_c)./const.sigma./(epsilon_eff + epsilon); %K^4
if eclipse == 0
qrefl_c(i) = trapz(qrefl_c_ang1(i,:)); %W/m^2
Trefl_c_4th = (qrefl_c)./const.sigma./(epsilon_eff + epsilon); %K^4
end
if tempiter == 0
if eclipse == 0
polar(beta(i),qrefl_c(i));
hold on;
end
polar(beta(i),qbb_c(i));
hold on;
title(['Integration Progress: beta = ',num2str(beta(i).*180./pi),' deg.']);
drawnow;
end
end
%total heat flows through curved sides
Qbb_c = trapz(qbb_c.*L.*R.*dbeta);
Qrefl_c = trapz(qrefl_c.*L.*R.*dbeta);
%top and bottom surfaces
for j = 1:length(phi2)
for k = 1:length(theta2)
theta1(k) = acos((Dratio - cos(theta2(k)))./((1 + Dratio.^2 - 2.*(Dratio).* ...
cos(theta2(k))).^0.5));
P = [(((cos(psi).*cos(gamma-theta) + sin(psi).*cos(phi).*sin(gamma-theta)).*...
cos(phi2(j)) + sin(psi).*sin(phi).*sin(phi2(j))).*sin(theta1(k)) + (-cos(psi).*...
sin(gamma-theta) + sin(psi).*cos(phi).*cos(gamma-theta)).*cos(theta1(k)));
(((-sin(psi).*cos(gamma-theta) + cos(psi).*cos(phi).*sin(gamma-theta)).*...
cos(phi2(j)) + cos(psi).*sin(phi).*sin(phi2(j))).*sin(theta1(k)) + (sin(psi).*...
sin(gamma-theta) + cos(psi).*cos(phi).*cos(gamma-theta)).*cos(theta1(k)));
((sin(phi).*sin(phi-theta).*cos(phi2(j)) - cos(phi).*sin(phi2(j))).*sin(theta1(k)) +...
(sin(phi).*cos(gamma-theta)).*cos(theta1(k)))];
C_BN = [((cos(psi).*cos(gamma-theta)+sin(psi).*cos(phi).*sin(gamma-theta)).*...
cos(phi2(j))+sin(psi).*sin(phi).*sin(phi2(j))).*sin(theta2(k))-(-cos(psi).*...
sin(gamma-theta)+sin(psi).*cos(phi).*cos(gamma-theta)).*cos(theta2(k)), ((cos(psi).*...
cos(gamma-theta)+sin(psi).*cos(phi).*sin(gamma-theta)).*cos(phi2(j))+sin(psi).*...
sin(phi).*sin(phi2(j))).*cos(theta2(k))+(-cos(psi).*sin(gamma-theta)+sin(psi).*...
cos(phi).*cos(gamma-theta)).*sin(theta2(k)),(cos(psi).*cos(gamma-theta)+sin(psi).*...
cos(phi).*sin(gamma-theta)).*sin(phi2(j))-sin(psi).*sin(phi).*cos(phi2(j));
((-sin(psi).*cos(gamma-theta)+cos(psi).*cos(phi).*sin(gamma-theta)).*cos(phi2(j))+cos(psi).*...
sin(phi).*sin(phi2(j))).*sin(theta2(k))-(sin(psi).*sin(gamma-theta)+cos(psi).*cos(phi).*...
cos(gamma-theta)).*cos(theta2(k)), ((-sin(psi).*cos(gamma-theta)+cos(psi).*cos(phi).*...
sin(gamma-theta)).*cos(phi2(j))+cos(psi).*sin(phi).*sin(phi2(j))).*cos(theta2(k))+(sin(psi).*...
sin(gamma-theta)+cos(psi).*cos(phi).*cos(gamma-theta)).*sin(theta2(k)), (-sin(psi).*...
cos(gamma-theta)+cos(psi).*cos(phi).*sin(gamma-theta)).*sin(phi2(j))-cos(psi).*sin(phi).*...
cos(phi2(j));
(sin(phi).*sin(gamma-theta).*cos(phi2(j))-cos(phi).*sin(phi2(j))).*sin(theta2(k))-sin(phi).*...
cos(gamma-theta).*cos(theta2(k)), (sin(phi).*sin(gamma-theta).*cos(phi2(j))-cos(phi).*...
sin(phi2(j))).*cos(theta2(k))+sin(phi).*cos(gamma-theta).*sin(theta2(k)), sin(phi).*...
sin(gamma-theta).*sin(phi2(j))+cos(phi).*cos(phi2(j))];
%Blackbody radiation on top surface
if dot(P,ntop) >= 0 %planetary line of sight check
qbb_top_ang2(j,k) = alpha.*((const.sigma.*Tplanet.^4)).*sin(theta2(k)).*...
dtheta2.*dphi2.*dot(P,ntop)./(2.*pi.*(1 + Dratio.^2 - 2.*Dratio.*cos(theta2(k)))); %W/m^2
else
qbb_top_ang2(j,k) = 0; %W/m^2
end
%Blackbody radiation on bottom surface
if dot(P,nbottom) >= 0 %planetary line of sight check
qbb_bottom_ang2(j,k) = alpha.*((const.sigma.*Tplanet.^4)).*sin(theta2(k)).*...
dtheta2.*dphi2.*dot(P,nbottom)./(2.*pi.*(1 + Dratio.^2 - 2.*Dratio.*cos(theta2(k)))); %W/m^2
else
qbb_bottom_ang2(j,k) = 0; %W/m^2
end
%Reflected Sunlight on Top Surface
if eclipse == 0
if dot(P,ntop) >= 0 %planetary line of sight check
if dot(sun,C_BN(:,1)) >= 0 %solar line of sight check (for planetary differential area)
qrefl_top_ang2(j,k) = AF.*(1368./d.^2).*alpha.*sin(theta2(k)).*...
dtheta2.*dphi2.*dot(P,ntop).*dot(sun,C_BN(:,1))./(2.*pi.*(1 + Dratio.^2 - 2.*Dratio.*cos(theta2(k)))); %W/m^2
else
qrefl_top_ang2(j,k) = 0; %W/m^2
end
else
qrefl_top_ang2(j,k)=0; %W/m^2
end
%Reflected Sunlight on Bottom Surface
if dot(P,nbottom) >= 0 %planetary line of sight check
if dot(sun,C_BN(:,1)) >= 0 %solar line of sight check (for planetary differential area)
qrefl_bottom_ang2(j,k) = AF.*(1368./d.^2).*alpha.*sin(theta2(k)).*...
dtheta2.*dphi2.*dot(P,nbottom).*dot(sun,C_BN(:,1))./(2.*pi.*(1 + Dratio.^2 - 2.*Dratio.*cos(theta2(k)))); %W/m^2
else
qrefl_bottom_ang2(j,k) = 0; %W/m^2
end
else
qrefl_bottom_ang2(j,k)=0; %W/m^2
end
end
end
%summing over all vertical angular contributions
qbb_top_ang1(j) = trapz(qbb_top_ang2(j,:)); %W/m^2
qbb_bottom_ang1(j) = trapz(qbb_bottom_ang2(j,:)); %W/m^2
if eclipse == 0
qrefl_top_ang1(j) = trapz(qrefl_top_ang2(j,:)); %W/m^2
qrefl_bottom_ang1(j) = trapz(qrefl_bottom_ang2(j,:)); %W/m^2
end
end
%summing over all axial angular contributions to get final contribution
%of the planet at a point on the cylinder
qbb_top = trapz(qbb_top_ang1); %W/m^2
qbb_bottom = trapz(qbb_bottom_ang1); %W/m^2
Qbb_top = qbb_top.*pi.*(R.^2); %W
Qbb_bottom = qbb_bottom.*pi.*(R.^2); %W
Tbb_top_4th = (qbb_top)./const.sigma./(epsilon_eff + epsilon); %K^4
Tbb_bottom_4th = (qbb_bottom)./const.sigma./(epsilon_eff + epsilon); %K^4
Qbb_tot = Qbb_c + Qbb_top + Qbb_bottom; %W
if eclipse == 0
qrefl_top = trapz(qrefl_top_ang1); %W/m^2
qrefl_bottom = trapz(qrefl_bottom_ang1); %W/m^2
Qrefl_top = qrefl_top.*pi.*(R.^2); %W
Qrefl_bottom = qrefl_bottom.*pi.*(R.^2); %W
Trefl_top_4th = (qrefl_top)./const.sigma./(epsilon_eff + epsilon); %K^4
Trefl_bottom_4th = (qrefl_bottom)./const.sigma./(epsilon_eff + epsilon); %K^4
Qrefl_tot = Qrefl_c + Qrefl_top + Qrefl_bottom; %W
end
if eclipse == 0
q_tot_c = qs_c + qbb_c + qrefl_c; %W/m^2
q_tot_top = qs_top + qbb_top + qrefl_top; %W/m^2
q_tot_bottom = qs_bottom + qbb_bottom + qrefl_bottom; %W/m^2
Qtotal = Qs_tot + Qrefl_tot + Qbb_tot; %W
T_top_4th = Ts_top_4th + Tbb_top_4th + Trefl_top_4th + (const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
T_bottom_4th = Ts_bottom_4th + Tbb_bottom_4th + Trefl_bottom_4th +(const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
T_c_4th = Ts_c_4th + Tbb_c_4th + Trefl_c_4th +(const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
else
q_tot_c = qbb_c; %W/m^2
q_tot_top = qbb_top; %W/m^2
q_tot_bottom = qbb_bottom; %W/m^2
Qtotal = Qbb_tot; %W
T_top_4th = Tbb_top_4th + (const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
T_bottom_4th = Tbb_bottom_4th + (const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
T_c_4th = Tbb_c_4th + (const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
end
elseif eclipse == 0 %planet is switched off and the sun isn't eclipsed
q_tot_c = qs_c; %W/m^2
q_tot_top = qs_top; %W/m^2
q_tot_bottom = qs_bottom; %W/m^2
Qtotal = Qs_tot;
T_top_4th = Ts_top_4th + (const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
T_bottom_4th = Ts_bottom_4th + (const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
T_c_4th = Ts_c_4th + (const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
else
%if for some reason the planet and sun are both switched off...
q_tot_c = 0;
q_tot_top = 0; %W/m^2
q_tot_bottom = 0; %W/m^2
Qtotal = 0;
T_c_4th = (const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
T_top_4th = (const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
T_bottom_4th = (const.sigma.*epsilon_eff.*Tint.^4)./const.sigma./(epsilon_eff + epsilon); %K^4
end
if tempiter == 0
figure;
polar(beta,q_tot_c);
title(['Total External Heat Flux Distribution, q_t_o_p = ',num2str(q_tot_top),' W/m^2, q_b_o_t_t_o_m = ',num2str(q_tot_bottom),' W/m^2']);
end
%outer surface temperatures
T_top = T_top_4th.^0.25; %K
T_bottom = T_bottom_4th.^0.25; %K
T_c = T_c_4th.^0.25; %K
if tempiter == 0
figure;
polar(beta,T_c);
title(['Outer Surface Temperature Distribution, T_t_o_p = ',num2str(T_top),' K, T_b_o_t_t_o_m = ',num2str(T_bottom),' K']);
end
%heat flux through the wall
q_wall_c = epsilon_eff.*const.sigma.*(T_c_4th - Tint.^4);
q_wall_top = epsilon_eff.*const.sigma.*(T_top_4th - Tint.^4);
q_wall_bottom = epsilon_eff.*const.sigma.*(T_bottom_4th - Tint.^4);
for i = 1:(length(beta))
if q_wall_c(i) < 0
inflow(i) = 0;
outflow(i) = q_wall_c(i);
else
inflow(i) = q_wall_c(i);
outflow(i) = 0;
end
end
if tempiter == 0
if max(abs(outflow)) > max(abs(inflow))
figure;
polar(beta,-outflow,'b');
hold on;
polar(beta,inflow,'r');
title(['Wall Heat Flux Distribution, ','q_t_o_p = ',num2str(q_wall_top),' W/m^2, q_b_o_t_t_o_m = ',num2str(q_wall_bottom),' W/m^2']);
else
figure;
polar(beta,inflow,'r');
hold on;
polar(beta,-outflow,'b');
title(['Wall Heat Flux Distribution, ','q_t_o_p = ',num2str(q_wall_top),' W/m^2, q_b_o_t_t_o_m = ',num2str(q_wall_bottom),' W/m^2']);
end
end
%total heat through walls
Q_wall_c = trapz(q_wall_c.*dbeta.*R.*L);
Q_wall_top = trapz(q_wall_top.*pi.*(R.^2));
Q_wall_bottom = trapz(q_wall_bottom.*pi.*(R.^2));
Q_wall_total = Q_wall_c + Q_wall_top + Q_wall_bottom;
disp([' External Heat Flow: ',num2str(Q_wall_total),' W']);
%excess heat flow -- zero for steady state interior temperature
Q_excess = Q_wall_total + Q_elec + Q_RTG;
disp([' Excess Heat: ',num2str(Q_excess),' W']);
%total surface area
Asurf_tot = Asurf_top + Asurf_bottom + Asurf_c + Atank_f + Atank_ox + Atank_he; %m^2
if tempiter == 0
%running sizing code - assuming radiation at internal temperature
[mass, A_rad, volume, power] = sizing(abs(Q_excess)./1e3,epsilon,Trad,Asurf_tot);
disp(' ');
disp('Sizing for Current Configuration...');
disp(' ');
disp(' Required Subsystem Mass: (kg)');
disp(' ');
disp(mass);
disp(' ');
disp(' Required Subsystem Volume: (m^3)');
disp(' ');
disp(volume);
disp(' ');
disp([' Electrical Power Required: ',num2str(power),' W']);
disp([' Radiator Area Required: ',num2str(A_rad),' m^3']);
end
%heat excess check for bisector iteration
if tempiter == 1
if Q_excess > Qtol
step = step + 1;
Tint_min = Tint;
Tint = (Tint_max + Tint_min)./2;
disp([' Current Temperature: ',num2str(Tint),' K']);
disp(' ');
disp(['Iteration: ',num2str(step)]);
elseif Q_excess < -Qtol
step = step + 1;
Tint_max = Tint;
Tint = (Tint_max + Tint_min)./2;
disp([' Current Temperature: ',num2str(Tint),' K']);
disp(' ');
disp(['Iteration: ',num2str(step)]);
else
tempiter = 0;
disp([' Current Temperature: ',num2str(Tint),' K']);
disp(' ');
disp(['Bisector Iteration Complete']);
disp(' ');
disp(['Steady State Temperature: ',num2str(Tint),' K']);
end
else
iterate = 0;
end
end
disp( '--------------------------------------------------------------------------');
THERMORB.M
%Orbiter Thermal Analysis Driver
%By John M. Merchant
%AAE 450 - Spring 2002
global const
constants;
tempiter = 0; %switch: 1 to find steady state temperature, 0 for set value
Tint = 286.5; %K - Maintained interior wall temperature or starting point
%for iteration.
Trad = 286.5; %Radiator Temperature
%change in angle beta around cylinder -- angular panel spacing
dbeta = 0.05; %for a cylindrical shape -- Orbiter
%wall and insulation properties
epsilon = 0.77; %surface emissivity -- silvered teflon
%epsilon = 0.06; %com dish value
epsilon_eff = 0.02; %maximum effective insulation emissivity (treated as radiation through many thin layers)
%epsilon = 0.81; %surface emissivity -- Aluminized Kapton
%cylinder dimensions
R = 2.8/2; %Radius (m) -- Orbiter
L = 3.3; %Length (m) -- Orbiter
%Tank Dimensions
Rtank_f = 0.6978;
Rtank_ox = 0.6835;
Rtank_he = 0.5357;
%Interior heat dissipation
exposure_RTG = 0.0; %fraction of RTG area exposed to orbiter
Q_RTG = [2].*exposure_RTG.*4000; %W
Q_elec = 210; %W ?????
%surface area
Asurf_top = pi.*R.^2;
Asurf_bottom = Asurf_top;
Asurf_c = 2.*pi.*R.*L;
Atank_f = (4/3).*pi.*Rtank_f.^3;
Atank_ox = (4/3).*pi.*Rtank_ox.^3;
Atank_he = (4/3).*pi.*Rtank_he.^3;
%Loading Environment
disp('Available Environments: ');
disp('1 --> Venus Flyby at 2900 km, local noon');
disp('2 --> Low Earth Orbit at 200 km, local noon');
disp('3 --> Europa Orbit at 200 km, local noon');
disp('4 --> Perihelion at 0.61 AU');
disp('5 --> Venus Approach at 0.723 AU');
disp('6 --> Jupiter Approach at 5.2 AU');
disp('7 --> Venus Flyby at 2900 km, local sunrise');
disp('8 --> Venus Flyby at 2900 km, local night');
disp('9 --> Midcourse -- 2 AU');
environment = input('>> ');
if environment == 1
[year,d,planetswitch,gamma,Dratio,Tplanet,AF] = Venus_flyby;
elseif environment == 2
[year,d,planetswitch,gamma,Dratio,Tplanet,AF] = LEO;
elseif environment == 3
[year,d,planetswitch,gamma,Dratio,Tplanet,AF] = Europa;
elseif environment == 4
[year,d,planetswitch,gamma,Dratio,Tplanet,AF] = perihelion;
elseif environment == 5
[year,d,planetswitch,gamma,Dratio,Tplanet,AF] = Venus_approach;
elseif environment == 6
[year,d,planetswitch,gamma,Dratio,Tplanet,AF] = Jupiter_approach;
elseif environment == 7
[year,d,planetswitch,gamma,Dratio,Tplanet,AF] = Venus_flyby_sunrise;
elseif environment == 8
[year,d,planetswitch,gamma,Dratio,Tplanet,AF] = Venus_flyby_shadow;
elseif environment == 9
[year,d,planetswitch,gamma,Dratio,Tplanet,AF] = midcourse_2au;
end
%Choosing Orientation
% 3-1-3 Set Angles
disp(' ');
disp('Define Orientation: ');
theta = input('Precession Angle (deg) = ').*pi./180; %precession angle
phi = input('Nutation Angle (deg) = ').*pi./180; %nutation angle
psi = input('Spin Angle (deg) = ').*pi./180; %spin angle
%surface properties
alpha = 0.17 + (year-1).*0.03; %surface absorptivity -- silvered teflon
%alpha = 0.2; %com dish value
[mass volume power A_rad Q_excess Tint] = cylmodel(dbeta,year,alpha,epsilon,...
epsilon_eff,Tint,Trad,R,L,theta,phi,psi,d,planetswitch,gamma,Dratio,Tplanet,AF,...
tempiter,exposure_RTG,Q_RTG,Q_elec,Asurf_top,Asurf_bottom,Asurf_c,...
Atank_f,Atank_ox,Atank_he);
SIZING.M
%hardware sizing
function [mass, A_rad, volume, power] = sizing(Qtotal,epsilon,Trad,Asurf_tot);
global const
%radiator sizing
A_rad = (Qtotal.*1e3)./(epsilon.*const.sigma.*Trad.^4);
m_rad = 10.6.*A_rad; %kg - fixed radiators
V_rad = 0.04.*A_rad; %m.^2
%heat exchanger sizing
m_hx = (17 + 0.25.*Qtotal);
V_hx = (0.016+0.0012.*Qtotal);
%pumps
m_pumps = 1.25.*(4.8.*Qtotal); %includes plumbing, valves, fluids, instruments
V_pumps = 0.017.*Qtotal;
power_pumps = 23.*Qtotal; %W
thickness_MLI = 0.01;
areadensity_MLI = 1.0; %kg/m^2
m_MLI=Asurf_tot.*areadensity_MLI;
V_MLI=Asurf_tot.*thickness_MLI;
%total
m_tot = (m_rad + m_hx + m_pumps + m_MLI);
V_tot = (V_rad + V_hx + V_pumps + V_MLI);
mass = struct('radiators',m_rad,'hexchangers',m_hx,...
'pumps',m_pumps,'MLI',m_MLI,...
'total',m_tot);
volume = struct('radiators',V_rad,'hexchangers',V_hx,...
'pumps',V_pumps,'MLI',V_MLI,...
'total',V_tot);
power = power_pumps;
VENUS_FLYBY.M
%Venus Flyby Environment Setup
%By John M. Merchant
%AAE 450 - Spring 2002
function [year,d,planetswitch,gamma,Dratio,Tplanet,AF] = Venus_flyby()
global const
constants;
year = 1; %current year in flight
d = 0.723; %distance from the sun in AU
planetswitch = 1; %switch: 1 for planet, 0 for just the sun
gamma = [180].*pi./180; %planetary angle wrt. sun vector in ecliptic plane
Dratio = 1.479; %nondimensional distance from planet in radii
Tplanet = enus; %planet blackbody temperature
AF = const.AFvenus; %albedo factor
Appendix 9.1 Communication Between AUV, Lander & Orbiter Jerry Niemczura
The following MATLAB code was used to size the communications link between the lander and the orbiter using the iterative procedure outlined in section 9.1 of the report. The first section specifies all the inputs to the system
clear all
Rb = 30*10^6; %Transfer Rate (b/s)
Rbr = 100; %downlink bit rate (b/s)
BW = 180; %Beamwidth (radians)
BWO = 140; %Orbiter Beamwidth (radians)
eta = 0.6; %transmitter efficiency
k = 1.38e-23; %Boltzmann's Constant (J/K)
T = 120; %Operating Temperature (K)
alt = 100; %Distance between antennas (km)
%”guesses”
D = 0.1; %Antenna Diameter (m)
Pt = 7; %tranmitting antenna power (W)
%receiving antenna gain
Gr = 52000/(BWO^2);
%transmitting antenna gain
Gt = 52000/(BW^2);
%frequency (uplink)
f = sqrt(Gt/(eta*10.472^2*D^2));
%orbiter antenna frequency (downlink)
fr = sqrt(Gr/(eta*10.472^2*D^2));
%Space loss
SL = 10*log10((4*pi/3e8)^2*(f*10^9)^2*(alt*1000)^2);
%Space loss (downlink)
SLr = 10*log10((4*pi/3e8)^2*(fr*10^9)^2*(alt*1000)^2);
%effective isentropically radiated power
EIRP = 10*log10(Gt*Pt);
%EIRP (downlink)
EIRPr = 10*log10(Gr*Pt);
%signal/noise ratio in dB
CN0dB = (EIRP) - SL + 10*log10(Gr) - 10*log10(k) - 10*log10(T);
%signal/noise dB (downlink)
CN0dBr = (EIRP) - SLr + 10*log10(Gt) - 10*log10(k) - 10*log10(T);
%signal to noise conversion from dB
CN0 = 10^(CN0dB/10);
CN0r = 10^(CN0dBr/10);
%bit error rate calculation
BER = 0.5*erfc(sqrt(CN0/Rb));
BERr = 0.5*erfc(sqrt(CN0r/100));
%gain conversion to dB
GaindB = 10*log10(Gt);
%display results
disp(['f = ', num2str(f), ' GHz BER = ', num2str(BER), ' Gain = ', num2str(GaindB), ' dB'])
%end
Appendix 9.2 Communications Between Orbiter and Earth James Burkett
|Budget Link Analysis -- | | | | | |
|Lander-to-Orbiter | | | | | |
| | | | | | | |
| | | | | | | |
|k (Boltzman's Const) |-228.60 |dB |k = -228.60; | | |%[dBJpK] |
| | | | | | |Boltzmann's constant|
| | | | | | |k = 1.38x10^-23 J/K |
|C/N |8.40E+01 |dB |C_N = Pr - No - Bn = Pr - k - Ts - Bn; |%[dB] carrier-to-noise ratio (Roddy, p.188, eqn. 6.38) | | |
| | | | | | |
|BER |5.093E-43 | | | | |
|Carrier-to-Noise Ratio |8.400E+01 |dB/dB | | | Roddy's "Satellite Communciations", p.140, says that 10^-4 BER is standard |
| | | | | |
| | | | | |
| | | | | | |
| | | | | | | |
|k (Boltzman's Const) |-228.60 |dB |k = -228.60; | | |
| | | | | | |
|Bit Error Rate |5.972E-45 | | | |
|Carrier-to-Noise Ratio |8.420E+01 |dB/dB | | Roddy's "Satellite Communciations", p.140, says that 10^-4 BER is standard |
|Budget Link Analysis -- | | | | |
|Earth-to-Orbiter | | | | |
| | | | | |
| | | | | | | |
|C/N |1.18E+02 |dB |C_N = Pr - No - Bn = Pr - k - Ts - Bn; |%[dB] carrier-to-noise ratio (Roddy, p.188, eqn. 6.38) |
| | | | | |
|Bit Error Rate |2.911E-10 | | | |
|Carrier-to-Noise Ratio |1.176E+02 |dB/dB | | Roddy's "Satellite Communciations", p.140, says that 10^-4 BER is standard |
|Budget Link Analysis -- | | | | |
|Orbiter-to-Earth | | | | |
| | | | | | |
| | | | | | |
| | | | | |
| | | | | | |
|Bit Error Rate |3.720E-04 | | | |
|Carrier-to-Noise Ratio |7.232E+01 |dB/dB | | Roddy's "Satellite Communciations", p.140, says that 10^-4 BER is standard |
-----------------------
[pic]
[pic]
[pic]
[pic]
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related searches
- chapter 8 section 2 photosynthesis
- chapter 8 section 2 photosynthesis answers
- article 2 section 2 of us constitution
- fmpm section 2 5
- 14th amendment section 2 simple
- 14th amendment section 2 explained
- 14th amendment section 2 meaning
- chapter 4 section 2 economics
- purdue university plagiarism checker
- fmpm section 2 0
- purdue university salaries
- article 2 section 2 of the constitution