Appendix for Section 2 - College of Engineering



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.

Google Online Preview   Download