Appendix for Section 2 - Purdue Engineering · Web viewAppendix 4.2 Lander Structure and AUV Hull...
Transcript of Appendix for Section 2 - Purdue Engineering · Web viewAppendix 4.2 Lander Structure and AUV Hull...
Contents
Dynamics and Control
2.1 Transit Orbit………..…………………………………………………………………1
2.2 Jovian Tour…………………………………………………………………………...3
2.3 Landing and Communications Concerns……………………………………………15
2.4 Transit Disturbance Analysis and Attitude Control…………………………………18
2.5 Lander Attitude Control……………………………………………………………..22
Propulsion
3.1 Launch Vehicle and Upper Stage…………………………………………………...23
3.2 Lander and Orbiter Main Propulsion System……………………………………….30
3.3 Attitude Control Thrusters and AUV Propulsion…………………………………...37
Structures
4.1 Orbiter Structure…………………………………………………………………….39
4.2 Lander Structure and AUV Hull…………………………………………………….42
Hydrodynamics
5.1 AUV Features and Configuration……..…………………………………………….49
Power
6.1 Spacecraft Power Systems…………………………………………………………..55
Thermal
7.1 Orbiter Thermal and Radiation Control……………………………………………..56
Communications
9.1 Communication Between AUV, Lander & Orbiter…………………………………73
9.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+08mu 3.986E+05 radius of J 71492radius 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 VdeltaV = sqrt(vinf^2+2*mu/(altitude+radius)) - sqrt(mu/(altitude+radius))
Calculation of JOIdeltaV = sqrt(2*(Vinf^2/2 + mu/periapsis)) - sqrt(2*mu/periapsis - mu/a)
Launch Date Vinf(Earth) deltaV Vinf(Jupiter) DeltaV Total8/23/2018 3.6 3.805E+00 6.14 6.281E-01 4.433E+008/24/2018 3.6 3.805E+00 6.18 6.363E-01 4.441E+008/25/2018 3.5 3.774E+00 6.16 6.322E-01 4.406E+008/26/2018 3.5 3.774E+00 6.19 6.383E-01 4.412E+008/27/2018 3.5 3.774E+00 6.22 6.444E-01 4.419E+008/28/2018 3.5 3.774E+00 6.26 6.526E-01 4.427E+008/29/2018 3.5 3.774E+00 6.3 6.609E-01 4.435E+008/30/2018 3.5 3.774E+00 6.34 6.692E-01 4.443E+008/31/2018 3.5 3.774E+00 6.38 6.775E-01 4.452E+009/1/2018 3.5 3.774E+00 6.42 6.859E-01 4.460E+009/2/2018 3.5 3.774E+00 6.46 6.944E-01 4.469E+009/3/2018 3.4 3.744E+00 6.35 6.713E-01 4.416E+009/4/2018 3.4 3.744E+00 6.39 6.796E-01 4.424E+009/5/2018 3.4 3.744E+00 6.42 6.859E-01 4.430E+009/6/2018 3.6 3.805E+00 5.92 5.845E-01 4.389E+009/7/2018 3.6 3.805E+00 5.92 5.845E-01 4.389E+009/8/2018 3.6 3.805E+00 5.93 5.864E-01 4.391E+009/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+009/11/2018 3.6 3.805E+00 5.97 5.943E-01 4.399E+009/12/2018 3.6 3.805E+00 6 6.002E-01 4.405E+009/13/2018 3.6 3.805E+00 6.02 6.041E-01 4.409E+009/14/2018 3.6 3.805E+00 6.06 6.121E-01 4.417E+009/15/2018 3.6 3.805E+00 6.1 6.201E-01 4.425E+009/16/2018 3.6 3.805E+00 6.14 6.281E-01 4.433E+009/17/2018 3.6 3.805E+00 6.2 6.403E-01 4.445E+009/18/2018 3.6 3.805E+00 6.25 6.506E-01 4.455E+009/19/2018 3.6 3.805E+00 6.31 6.629E-01 4.468E+009/20/2018 3.7 3.836E+00 6.19 6.383E-01 4.474E+009/21/2018 3.7 3.836E+00 6.25 6.506E-01 4.487E+009/22/2018 3.7 3.836E+00 6.31 6.629E-01 4.499E+00
1
9/23/2018 3.8 3.868E+00 6.07 6.141E-01 4.482E+00
2
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.
3
clear
%---Jupiter Orbital Elements (J2000)---%aJ0=5.20336301; %AUeJ0=0.04839266;iJ0=1.30530; %degLanJ0=100.55615; %degLpJ0=14.75385; %degMLJ0=34.40438; %degJulianCentury=100*11.89130999*365; %daysRj=71492.0; %kmmuj=1.26712e8; %km^3/sec^2%--------------------------------------%
%---Jupiter Orbital Element Rates------%%all per Julian CenturyaJr=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; %kmeG=0.0016;wG=68.990; %degMG=292.375; %degiG=0.186; %degLanG0=119.841; %deg%--------------------------------------------------%%Rate of change of LongitudeLanGr=50.3176092; %deg/day
%Days after J2000 of arrivaltafterJ2000=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;
4
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.001 found=1; end EJ=EJ-(EJ-eJ*sin(EJ)-MLJ)/(1-eJ*cos(EJ)); end %Solve for true anomaly (ta) knowing eccentric %anomaly and eccentricity taJ=2*atan(sqrt((1+eJ)/(1-eJ))*tan(EJ/2)); if taJ<0 taJ=taJ+2*pi; end taJ_deg=taJ*180/pi; LpJ_deg=mod(LpJ*180/pi,360); %Position CW from directly up is direction of Xhat Xhat_loc=taJ_deg+LpJ_deg; %The true anomaly and the longitude of periapsis %determine the orientation of the Xhat vector in %the Jupiter frame, which can be used to identify %the location of Ganymede knowing its orbital %elements %Determine the time after the Epoch until the first %Ganymede encounter to locate the position of %Ganymede in the Jupiter frame of reference %Time until J2000 (8/10/76-1/1/77, 77-00, 5 leap years) t_to_J2000=8543; %days t_to_JOI=tafterJ2000;
5
t_after_epoch=t_to_J2000+t_to_JOI+100+TOF(r); LanG=mod(LanG0+LanGr*t_after_epoch,360); %use this time also to find the true anomaly of %Ganymede at this time (from mean anomaly) MG_rad=MG*pi/180; nG=sqrt(muj/aG^3); %sec^-1 tafterp_atepoch=MG_rad/nG; tafterp_atarrival=tafterp_atepoch+t_after_epoch*24*3600; MG_rad_arrival=mod(nG*tafterp_atarrival,2*pi); MG_arrival=MG_rad_arrival*180/pi; %Iteratively solve for eccentric anomaly (E) found=0; MGl=MG_rad_arrival; %rad EG=MGl; %rad while ~found Mnew=EG-eG*sin(EG); if abs(Mnew-MGl)<=0.001 found=1; end EG=EG-(EG-eG*sin(EG)-MGl)/(1-eG*cos(EG)); end %Solve for true anomaly (ta) knowing eccentric %anomaly and eccentricity taG_rad=2*atan(sqrt((1+eG)/(1-eG))*tan(EG/2)); if taG_rad<0 taG_rad=taG_rad+2*pi; end taG=taG_rad*180/pi; %Now can place Ganymede in the Jupiter frame at %arrival of the s/c G_loc=Xhat_loc-LanG-wG-taG; %deg if G_loc<0 G_loc_useful=G_loc+360; end P200=200; %days P200=P200*24*3600; %sec
6
a200=(((P200/2/pi)^2)*muj)^(1/3); %km e200=1-4*Rj/a200; %Determine inputs for Lambert's eqn: r1=a200*(1+e200); %km r2=aG*(1-eG^2)/(1+eG*cos(taG*pi/180)); %km if G_loc_useful>90 TransferAngle=abs(450-G_loc_useful);%deg else TransferAngle=abs(90-G_loc_useful); %deg end %Lambert's Equation mu=muj; TOFl=TOF(r)*24*3600; TA=TransferAngle*pi/180; type1=TA<=pi; c=sqrt(r1^2+r2^2-2*r1*r2*cos(TA)); s=(r1+r2+c)/2; amin=s/2; al0=2*asin(sqrt(s/(2*amin))); be0=2*asin(sqrt((s-c)/(2*amin))); TOFmin=sqrt(amin^3/mu)*((al0-sin(al0))-(be0-sin(be0))); typeA=TOFl<=TOFmin; %Crude Estimate of a olderror=100000; i=1; for a=amin:amin/100:amin*1000, al0=2*asin(sqrt(s/(2*a))); be0=2*asin(sqrt((s-c)/(2*a))); if type1 & typeA, al=al0; be=be0; elseif ~type1 & typeA, al=al0; be=-be0; elseif type1 & ~typeA, al=2*pi-al0; be=be0; elseif ~type1 & ~typeA, al=2*pi-al0; be=-be0; end TOFc(i)=sqrt(a^3/mu)*((al-sin(al))-(be-sin(be)));
7
error=abs(TOFc(i)-TOFl)/TOFl*100; if error<olderror, abest=a; else break end olderror=error; i=i+1; end %Refining Calculation olderror=100000; j=1; for a=(abest-amin/100):50:(abest+amin/100), al0=2*asin(sqrt(s/(2*a))); be0=2*asin(sqrt((s-c)/(2*a))); if type1 & typeA, al=al0; be=be0; elseif ~type1 & typeA, al=al0; be=-be0; elseif type1 & ~typeA, al=2*pi-al0; be=be0; elseif ~type1 & ~typeA, al=2*pi-al0; be=-be0; end TOFc2(i)=sqrt(a^3/mu)*((al-sin(al))-(be-sin(be))); error=abs(TOFc2(i)-TOFl)/TOFl*100; if error<olderror, abest=a; else break end olderror=error; j=j+1; end %Further Refining Calculation olderror=100000; j=1; for a=(abest-50):2:(abest+50), al0=2*asin(sqrt(s/(2*a)));
8
be0=2*asin(sqrt((s-c)/(2*a))); if type1 & typeA,
al=al0; be=be0; elseif ~type1 & typeA, al=al0; be=-be0; elseif type1 & ~typeA, al=2*pi-al0; be=be0; elseif ~type1 & ~typeA, al=2*pi-al0; be=-be0; end TOFc2(i)=sqrt(a^3/mu)*((al-sin(al))-(be-sin(be))); error=abs(TOFc2(i)-TOFl)/TOFl*100; if error<olderror, abest=a; else break end olderror=error; j=j+1; end %Further Refining Calculation olderror=100000; j=1; for a=(abest-2):0.1:(abest+2), al0=2*asin(sqrt(s/(2*a))); be0=2*asin(sqrt((s-c)/(2*a))); if type1 & typeA, al=al0; be=be0; elseif ~type1 & typeA, al=al0; be=-be0; elseif type1 & ~typeA, al=2*pi-al0; be=be0; elseif ~type1 & ~typeA, al=2*pi-al0; be=-be0; end
9
TOFc2(i)=sqrt(a^3/mu)*((al-sin(al))-(be-sin(be))); error=abs(TOFc2(i)-TOFl)/TOFl*100; if error<olderror, abest=a; else break end olderror=error; j=j+1; end a=abest; alpha=2*asin(sqrt(s/(2*a))); beta=2*asin(sqrt((s-c)/(2*a))); if (typeA & type1) | (~typeA & ~type1), p=4*a*(s-r1)*(s-r2)/c^2*(sin((alpha+beta)/2))^2; else p=4*a*(s-r1)*(s-r2)/c^2*(sin((alpha-beta)/2))^2; end e=sqrt(1-p/a); %Nec. JOI Manuever V2=sqrt(2*muj*(1/(4*Rj)-1/(2*a200))); %Change Vinfinity @ Jupiter Vinf=6.2103; %km/sec %Find V @ r1 from Energy Eqn V1=sqrt(Vinf^2+2.*muj./(4*Rj)); %Delta V dVJOI=abs(V1-V2); %Find Delta V at apoapsis of 200 day orbit (PJR) V1=sqrt(2*muj*(1/(r1)-1/(2*a200))); V2=sqrt(2*muj*(1/(r1)-1/(2*a))); cosfpa=sqrt(muj*p)/(r1*V2); dVaps=sqrt(V1^2+V2^2-2*V1*V2*cosfpa); %save delta V deltaVs(r)=dVaps; %Determine V infinity @ Ganymede Vminus=sqrt(2*muj*(1/r2-1/(2*a))); VG=sqrt(2*muj*(1/r2-1/(2*aG))); cosfpa2=sqrt(muj*p)/(r2*Vminus); VinfG(r)=sqrt(Vminus^2+VG^2-2*Vminus*VG*cosfpa2); RA(r)=Xhat_loc-G_loc_useful; fprintf('%5.2f percent complete\n',r/length(TOF)*100);end
10
Tour 1
EVENT 1 RESONANT 3. 9. 1. 0.EVENT 2 RESONANT 3. 5. 1. 0.EVENT 3 4. 0, 3 1,15EVENT 4 3. 0, 1 1,15EVENT 5 4. 0, 3 1,13EVENT 6 3. 0, 1 1,15EVENT 7 4. 0, 3 1, 9EVENT 8 3. 0, 1 0,15EVENT 9 RESONANT 3. 3. 1. 0.EVENT 10 2. 0, 1 0,15PATH: 3 3 3 4 3 4 3 4 3 3 2LAUNCH DATES SEARCHED: 250608. TO 250608. BY 15.0 DAYSVINF : 7.93 TO 7.93 BY 0.50 km/sTFMAX = 3000.0 DAYSALTMIN = 0.KM
11
Tour 2
EVENT 1 RESONANT 3. 9. 1. 0.EVENT 2 RESONANT 3. 5. 1. 0.EVENT 3 4. 0, 0 1, 1EVENT 4 3. 1, 1 3, 3EVENT 5 4. 0, 0 1, 1EVENT 6 3. 1, 2 4,10EVENT 7 4. 3, 5 4,10EVENT 8 3. 1, 2 10,15EVENT 9 RESONANT 3. 3. 1. 0.EVENT 10 2. 0, 0 1, 5PATH: 3 3 3 4 3 4 3 4 3 3 2LAUNCH DATES SEARCHED: 250608. TO 250608. BY 15.0 DAYSVINF : 7.93 TO 7.93 BY 0.50 km/sTFMAX = 3000.0 DAYSALTMIN = 0.KM
12
Tour 3
EVENT 1 RESONANT 3. 9. 1. 0.EVENT 2 RESONANT 3. 5. 1. 0.EVENT 3 4. 0, 0 1, 1EVENT 4 3. 1, 1 3, 3EVENT 5 4. 0, 0 1, 1EVENT 6 3. 2, 2 8,10EVENT 7 4. 4, 5 4, 6EVENT 8 3. 2, 2 10,11EVENT 9 RESONANT 3. 2. 1. 1.EVENT 10 4. 0,10 0, 1EVENT 11 2. 0, 1 1, 5PATH: 3 3 3 4 3 4 3 4 3 3 4 2LAUNCH DATES SEARCHED: 250608. TO 250608. BY 15.0 DAYSVINF : 7.93 TO 7.93 BY 0.50 km/sTFMAX = 500.0 DAYSALTMIN = 0.KM
13
Tour 4
EVENT 1 RESONANT 3. 5. 1. 0.EVENT 2 RESONANT 3. 3. 1. 0.EVENT 3 4. 0, 0 1, 1EVENT 4 3. 1, 1 3, 3EVENT 5 4. 0, 0 1, 1EVENT 6 3. 2, 2 8, 8EVENT 7 RESONANT 3. 3. 1. 0.EVENT 8 4. 0, 4 1, 6EVENT 9 3. 0, 2 1,11EVENT 10 RESONANT 3. 3. 1. 0.EVENT 11 4. 0, 2 0, 5EVENT 12 2. 0, 1 0,10PATH: 3 3 3 4 3 4 3 3 4 3 3 4 2LAUNCH DATES SEARCHED: 250608. TO 250608. BY 15.0 DAYSVINF : 7.93 TO 7.93 BY 0.50 km/sTFMAX = 500.0 DAYSALTMIN = 0.KM
14
Appendix 2.3 Landing and Communications Concerns John Gowan
The attached code is the MATLAB script used to simulate the powered descent
phase for the landing on Europa and calculate the corresponding performance parameters
for the orbit insertion and landing phases. The powered descent simulation, developed by
Jim Masciarelli at NASA JSC, is executed in this script, which then outputs the V,
propellant mass, and burn time associated with the simulated trajectory. The inputs to the
script are listed at the top of the code and include the following:
1) initial downrange distance from landing site
2) engine specific impulse
3) maximum engine thrust
4) total lander mass
5) V at Europa
6) circular parking orbit altitude
7) periapse altitude of transfer ellipse
After the powered descent phase is simulated, the script checks the final velocity at
touchdown to ensure that it is within the limits specified in the guidance targets. If the
velocity is not within limits, the script displays an error message. If this occurs, the
maximum required thrust should be increased in order to complete the desired trajectory.
Finally, the script plots the altitude v. downrange distance for the entire powered descent
trajectory.
15
% Europa orbit insertion and landing code% Written by John Gowan (February 2002)% Executes powered landing simulation developed by Jim Masciarelli / NASA JSC (March 2000)
clear
global STATE Isp Fmax;
europa_mu = 3.202848E+12; % Gravitation constant for Europa (m^3/s^2)r_europa = 1569.0E+03; % Radius of Europa (m)g_europa = 1.324; % Gravitational acceleration at Europa (m/s^2)
land_range = -275000.0; % Downrange distance from landing site at start of landing phase (m)
Isp = 334; % Engine specific impulse (s)Fmax = 6800; % Maximum engine thrust (N)lander_mass = 1780.9; % Total lander mass (kg)v_inf = 3190.0; % V-infinity at Europa (m/s)h_park = 100000.0; % Circular parking orbit altitude (m)h_land = 10000.0; % Periapse altitude of transfer ellipse to initiate landing phase (m)
r_per = r_europa + h_park; % Radius at periapse of circular parking orbit (m)r_land = r_europa + h_land; % Radius at periapse of transfer ellipse (m)a_trans = 0.5*(r_land + r_per); % Semi-major axis of transfer ellipse (m)v_circ = sqrt(europa_mu/r_per); % Velocity of circular parking orbit (m/s)v_land = sqrt((2*europa_mu/r_land) - (europa_mu/a_trans)); % Velocity at periapse of trans. ellipse (m/s)
dv_eoi = (sqrt(v_inf^2 + (2*europa_mu/r_per))) - v_circ % Delta V for EOI (m/s)dv_deorbit = v_circ - (sqrt((2*europa_mu/r_per) - (europa_mu/a_trans))) % Delta V De-orbit (m/s)
pos_xo = land_range; % x position, zero at landing site, positive towards the west (m)pos_yo = h_land; % y position, zero at ground, positive up (m)pos_zo = 0.0; % z position, zero at landing site, completes right hand system (m)vel_xo = v_land; % x component of velocity (m/s)vel_yo = 0.0; % y component of velocity (m/s)vel_zo = 0.0; % z component of velocity (m/s)
STATE = [pos_xo; pos_yo; pos_zo; vel_xo; vel_yo; vel_zo; lander_mass]; % Initial state vector
[t,y] = ode45('new_lander3d'); % Executes landing simulation
f = length(t); mass_prop = lander_mass - y(f,7) % Propellant mass burned (kg)burn_time = t(f) % Total burn time (s)
vel_mag = sqrt(y(:,4).^2 + y(:,5).^2 + y(:,6).^2); % Velocity vector magnitudev_final = vel_mag(f); % Velocity vector magnitude at touchdown
if v_final < 3.0 % "If Statement" ensures the velocity at touchdown is within guidance targetdv_land = Isp*9.8*log(lander_mass/y(f,7)) % Delta V for Powered Descent
else dv_land = 'landing sim error' % Error statement if velocity at touchdown is outside limitend
% If dv_land results in 'landing sim error', then try increasing Fmax
16
plot(y(:,1),y(:,2));grid;title('Altitude v. Downrange for Powered Descent Phase');xlabel('Downrange Distance (m)');ylabel('Altitude (m)');axis([-3e5 0.5e5 0 11000]);
17
Appendix 2.4 Transit Disturbance Analysis & Attitude Control Pooja Agrawal
The following codes calculate the external torques based on gravity, magnetic field, solar radiaton and aerodynamic drag. The max torque is then used to calculate the size of the reaction wheels. The saturation time for the wheels is determined and the attitude control thruster burn time to do momentum dumps is found.
%Pooja Agrawal%AAE 450%calculation of max torques seen by the s/c
clear allclose allformat long e%%%%%%%%%Gravity Gradient Torque%%%%%%%%%%%%%%AU=(1.495978e8)*1000; %distance between sun and earth [m]mu=[3.986e14 3.986e14 3.248587e14 1.3271244e20 1.26712e17]; %gravitational constant[earth earth venus interplanetary jupiter] [m^3/s^2]R1=(200+6378.14)*1000; %orbit radius at 200 km parking orbit+radius of the earth [m]R2=(2603+6378.14)*1000; %earth flyby distance [m]R3=(2900+6051.8)*1000; %venus flyby [m]R4=(3*AU); %interplanetaryR5=abs((5.2*AU+4*71492000)-(7.78412023e8)*1000); %near jupiter [m]R=[R1 R2 R3 R4 R5];theta=0.5*pi/180; %max deviation of the z axis from local vertical in radiansIz= 18000.55 ; %moment of inertia about z axis [kgm^2]Iy= 7205.74 ; %moment of inertia about y axis [kgm^2]
Tg=(3/2).*(mu./R.^3).*(Iz-Iy).*sin(2*theta) %Gravity Gradient Torque [Nm]Tg_tot=Tg.*0.1.*AU%std_tg=3.*std(Tg) %3 sigma standard deviation for gg torque
%%%%%%%%%%Solar Radiation%%%%%%%%%%%%%%%Dearth1=AU/AU - R1/AU; %distance earth parking orbit-sun in AUDearth2=AU/AU - R2/AU; %distance earth flyby to sun in AUDvenus=(1.08209020e8)*1000/AU - R3/AU; %distance venus-sun in AUDinter=3*AU/AU; %interplanetary-sun in AUDjupiter=(7.78412023e8)*1000/AU - R5/AU; %distance jupiter-sun in AU
marm=0.02; %moment arm [m] using 3 sigma value from historykelm=1.5; %factor between blackbody and reflective bodyrss=[Dearth1 Dearth2 Dvenus Dinter Djupiter]; c=3e8; %speed of light in [m]A=40; %surface area in [m^2]fo=1353; %mean intergrated energy flux [W/m^2]
18
Fs=(kelm*A*fo)./(c.*rss.^2); %solar radiation forceTs=Fs.*marm%std_ts=3.*std(Ts) %3 sigma standard deviation %%%%%%%%%%%%%%%Magnetic Field%%%%%%%%%%%%%%%%%%%D= 2; %residual dipole of vehicle B=[4.5e-5 4.5e-9 5e-4 1]; %[earth venus jupitermin jupiter max magnetic field [tesla]q=1e-8; v= 5000; %s/c velocity [m/s]%Tm = D*B %Magnetic Field TorqueTm=q*v*B%std_tm=3.*std(Tm) %3 sigma standard deviation %%%%%%%%%%%%%Aerodynamic%%%%%%%%%%%%%%%%%%%%%%% rho=[2.5e-19 2.66e-15 4.25e-18 1.5e-20 7.13e-17]; %atmospheric density [kg/m^3]%[50000 km 5948km(venus) 3.75Rv 3AU 5.3RJ]
Cd=1.0; %drag coefficient
Fa=0.5*rho*Cd*A*v^2; %forceTa=Fa*marm %Aerodynamic Torque%std_ta=3.*std(Ta) %3 sigma standard deviation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Code for sizing momentum wheel
T_max=5.00000E-04; %solar radiation torque on venus flyby [Nm]alpha=.1; %angular acceleration [rad/s^2]
I=T_max/alpha; % calculating moment of inertia of wheel
M=[.01:0.01:15]; %mass of wheel in KgR=(2.*I./M).^0.5; %Radius of wheel in m
figure(1)plot(M,R)xlabel('Mass (kg)')ylabel('Radius (m)')
omega_max=10*2*pi/60 %max angular velocity in [rad/s]Thrust=22*2; %Thruster force in [N]m_arm=.95; %moment arm to thrusters in [m]T_thrust=Thrust*m_arm %torque from firing [Nm]I_sc=33902.98; %moment of inertia of the s/c
19
alpha_sc=T_thrust/I_sc %angular acceleration of s/c in rad/s assumed to be constant
tb=(omega_max/alpha_sc) %burn time in secondstb_min=tb/60
%%%%Reaction Wheels for Attitude Control System on Orbitclear allclose all
T_max=5.00000E-04; %solar radiation torque on venus flyby [Nm]
%%%% wheel M=5; %kg-mass of wheelR=0.2; %m-radius of wheelI_wheel=(R^2*M)/2 %moment of inertia of wheel-kgm^2alpha_wh=T_max/I_wheel %angular acceleration of wheel in rad/s^2omega_wh=(8500)*2*pi/60H=I_wheel*omega_wh
%%%%%% spacecraftThrust=22; %Thruster force in [N] 2 thrusters at 22 N eachm_arm=2.8/2; %moment arm to thrusters in [m]T_thrust=Thrust*m_arm; %torque from firing [Nm]I_sc=18000.55; %moment of inertia of the s/c kgm^2 about z axisalpha_sc=T_thrust/I_sc; %angular acceleration of s/c in rad/s2 assumed to be constant%omega_sc=0.5*2*pi/60; %max angular velocity of sc in rad/s (.5 rpm)omega_sc=I_wheel*omega_wh/I_sc;
%%%%burn time t=H/T_thrust%%%%calculating omega of wheel%omega_wh=I_sc*omega_sc/I_wheel %in rad/s%omega_wheel=omega_wh/(2*pi)*60 %rpm%omega_wh=10*2*pi/60 %max speed of wheel
%%%%calculating time to reach max angular velocitytb_sat=omega_wh/alpha_wh; %sectb_min=tb_sat/60; %mintb_hr=tb_min/60; %hrtb_day=tb_hr/24 %day
%determining angle of turning during tb_sat%al_sc=omega_sc/tb_sat %rad/s^2%theta_sc=0.5*alpha_sc*tb_sat^2; %rad
20
%%%%scenario #1 180 degree manueverth=pi;tman=pi/omega_sc;tman_min=tman/60%tman=(2*th/al_sc)^0.5 %sec%tmin=t/60%thr=tmin/60
%%%% calculating burn time for thrusters to despin%alpha_n=T_thrust/I_wheel %angular acceleration of wheel due to thrusters%al_n=alpha_n*(60^2)/(2*pi)%tb=(1500*2*pi/60)/alpha_sc/3600%Tf=I_wheel*alpha_wh/m_arm
21
Appendix 2.5 Lander Attitude Control Angela Beaver
%Angela Beaver%AAE 450%Code for burn time%This code was used to find burn time for the Propulsion team
omega_max=0.2; %max angular velocity in [rad/s]Thrust=88; %Thruster force in [N]
m_arm=.7; %moment arm to thrusters in [m]T_thrust=Thrust*m_arm; %torque from firing [Nm]I_sc=24333; %moment of inertia of the s/c alpha_sc=T_thrust/I_sc; %angular acceleration of s/c in rad/s assumed to be constant
tb=(omega_max/alpha_sc) %burn time in secondstb_min=tb/60
22
Appendix 3.1 Launch Vehicle and Upper Stage Mike Perotti
The following represents the code for sizing the upper stage:
% AAE 450 ROCKET SIZING CODE
% DESIGN PARAMETERS
% THIS ALLOWS THE USER TO CHOOSE PROPELLANT COMBINATION. THOPTIMAL MIXTURE RATIOSAND DENSITIES IS OBTAINED FROM HUMBLE, RONAL “SPACE PROPULSION ANALYSIS AND DESIGN” WHILE THE REMAINING VARIABLES (GAMMA, DENSITIES, AND CHARATERISTIC VELOCITIES) ARE OBTAINED FROM TEP (THERMO-CHEMISTRY EQUILIBRIUM CODE) FROM NASA LEWISformat short gmenuchoice = menu('Choose Propellant','LOX/H_2'... ,'LOX/Hydrazine','LOX/RP-1','Nitrogen Tetroxide/RP-1', ... 'Nitrogen Tetroxide/HTPB','LOX/HTPB','F2/H2'... ,'Nitrogen Tetroxide/MMH','Nitrogen Tetroxide/UDMH',... 'Nitrogen Tetroxide/Hydrazine');
menuch = menu('Choose Tank Shape','Sphere','Cylinder');
g0 = 9.81; % [m/s^2]tb = 400; % [s]delta_v = input('Delta V => ');
if menuchoice == 1 Isp = 462; name = 'LOX/H_2'; OF = 3.8; rho_ox = 1142; rho_f = 71; cstar = 2423; gamma = 1.21;endif menuchoice == 2 Isp = 363; name = 'LOX/Hydrazine'; OF = 1.20; rho_ox = 1142; rho_f = 1010; cstar = 1911; gamma = 1.14;end
23
if menuchoice == 3 Isp = 347; name = 'LOX/RP-1'; OF = 2.27; rho_ox = 1142; rho_f = 810; cstar = 1799; gamma = 1.14;endif menuchoice == 4 Isp = 328; name = 'Nitrogen Tetroxide/RP-1'; OF = 3.51; rho_ox = 1440; rho_f = 810; cstar = 1075; gamma = 1.17;endif menuchoice == 5 Isp = 297; name = 'Nitrogen Tetroxide/HTPB'; OF = 3.17; rho_ox = 1440; rho_f = 1810; cstar = 1667; gamma = 1.23;endif menuchoice == 6 Isp = 317; name = 'LOX/HTPB'; OF = 2.04; rho_ox = 1142; rho_f = 1810; cstar = 1793; gamma = 1.23;endif menuchoice == 7 Isp = 441; name = 'F2/H2'; OF = 4.26; rho_ox = 1509; rho_f = 71; cstar = 2569; gamma = 1.29;endif menuchoice == 8 Isp = 318;
24
name = 'Nitrogen Tetroxide/MMH'; OF = 1; rho_ox = 1440; rho_f = 878; cstar = 1640; gamma = 1.27;endif menuchoice == 9 Isp = 313; name = 'Nitrogen Tetroxide/UDMH'; OF = 1.75; rho_ox = 1440; rho_f = 789; cstar = 1715; gamma = 1.24;endif menuchoice == 10 Isp = 309; name = 'Nitrogen Tetroxide/Hydrazine'; OF = 2.21; rho_ox = 1440; rho_f = 1010; cstar = 1601; gamma = 1.23;end
% MASSES AND MASS RATIOMR = exp(delta_v/(g0*Isp));mpl_i = 10000;mpl_f = 15000;mpl = mpl_i:10:mpl_f;mp = (mpl)*(exp(delta_v/(g0*Isp))-1);
% DEFINITIONS FOR LAMBDA CURVEFIT OF HISTORICAL DATAmp_C = [100 2000 100000]';lambda_C = [.87 .935 .95]';ac = [1 1 1]';A = [ac log(mp_C) (log(mp_C)).^2];x = inv(A)*lambda_C;a = x(1,1);b = x(2,1);c = x(3,1);
lambda = a + b*log(mp) + c*(log(mp)).^2;mi = (mp - lambda.*mp)/lambda;mtotal = mi + mpl + mp;
25
% PROPELLANT VOLUMESmf = mp/(OF +1);mox = OF*mf; Vf = mf/rho_f;Vox = mox/rho_ox;
% TANK CALXrho_tank = 4460; % TITANIUM DENSITYMEOP = 20000;fs_t = 1.5; % SAFETY FACTORPb_t = fs_t*MEOP;Ftu_t = 1.23*10^9;
% SPHERICAL TANKif menuch == 1 r_tanko = ( (3*Vox)/(4*pi) ).^(1/3); A_tanko = 4*pi*r_tanko.^2; t_tanko = Pb_t*r_tanko./(2*Ftu_t); r_tankf = ( (3*Vf)/(4*pi) ).^(1/3); A_tankf = 4*pi*r_tankf.^2; t_tankf = Pb_t*r_tankf/(2*Ftu_t);end
% CYLINDRICAL TANKif menuch == 2 r_tanko = .625; h_tanko = (Vox/(pi*r_tanko^2)); A_tanko = 2*pi*r_tanko^2 + 2*pi*r_tanko*h_tanko; t_tanko = Pb_t*r_tanko./(Ftu_t); r_tankf = .625; h_tankf = (Vf/(pi*r_tankf^2)); A_tankf = 2*pi*r_tankf.^2 + 2*pi*r_tankf*h_tankf; t_tankf = Pb_t*r_tankf/(Ftu_t);end
% OXIDIZER TANKm_tank_ox = A_tanko.*t_tanko.*rho_tank;
% FUEL TANKm_tank_f = A_tankf.*t_tankf.*rho_tank;mtank = m_tank_f + m_tank_ox;
% NOZZLE CALXe = 40;Pc = 3.04e6;mdot = mp/tb;At = mdot*cstar/Pc;
26
rt = sqrt(At/pi);Ae = e*At;re = sqrt(Ae/pi);
% CHAMBER MATERIALS (TITANIUM)rho_chamb = 4500;Ftu_chamb = 1000e6;
% COMBUSTION CHAMBER CALXMc = .1;Acc = (At/Mc)*( (2/(gamma+1))*(1 + ... ((gamma-1)/2)*Mc^2) )^( (gamma+1)/ ... (2*(gamma-1)));Lstar = .3;Lcc = Lstar*At/Acc;Dcc = 2*sqrt(Acc/pi);rcc = .5*Dcc;phi = 3;theta_cc = 45*pi/180;Cham_thick = Pc*Dcc*phi/(2*Ftu_chamb);mcc = pi.*rho_chamb.*Cham_thick.*(Dcc.*Lcc ... + (pi.*(rcc.^2 ... - rt.^2))/tan(theta_cc));
% PLOTSfigure(1)plot(mpl,mtotal);xlabel('Payload Mass [kg]');ylabel('Total Mass [kg]');title('Payload Mass vs Total Mass');legend(name);grid;
figure(2)plot(mpl,mp);xlabel('Payload Mass [kg]');ylabel('Propellant Mass [kg]');title('Payload Mass vs Propellant Mass');legend(name);grid;
figure(3)subplot(1,2,1)plot(mpl,Vf,'-',mpl,Vox,'o');xlabel('Payload Mass [kg]');ylabel('Propellant Volume [m^3]');title('Payload Mass vs Propellant Mass');
27
legend('Fuel Volume','Oxidizer Volume');grid;
if menuch == 1 subplot(1,2,2) plot(mpl,r_tankf,'-',mpl,r_tanko,'o'); xlabel('Payload Mass [kg]'); ylabel('Tank Radius [m]'); title('Payload Mass vs Tank Radius for Spherical Tanks'); legend('Fuel Tank Radius','Oxidizer Tank Radius'); grid;end
if menuch == 2 subplot(1,2,2) plot(mpl,h_tankf,'-',mpl,h_tanko,'o'); xlabel('Payload Mass [kg]'); ylabel('Tank Hieght [m]'); title('Payload Mass vs Tank Hieght for Cylindrical Tanks'); legend('Fuel Tank Hieght','Oxidizer Tank Hieght'); grid;end
The following is a code that relates the mission payload mass with the total payload mass
Isp = 444;mi = 1700;mpl = 5000:8000;dv = 3805;g = 9.81;MR = dv/(g*Isp);mp = (mi + mpl)*(exp(MR)-1) +450 ;mtot = mp+mi+mpl;r = 3.1;L = 9.2;
Ixx = (1/12)*(mi+mp)*(3*r^2 + L^2);Iyy = Ixx;Izz = .5*(mi+mp)*r^2;
figure(1)subplot(2,1,1)plot(mpl,mtot);xlabel('M_p_l');ylabel('M_t_o_t')
28
grid;
subplot(2,1,2)plot(mpl,mp);xlabel('M_p_l');ylabel('M_p');grid;
figure(2)plot(mpl,Ixx,'-',mpl,Izz,'o');legend('I_x_x, I_y_y','I_z_z');grid;xlabel('M_p_l');ylabel('Inertias [kg-m^2]');
29
Appendix 3.2 Lander and Orbiter Main Propulsion System Nate Huber
The first part of my code is the main program. It has the input from the other
groups that I need. Then it calls on my lander program. The input for the lander program
is the mass of the lander minus the propulsion system, DV for deorbit, propellant mass
for landing, Isp, attitude thruster mass, and propellant mass for attitude thrusters. It then
calls on the orbiter program. It has the same inputs plus the total mass of the lander. The
main program then outputs the information I need.
%Propulsion main program
clear
isp=334;
m_s_lander=906.9;
dv_lander=19.33;
M_pland=688;
m_thrustersl=10;
m_p_thrustersl=20;%40;
m_s_orbiter=619;
%dv_orbiter=[1:4000];
dv_orbiter=2087.4+300;
dv_escape=450;
m_thrusterso=10;
m_p_thrusterso=185;
landerout=lander_3(m_s_lander, dv_lander, M_pland, isp, m_thrustersl,
m_p_thrustersl);
orbiterout=orbiter2(m_s_orbiter, landerout(1), dv_orbiter, dv_escape,
isp, m_thrusterso, m_p_thrusterso);
fprintf('\n Masses of lander\n')
fprintf('\n Total mass for lander %6.2f kg',landerout(1))
30
fprintf('\n Propellant mass for lander %6.2f kg',landerout(2))
fprintf('\n Total mass for lander after deorbit %6.2f kg',landerout(1)-
landerout(3))
fprintf('\n Mass of fuel for lander %4.4f kg',landerout(12))
fprintf('\n Mass of oxidizer for lander %4.4f kg',landerout(13))
fprintf('\n Mass of helium for lander %4.4f kg\n',landerout(14))
fprintf('\n Tanks of lander\n')
fprintf('\n Total tank mass for lander %4.4f kg',landerout(4))
fprintf('\n Fuel tank mass for lander %4.4f kg',landerout(5))
fprintf('\n Oxidizer tank mass for lander %4.4f kg',landerout(6))
fprintf('\n Helium tank mass for lander %4.4f kg',landerout(7))
fprintf('\n Hardware for tank mass for lander %4.4f kg',landerout(8))
fprintf('\n Radius of fuel tank for lander %4.4f m',landerout(9))
fprintf('\n Radius of oxidizer tank for lander %4.4f m',landerout(10))
fprintf('\n Radius of helium tank for lander %4.4f m\n',landerout(11))
fprintf('\n Engines of lander\n')
fprintf('\n Mass of one engine for lander %4.4f kg',landerout(15))
fprintf('\n Length of engine for lander %4.4f m',landerout(16))
fprintf('\n Radius of combustion camber for lander %4.4f
m',landerout(17))
fprintf('\n Length of combustion camber for lander %4.4f
m',landerout(18))
fprintf('\n Diameter of throat for lander %4.4f m',landerout(19))
fprintf('\n Diameter of exit for lander %4.4f m',landerout(20))
fprintf('\n Length of nozzle for lander %4.4f m\n',landerout(21))
fprintf('\n Masses of orbiter\n')
fprintf('\n Total mass for orbiter/lander combo %6.2f kg',orbiterout(1))
fprintf('\n Propellant mass for orbiter %6.2f kg',orbiterout(2))
fprintf('\n Mass of fuel for orbiter %4.4f kg',orbiterout(11))
fprintf('\n Mass of oxidizer for orbiter %4.4f kg',orbiterout(12))
fprintf('\n Mass of helium for orbiter %4.4f kg\n',orbiterout(13))
fprintf('\n Tanks of orbiter\n')
fprintf('\n Total tank mass for orbiter %4.4f kg',orbiterout(3))
fprintf('\n Fuel tank mass for orbiter %4.4f kg',orbiterout(4))
31
fprintf('\n Oxidizer tank mass for orbiter %4.4f kg',orbiterout(5))
fprintf('\n Helium tank mass for orbiter %4.4f kg',orbiterout(6))
fprintf('\n Hardware for tank mass for orbiter %4.4f kg',orbiterout(7))
fprintf('\n Radius of fuel tank for orbiter %4.4f m',orbiterout(8))
fprintf('\n Radius of oxidizer tank for orbiter %4.4f m',orbiterout(9))
fprintf('\n Radius of helium tank for orbiter %4.4f m\n',orbiterout(10))
My lander program is next. It loops to converge on the amount of propellant needed and the tank size. It does this by calling on my tank program. It also calls on the engine program to size the engine.
function landerout=lander_3(m_so,dv,m_p,isp,m_att,m_p_thrusters);
engineout=engine(6800/3,1.9135,80);E=2;m_soe=m_so+3*engineout(1)+m_att;m_s=m_soe;while E > 0.0001 m_tot=(m_s+m_p+m_p_thrusters)*exp(dv/(9.807*isp)); m_p_deorbit=m_tot-m_s-m_p-m_p_thrusters; m_prop=m_p_deorbit+m_p+10*m_s*1.323/(9.807*isp); tankout=tanksize_l(m_prop, m_p_thrusters); m_snew=m_soe+tankout(1)+tankout(11); E=abs(m_snew-m_s)/m_s; m_s=m_snew; m_total=(m_s+m_prop+m_p_thrusters); end
landerout=[m_total m_prop+m_p_thrusters m_p_deorbit tankout engineout m_s];
function [engineout]=engine(F,Cf,e);
P=861844.66;
At=F/(Cf*P);Dt=sqrt(At*4/pi);rt=Dt/2;Ae=At*e;De=sqrt(Ae*4/pi);re=De/2;
Lstar=.75;Ac_At=8*(Dt*100)^(-.6)+1.25;L=Lstar/Ac_At;
32
Vc=L*At;Ac=Ac_At*At;rc=sqrt(Ac/pi);
Ln=(De-Dt)/(2*tan(15*pi/180));Lf=.8*Ln;
M_e=F/(9.807*(.0006098*F+13.44));
L_t=L+Lf+rc+(rc-rt)/tan(45*pi/180);
engineout=[M_e L_t rc L Dt De Lf];
function tankout=tanksize_l(m_prop,m_thrusters);
rho_f=1010;rho_o=1440;rho_mat=2800; %AluminumMEOP_f=861844.66*1.3+40000+50000;MEOP_o=861844.66*1.3+40000+50000;f_s=1.5;F_tu=0.413*10^9;m_f=m_prop/2.34+m_thrusters;m_o=m_prop-m_prop/2.34;V_f=m_f/rho_f;V_o=m_o/rho_o;
r_f=roots([1 .25 0 -V_f/(2*pi^2)]);r_o=roots([1 .25 0 -V_o/(2*pi^2)]);
for i=1:3; if imag(r_f(i))==0 & r_f(i)>0 r_f=r_f(i); end if imag(r_o(i))==0 & r_o(i)>0 r_o=r_o(i); endend
P_b_f=f_s*MEOP_f;P_b_o=f_s*MEOP_o;
m_t_f=P_b_f*V_f/(2500*9.807);m_t_o=P_b_o*V_o/(2500*9.807);
%Calculate presserant tankP_f=861844.66*1.3+40000+50000;P_i=21000000;
T_f=286*(P_f/P_i)^(.66/1.66);
33
V_p=V_f+V_o;V_t=V_p;E=2;
while E>.0001 m_he=1.05*P_f*V_t*4/(8314*T_f); V_he=m_he*8314*286/(P_i*4); V_tnew=V_p+V_he; E=abs(V_tnew-V_t)/V_t; V_t=V_tnew;end
r=roots([1 .25 0 -V_he/(2*pi^2)]);
for i=1:3; if imag(r(i))==0 & r(i)>0 r=r(i); endend
P_b=f_s*P_i;
m_t_he=P_i*V_he/(6350*9.807);
m_t_hard=.1*(m_t_f+m_t_o+m_t_he);m_t=m_t_hard+m_t_f+m_t_o+m_t_he;
tankout=[m_t m_t_f m_t_o m_t_he m_t_hard r_f r_o r m_f m_o m_he];
The orbiter program does the same thing as the lander program. It does not call
the engine program. The tank program called is a little different. It calculates sphereical
tanks instead.
function orbiterout=orbiter2(m_so,m_pl,dv,dv2,isp,m_att,m_p_thrusters);
%for i=1:4000E=2;m_soa=m_so+m_att;m_s=m_soa;while E > 0.0001 m_t=(m_s-17.61)*exp(dv2/(9.807*235)); m_p=m_t-(m_s-17.61)+m_p_thrusters; m_tot=(m_s+m_pl+m_p)*exp(dv/(9.807*isp)); m_prop=m_tot-m_s-m_pl-m_p; tankout=tanksize(m_prop,m_p); m_snew=m_soa+tankout(1)+tankout(11); E=abs(m_snew-m_s)/m_s; m_s=m_snew; m_total=m_s+m_prop+m_p+m_pl;
34
end%end
%plot(dv,m_total)%grid on
orbiterout=[m_total m_prop+m_p tankout m_s];
function tankout=tanksize(m_prop,m_p_thrusters);
rho_f=1010;rho_o=1440;rho_mat=2800; %AluminumMEOP_f=861844.66*1.3+2*50000;MEOP_o=861844.66*1.3+2*50000;f_s=1.5;F_tu=0.413*10^9;m_f=m_prop/2.34+m_p_thrusters;m_o=m_prop-m_prop/2.34;V_f=m_f/rho_f;V_o=m_o/rho_o;r_f=(V_f*3/(4*pi))^(1/3);r_o=(V_o*3/(4*pi))^(1/3);%A_f=4*pi*r_f^2;%A_o=4*pi*r_o^2;P_b_f=f_s*MEOP_f;P_b_o=f_s*MEOP_o;%t_f=P_b_f*r_f/(2*F_tu);%t_o=P_b_o*r_o/(2*F_tu);%m_t_f=A_f*t_f*rho_mat;%m_t_o=A_o*t_o*rho_mat;m_t_f=P_b_f*V_f/(2500*9.807);m_t_o=P_b_o*V_o/(2500*9.807);
P_f=861844.66*1.3+2*50000;P_i=21000000;
T_f=286*(P_f/P_i)^(.66/1.66);V_p=V_f+V_o;V_t=V_p;E=2;
while E>.0001 m_he=1.05*P_f*V_t*4/(8314*T_f); V_he=m_he*8314*286/(P_i*4); V_tnew=V_p+V_he; E=abs(V_tnew-V_t)/V_t; V_t=V_tnew;end
r_he=(V_he*3/(4*pi))^(1/3);
P_b=f_s*P_i;
35
m_t_he=P_i*V_he/(6350*9.807);
m_t=(m_t_f+m_t_o+m_t_he);m_extra=m_t*(9100/(66000-9100));m_tot=1.1*m_t+m_extra;
tankout=[m_tot m_t_f m_t_o m_t_he m_extra+.1*m_t r_f r_o r_he m_f m_o m_he];
36
Appendix 3.3 Attitude Control Thrusters and AUV Propulsion Tom Fosness
function[m_tot]=orbiter(m_so,dv,isp)%Calculates the total mass of the orbiter based on structural mass, delta v, and Isp.%Tom Fosness
%Initialize VariablesE=2;m_s=m_so;
%Itterate over the structural mass which fluctuates based on tank mass.while E > 0.01 m_tot=m_s*exp(dv/(9.807*isp)); %total mass m_prop=m_tot-m_s; %propellant mass %Tank design (Spherical, Hydrazine, Aluminum) rho=1010; %Hydrazine rho_mat=2800; %Aluminum MEOP=1000000; f_s=1.5; %factor of safety %l=0.5; F_tu=0.413*10^9; V=m_prop/rho; %volume r=(V*3/(4*pi))^(1/3); %spherical %r=(V/(pi*l))^(1/2); %cylindrical A=4*pi*r^2; %surface area %A=2*pi*r*l; P_b=f_s*MEOP; %burst pressure t=P_b*r/(2*F_tu); %thickness %t=P_b*r/(F_tu); m_t=A*t*rho_mat; %tank mass m_snew=m_so+m_t; E=m_snew-m_s; m_s=m_snew;end
%Print the following values.Vd=r*2tm_t=m_t*2m_prop
function [t_b, m_p] = burn(r, T, I, w)%Tom Fosness%This function calculates the burn time and mass of propellant burned%for a corrective maneuver performed by attitude thrusters.%Given paramters the radius of the thrusters, thrust,
37
%moment of inertia, and the angular velocity due to perturbation.
Isp=235;g=9.8;
t_b=I*w/(T*r)m_p=T*t_b/(Isp*g)
38
Appendix 4.1 Orbiter Structure Jesus Villamarin
This is the spreadsheet used to size the structure of the orbiter. The mass and
dimensions are input in the input/output sheet. The input information is obtained from the
orbiter’s matrix (Table 4.1.2). The iteration is also performed here
Diameter (m) 3.0Length (m) 1.9Dry Mass (kg) 1347.8Total Mass (kg) 5725.2
Jz 6440.9Jx,Jy 4942.8
Structures mass (kg) 16.0Thickness (cm) 3.2E-02Safety Margin % -99%
Iteration Thickness (cm) ξ σcr Area (cm) Pcr MS Mass (kg)Initial 0.031878 0.111 1.01E+06 30.0 3.0E+03 -99% 16.0Iterated 0.253 0.296 2.12E+07 238.3 5.1E+05 0% 127
Diameter (m) 3.0Length (m) 1.9
Dry Mass (kg) 1347.8Total Mass (kg) 5725.2
Jz 6440.9Jx,Jz 4942.8
Structures mass (kg) 127Thickness (cm) 0.253
Orbiter
Table below is only in case iteration is needed.
Orbiter
Moment of inertia
Input
Output Values
39
The sizing of the structure occurs here from the data input on previous page.
Axial Lateral Axial Lateral Axial LateralSteady State (in g's) 2.4 0 0 0Dynamic (in g's) 1 3 6 0Total Acceleration (g's) 3.4 3 6 0Material Density (Kg/m^3) Young Modulus E (Pa) Yield Strength (Pa) Ultimate Strength (Pa)
Aluminum 7075 2800 7.1E+10 4.48E+08 5.24E+08Earth's Gravity Acceleration (m/s^2) 9.80665
Total Mass (kg) Dry Mass (kg)Orbiter 5725.2468 1347.8468
Delta Payload Orbiter configuration 1 configuration 2L (m) 8.5 1.9 3.7 7D(m) 2.9 3 3.6 1.8
Axial Rigidity Lateral RigidityArea (m^2) I3.00E-03 3.97E-04
Minimum thickness to avoid resonance (m) 3.2E-04 3.7E-05
Test Plan Yield UltimateOne-unit proof test 1.5 1.25
Limit Axial Load (N)Limit Lateral Load (N)Bending Moment (N-m)Equivalent Load (N) 606371.3 505309.4Thickness (m) 1.4E-04 1.0E-04
Limit Axial Load (N)Limit Lateral Load (N)Bending Moment (N-m)Equivalent Load (N) 505309.4 421091.2Thickness (m) 1.2E-04 8.5E-05
Required Thickness (m) 3.2E-04phi 4.3Reduction Factor 0.111Critical Normal Stress 1.0E+06Critical buckling Load 3028.1Applied Ultimate Load 505309.4Margin of Safety -1.0 -99%
Hoop Stress Mass 16.0
Pressure Differential
336872.90.0
Structural Rigidity
Lift-Off
Beam Under Axial and Lateral LoadingLift-off
Delta Fundamental Frequency (Hz)
Stability (Compressive Strength)
Internal Pressure
190894.7168436.5160014.7
Shutdown
Stage 2 Shutdown Booster
35 15
0.0
The moment of inertia and products of inertia calculations are done here
Objects Mass (kg) Radius (m) h (m) Jx,Jy Jz x' (a)xi (b)xi (c )xi (a)mixi (b)mixi ©mixiUpper Stage Sep 17000 1.50 2.50 18416.67 19125.00 7.35 1.68 0.00 0.00 47909.20 0.00 0.00Primary Structure 5725.247 1.50 1.90 4942.80 6440.90 0.95 -4.72 -0.42 0.00 127617.12 987.58 0.00Payload 902.52 0.80 4.20 1471.11 288.81 4.00 -1.67 2.63 0.00 2520.82 6264.85 0.00
Xbar Jz Jx,JyIn Launch vehicle (a) 5.67 25854.71 202877.71Upper Stage Sep (b) 1.37 6729.71 13666.33Payload Separation ( c ) 0.95 6440.90 4942.80
40
This is the other configuration that was analyzed but was not chosen.
41
Appendix 4.2 Lander Structure and AUV Hull Jeremy Hemler
This appendix contains more detailed information about specific calculations used
in this design, and also MATLAB scripts used to perform them.
A4.2.1 Lander Structure and Mass Properties Code
The following code is written to calculate structural mass of the lander. It also
calculates the center of mass, moments of inertia, and lander stability for the lander and
AUV package.
The first portion of the codes establishes fundamental parameters, and sizes the
lander legs. The leg calculations are done assuming that the lander has impacted on only
one leg.%%% Mass Estimation for Lander%%% Jeremy Hemler%%% All units metric%%% All stresses in MPa
clearformat compact
g=0.135*9.81; %gravity on Europarhoet=4.43e3; %Titaniumrhoea=2.71e3; %Aluminumomegamaxt=855; %allowable compressive stress (Titanium)omegamaxa=320; %allowable compressive stress (Aluminum)
fs=1.3; %Factor of Safetydeltat=0.005; %Impact time estimation
md=640; %dry mass of landermauv=423.17; %AUV Massnl=3; %Number of legs
%%Lander Legsalphal=60*pi/180; %degrees leg from horizontalLleg=.8; %Length of legGclear=Lleg*cos(pi/6) %Ground ClearanceLsup=.5*Lleg; %Support Bracesns=2*nl; %Two Braces per leg
v=2; %Impact Velocity (m/s)P=(md+mauv)*v/deltat; %Impact ForceFy=P/sin(alphal); %Force in lander leg parallel to leg
Al=fs*Fy/(omegamaxt*1e6); %Area of legAs=.5*Al; %Support Area
42
omega=(Fy/(nl*Al))/1e6; %Ideal Stress on each leg during landingomega1=(Fy/Al)/1e6; %Worst case stress
massleg=(As*ns*Lsup+Al*nl*Lleg)*rhoet; %Total mass of legs
%%Lander FootpadsDp=.1; %Diameter of landing footpadtp=.003; %Thickness of landing footpad
massftp=nl*Dp^2*pi*.25*tp*rhoea; %mass of landing foot
The next portion of the code estimates the structural mass of the rest of the lander.
The cross sectional area of the truss members on the main body is scaled from the area of
the legs. This approximation is used because more complete stress analysis could not be
completed.
%%Lander Bodyns=6; %Number of sides Hexagonal ShapeAb=(2/3)*Al; %Estimation of Cross Sectional Area of all
members in bodyDi=.48; %Diameter of Inner Ring (Assuming AUV in
center)Ls=.72; %Length of Each SideLi=Ls-.5*Di; %Length of internal horizontal membersLv=0.99; %Length of vertical supports
massb=(2*(pi*Di+ns*(Li+Ls))+(nl+ns)*Lv)*Ab*rhoea; %Mass of BodyVolumeb=ns*Ls^2*(cos(pi/6))*Lv-.25*Di^2*pi*Lv %Estimated Enclosed
Volume
%%Upper PortionLvu=.43;massic=(3*Lvu+pi*Di)*Ab*rhoet; %mass of internal cylinder to
top of landerAs=.5*Al; %Estimation of Cross Sectional Area of all
members in Science capmassup=massic+ns*(Lvu+Ls+Li)*As*rhoea; %Mass of Upper portionVolumeup=ns*Ls^2*(cos(pi/6))*Lvu-.25*Di^2*pi*Lvu %Estimated Enclosed
Volume
%%%Final Estimation (assume this structure is 60% of final, and the increase by 25% experience based factor)mass_s=1.25*((5/3)*(massleg+massftp+massb+massup))
This portion of the code calculates the moments of inertia for the lander/AUV
combination. The calculation assumes uniform density of the vehicles themselves. This
approximation is used due to the limited layout of the vehicles. The initial portion
establishes masses and dimensions that are required.
43
%%%Moments of Inertia%%%%%All inertias around cm assuming uniform density
%%AUVrp=.466; %AUV radius in mlp=2.764; %AUV length
Ixxpcm=(mauv/12)*(3*rp^2+lp^2);Iyypcm=Ixxpcm;Izzpcm=.5*mauv*rp^2;
%%Lander%%Use Stacked Ring Construction by sectionc=25/12; %Correction factor to account for all of
structural mass
meng=46.59; %engine mass
mfp=317.58; %fuel massmft=23.28; %fuel tank mass
mop=405.45; %oxidizer massmot=20.85; %oxidizer tank massmaci=10; %attitude control thrusters
mhep=4.88; %helium massmhet=46.59; %helium tank mass
mdnc=25; %D&C massmcam=10.4; %Camera massmpow=37; %RTG massmth=98+7.02+96.38; %Thermal Massmcomm=5; %Communications mass
ml=meng+c*massleg+c*massftp+15.45; %beneath lander planemfd=mft+c*massb/3; %dry mass of fuel ringmfw=mfd+mfp; %total mass of fuel ringmod=mot+c*massb/3+maci; %mass of oxidizer ringmow=mod+mop; %total mass of ox ringmhed=mhet+c*massb/3; %mass of helium ringmhew=mhed+mhep; %total mass of helium ringmu=c*massup+mdnc+mcam+mpow+mth+mcomm; %mass of upper volumemass_d=ml+mfd+mod+mhed+mu; %Dry massmass_w=ml+mfw+mow+mhew+mu; %Wet mass
ri=.5*Di; %Inner diameter of Landerro=Li+ri; %Outer diameter of Lander
As described in the main portion of this report, the lander model is comprised of five
concentric rings. This next portion of the code calculates the moments of inertia of each
ring, and then the total moments of inertia and center of mass locations for the lander.
The total moments of inertia are calculated using the parallel axis theorem. The center of
44
mass in this model does change depending on if the propellant tanks are full or not. It
would not change if the lander was approximated as one concentric cylinder.
The moments of inertia and center of mass locations for the lander and AUV are then
calculated at the end of this portion of the code.
%%lower ringIzzlcm=.5*ml*(ri^2+ro^2);Ixxlcm=.25*ml*(ri^2+ro^2)+(ml/6)*Gclear^2;Iyylcm=Ixxlcm;
%%fuel ringIzzfdcm=.5*mfd*(ri^2+ro^2);Ixxfdcm=.25*mfd*(ri^2+ro^2)+(mfd/6)*(Lv/3)^2;Iyyfdcm=Ixxfdcm;Izzfwcm=.5*mfw*(ri^2+ro^2);Ixxfwcm=.25*mfw*(ri^2+ro^2)+(mfw/6)*(Lv/3)^2;Iyyfwcm=Ixxfwcm;
%%Oxidizer ringIzzodcm=.5*mod*(ri^2+ro^2);Ixxodcm=.25*mod*(ri^2+ro^2)+(mod/6)*(Lv/3)^2;Iyyodcm=Ixxodcm;Izzowcm=.5*mow*(ri^2+ro^2);Ixxowcm=.25*mow*(ri^2+ro^2)+(mow/6)*(Lv/3)^2;Iyyowcm=Ixxowcm;
%%Helium ringIzzhedcm=.5*mhed*(ri^2+ro^2);Ixxhedcm=.25*mhed*(ri^2+ro^2)+(mhed/6)*(Lv/3)^2;Iyyhedcm=Ixxhedcm;Izzhewcm=.5*mhew*(ri^2+ro^2);Ixxhewcm=.25*mhew*(ri^2+ro^2)+(mhew/6)*(Lv/3)^2;Iyyhewcm=Ixxhewcm;
%%lower ringIzzucm=.5*mu*(ri^2+ro^2);Ixxucm=.25*mu*(ri^2+ro^2)+(mu/6)*Lvu^2;Iyyucm=Ixxucm;
%%Lander cm%%Measured from the bottom of the landercmld=(ml*-.5*Gclear+mfd*Lv/6+mod*Lv/2+mhed*(5/6)*Lv+mu*(Lv+.5*Lvu))/mass_d;cmlw=(ml*-.5*Gclear+mfw*Lv/6+mow*Lv/2+mhew*(5/6)*Lv+mu*(Lv+.5*Lvu))/mass_w;
%%Lander total Moments of InertiaIxxldcm=(Ixxlcm+ml*(.5*Gclear+cmld)^2)+(Ixxfdcm+mfd*(Lv/6-cmld)^2)+(Ixxodcm+mod*(Lv/2-cmld)^2)+(Ixxhedcm+mhed*(5*Lv/6-cmld)^2)+(Ixxucm+mu*(Lv+.5*Lvu-cmld)^2);Iyyldcm=Ixxldcm;Izzldcm=Izzlcm+Izzfdcm+Izzodcm+Izzhedcm+Izzucm;
45
Ixxlwcm=(Ixxlcm+ml*(.5*Gclear+cmlw)^2)+(Ixxfwcm+mfw*(Lv/6-cmlw)^2)+(Ixxowcm+mow*(Lv/2-cmlw)^2)+(Ixxhewcm+mhew*(5*Lv/6-cmlw)^2)+(Ixxucm+mu*(Lv+.5*Lvu-cmlw)^2);Iyylwcm=Ixxlwcm;Izzlwcm=Izzlcm+Izzfwcm+Izzowcm+Izzhewcm+Izzucm;
%%Total Lander and AUV calculations%%center of masscmd=(mass_d*cmld+mauv*.5*lp)/(mass_d+mauv) %Measured from the bottom
of the lander (Dry)cmw=(mass_w*cmlw+mauv*.5*lp)/(mass_w+mauv) %Measured from the bottom
of the lander (Wet)
%%%%Total Package calculation%%AUVIxxpd=Ixxpcm+mauv*(.5*lp-cmd)^2;Iyypd=Ixxpd;Ixxpw=Ixxpcm+mauv*(.5*lp-cmw)^2;Iyypw=Ixxpw;Izzp=Izzpcm;
%%landerIxxld=Ixxldcm+mass_d*(cmld-cmd)^2;Iyyld=Ixxld;Izzld=Izzldcm;Ixxlw=Ixxlwcm+mass_w*(cmlw-cmw)^2;Iyylw=Ixxlw;Izzlw=Izzlwcm;
%%CombinedIxxd=Ixxpd+IxxldIyyd=Iyypd+IyyldIzzd=Izzp+IzzldIxxw=Ixxpw+IxxlwIyyw=Iyypw+IyylwIzzw=Izzp+Izzlw
The final portion of this code determines the stability of the lander upon impact of
Europa. The calculation uses basic physical principles, described in the main body of the
report, the geometry of the lander itself, and the center of mass of the lander/AUV
combination.
The drill distance is also calculated, assuming the minimum of the two predetermined
angles, and that the AUV must drill through 4 km of ice.
%%% Stability of Lander%%Finding max angle at landing not to tip over%%Impact on one legalpha(1)=pi/2-atan((cmd+Lleg*sin(pi/3))/(Ls*cos(pi/3)+Lleg*cos(alphal)));%%Impact on two legs alpha(2)=pi/2-atan((cmd+Lleg*sin(pi/3))/(Ls*cos(pi/3)+(Lleg*cos(alphal))*cos(pi/3)));
46
alphad=alpha*180/pi
drill_dist=4/cos(min(alpha)) %Drilling Distance
A4.2.2 AUV Hull Thickness Code
The MATLAB code in this section determines the thickness and mass of the AUV
composite hull. Equations in this code are from C.S. Smith’s article Design of
submersible pressure hulls in composite materials.2 This hull was just a first step in the
design of the AUV hull, further details about its design can be found in Chapter 5.
The first portion of the code establishes known information. Then three different hull
thicknesses required to withstand three different critical pressures is found. The
maximum of these thicknesses is selected, and used to calculate the hull mass.%% AUV Hull thickness calculator%% Jeremy Hemler%% All units metricclearformat compact
g=0.135*9.81; %gravity on Europarhoew=1000; %density of water kg/m^3depthmax=2200; %mPmax=rhoew*g*depthmax; %max Pressuresf=1.2; %Safety Factord=.466; %Diameter of ROVL=2.967; %Length of ROVsigmau=1000e6; %Ultimate compressive strength for filament wound carbon fiber in PaE=170e9; %Young's Modulus (see above material) Pasg=1.7; %specific gravity (see above material)=ratio of
density of material to density of water
%Collapse Pressure Required Thicknesstc(1)=0.5*Pmax*sf*d/sigmau;
%Buckling Pressure Required Thicknessn=2; %long cylindertc(2)=(12*((Pmax*(d/2)^3)/(n^2-1))/E)^(1/3);
%Collapse Pressure Associated with Buckling Required Thicknesstc(3)=((.5*Pmax*sf*d^3)/E)^(1/3);
t=max(tc) %Required Hull ThicknessV=(4*pi*(d/2)^2+pi*d*(L-d))*t; %Volume of material of hullm_hull=rhoew*sg*V %Mass of hull
A4.2.3 Truss Connection Code
47
The lander and the orbiter are connected by a basic truss structure as describe in the
main portion of this report. The following code calculates the mass of the structure. The
structure is made of titanium. The calculation used are very basic and do not account for
any vibrations, and therefore conservative estimates are used.%%%Truss Structure Mass Calculator%%%Jeremy Hemler%%% All units metric
clearformat compact
g=9.81; %Earth's gravity in m/s^2morb=5745; %Mass of orbiter in kgmaxg=6; %Maximum G loadsf=1.2; %Safety Factorsigcmax=830e6; %Max yield Stress for titanium in Mparhoe=4500; %Density of titanium in kg/m^3Ll=.99+.43; %Length of landerLs=0.7; %Length of side of landerLauv=2.764; %Length of probens=6; %Number of sides
Fmax=morb*g*maxg;Amin=Fmax*sf/(sigcmax) %Minimum Area in m^2
%In order to error on the side of caution, assume this load must be%carried by only the vertical members of truss structure, cross section%arranged in a hexagonal pattern.% |\ /|% | \/ |% | /\ |% |/ \|
A=Amin/ns %Area of each leg
Lv=Lauv-Ll %Length of vertical trussLd=((Lv^2)+(Ls^2))^.5 %Length of diagonal truss
%Final Mass 50% added for hardware(attachments) and 2)% added as experience based factormass=(1.5*(A*ns*(Lv+2*Ld)*rhoe))*1.2
48
Appendix 5.1 AUV Features and Configuration Rico Ebetino
Table 1: AUV Components and Dimensions
Mass (kg)Volume (m^3) Dimensions
Hydrodynamics 25 .4D*.15Lpropeller internal motor 11.8 .31L*.114Dmotor hull 3.9661 hull 52.45 .466*.01thick*2.154front of hull shield 13.8800213 0.0049572 .466D*.01LFiber-Optic Cable 42.5 .4D*.22L2 Transponders 0.4 thermal aft 3 .4D*.02Lthermal fore rtg 3 .4D*.02Lthermal shielding 1.8338495 1.421L*.01 thickheat pipes 20 each @30degree .013Drtg 55 0.40D*1.14LChemosynthesis Test 6 0.0103478 .135*.365*.210sonar1 0.98 0.0006411 .444*.038*.038sonar2 0.98 0.0006411 .444*.038*.038Microscopic Camera 0.254 0.000375 .125*.06*.05mirco viewing box 0.15 0.00015 .05*.06*.05Macroscopic Camera 0.459 0.0002285 0.0474D*0.1295Lin-suti 9 0.0194526 .2025D*.604LComputer 10 0.0020076 .04*.21*.239sonar compartments 6 cone 3.326 Misc. (Fittings, wiring, fasteners, etc.) 15 radiation shield 111.40959 Total Mass 396.3885608
49
Table 2: Center of Mass Calculations x-dir length y-dir length mass c.g. x-dir from axis c.g. y-dir from axis ximi yimicone 0.3 0.45 3.326 0.2 0 0.6652 0macro camera 0.13 0.047 0.459 0.135 0 0.061965 0front of hull sheild 0.01 0 13.8800213 0.305 0 4.2334065 0sonar 1 0.444 0.038 0.98 0.532 0.021 0.52136 0.02058sonar 2 0.444 0.038 0.98 0.532 0.021 0.52136 0.02058tank 1 0.444 0.038 3 0.532 0.021 1.596 0.063tank2 0.444 0.038 3 0.532 0.021 1.596 0.063pipes 1.374 0 20 0.997 0 19.94 0themal-rtg\science 1.374 0 1.838849578 0.897 0 1.6494481 0outer radiation shield 0.604 0.426 111.40959 0.602 0 0.0054035 0insuti 0.604 0.203 9 0.612 0.0985 5.508 0.8865computer 0.239 0.04 10 0.4295 -0.058 4.295 -0.58chemo 0.365 0.135 6 0.7315 -0.0805 4.389 -0.483micro camera 0.125 0.05 0.24 0.4265 -0.038 0.10236 -0.00912micro view box 0.05 0.05 0.15 0.514 -0.038 0.0771 -0.0057hydro 0.15 0.4 25 0.989 0 24.725 0optical cable 0.22 0.4 42.5 1.174 0 49.895 02 transponders 0 0 0.2 1.074 0 0.2148 0signal encoder 0 0thermal forward rtg 0.02 0.4 3 1.294 0 3.882 0rtg 1.14 0.4 55 1.874 0 103.07 0thermal aft rtg 0.02 0.4 3 2.454 0 7.362 0motor 0.31 0.114 11.8 2.619 0 30.9042 0hull 2.154 0.466 52.45 1.387 0 72.74815 0motor hull 0.31 3.9661 2.588 0 10.264267 0water in front misc 15 propeller 0.04 total 396.1795609 348.22702 -0.02416
50
Table 3: Stability CalculationsLength of Probe 2.764Diameter of Probe 0.466vol. Of cone 0.02558vol of end cone 0.022968vol of hull 0.36737total vol. Of AUV 0.415918water displaced 415.918den. Of water @ 1000cg z 0.878962607cg y -6.09824E-05center of buoyancy 1.380318654
Table 4: Other Calculationsdry mass of AUV 386.1795609 vol of water in front 0.287197805outer rad. sheild front rad. sheild length 0.604 0.01 out D 0.426 0.4 inner D 0.4 0.047 vol 0.039789138 0.0049572 mass of rad. Shield 111.4095865 13.880021
Table 5: Syntatic Foam13
51
Table 6: Syntatic Foam13
52
Table 7: Syntatic Foam13
53
Table 8: Syntatic Foam13
54
Appendix 6.1 Spacecraft Power Systems Greg Bischoff
Calculation of Energy requirement to melt ice:
Known:
heat of fusion of H2O: depth:
Assume:Cp is constantTemperature gradient is linear as a function of depth
Vary depth(D) infinitesimally for second term to get a integral with respect to depth
Given 4500 W of heat and a area of .196 m^2
Total Energy needed:
Time to melt ice:
55
Appendix 7.1 Orbiter Thermal and Radiation Control John Merchant
Thermal Analysis CodeThe thermal analysis code is responsible for determining the excess heat in the
spacecraft and sizing the thermal control system. It accomplishes this by running a
number of individual MATLAB functions.
THERMORB – The first code that is run, this allows the user to choose a preset
environment and a spacecraft orientation. In addition, internal temperature,
spacecraft dimensions, MLI efficiency, internal heat dissipation, and surface
characteristics are hard-coded here.
Environment Function (e.g. VENUS_FLYBY) – Based on the choice of
environment made in THERMORB, this function sets up the environment.
Relevant characteristics such as the distance to the sun or the planet’s average
temperature are set here.
CYLMODEL – This function undertakes the actual panel method – the number of
panels is hard-coded. It integrates the heat flux around the surface of the cylinder
to determine heat flow and wall temperature. With known internal heating and
temperature, it determines excess heat.
SIZING – Hence the name, SIZING uses the calculated excess heat to size the
thermal control system.
As the above code uses a panel method, there is some question as to how many panels
are necessary for an acceptable level of error. Results of a convergence study are shown
below. Our choice of 126 spacecraft panels and 100 planet panels gives us acceptable
error with good run time.
56
CYLMODEL.M
%Cylinder Heat Flow Code%By John M. Merchant%AAE 450 - Spring 2002
function [mass,volume,power,A_rad,Q_excess,Tint,Trad] = 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)
global constconstants;
%panel settingsbeta = 0:dbeta:2.*pi;vert_pts = 10;ang_pts = 10;
%bisector iteration settings (when applicable)
57
Tint_max = 700;Tint_min = 0;Qtol = 1; %excess heat tolerance (within this value is treated as steady state)
%angular properties of the planettheta2max = acos(1./Dratio);theta1max = (pi/2) - theta2max;ang_width = 2.*theta1max.*180./pi; %angular width of planet
disp( '--------------------------------------------------------------------------');disp(' ');disp(['Spacecraft Properties (Cylinder Model)']);disp([' Length: ',num2str(L),' m.']);disp([' Radius: ',num2str(R),' m.']);disp([' Year In-Flight: ',num2str(year),' yr.']);disp([' Surface Absorptivity: ',num2str(alpha)]);disp([' Surface Emissivity: ',num2str(epsilon)]);disp([' Effective MLI Emissivity: ',num2str(epsilon_eff)]);disp(' ');disp(['Spacecraft Orientation (3-1-3) wrt. Solar Frame: '])disp([' Precession: ',num2str(theta.*180./pi), ' deg.']);disp([' Nutation: ',num2str(phi.*180./pi), ' deg.']);disp([' Spin: ',num2str(psi.*180./pi), ' deg.']);disp(' ');
%solar eclipse check - checks sun angle to see if it's within the angular width of the planete_angle_max = (gamma.*180./pi) + ang_width/2;e_angle_min = (gamma.*180./pi) - ang_width/2;eclipse = 0;if e_angle_max > 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(' '); endend
if planetswitch == 1
58
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 stepiterate = 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
59
%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
60
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).*...
61
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
62
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).*...
63
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)).*...
64
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
65
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
66
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
67
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']);
68
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 enddisp( '--------------------------------------------------------------------------');
69
THERMORB.M
%Orbiter Thermal Analysis Driver%By John M. Merchant%AAE 450 - Spring 2002
global constconstants;
tempiter = 0; %switch: 1 to find steady state temperature, 0 for set valueTint = 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 spacingdbeta = 0.05; %for a cylindrical shape -- Orbiter
%wall and insulation propertiesepsilon = 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 dimensionsR = 2.8/2; %Radius (m) -- OrbiterL = 3.3; %Length (m) -- Orbiter
%Tank DimensionsRtank_f = 0.6978;Rtank_ox = 0.6835;Rtank_he = 0.5357;
%Interior heat dissipationexposure_RTG = 0.0; %fraction of RTG area exposed to orbiterQ_RTG = [2].*exposure_RTG.*4000; %WQ_elec = 210; %W ?????
%surface areaAsurf_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 Environmentdisp('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');
70
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 Anglesdisp(' ');disp('Define Orientation: ');theta = input('Precession Angle (deg) = ').*pi./180; %precession anglephi = input('Nutation Angle (deg) = ').*pi./180; %nutation anglepsi = input('Spin Angle (deg) = ').*pi./180; %spin angle
%surface propertiesalpha = 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);
71
SIZING.M
%hardware sizingfunction [mass, A_rad, volume, power] = sizing(Qtotal,epsilon,Trad,Asurf_tot);global const
%radiator sizingA_rad = (Qtotal.*1e3)./(epsilon.*const.sigma.*Trad.^4);m_rad = 10.6.*A_rad; %kg - fixed radiatorsV_rad = 0.04.*A_rad; %m.^2
%heat exchanger sizingm_hx = (17 + 0.25.*Qtotal);V_hx = (0.016+0.0012.*Qtotal);
%pumpsm_pumps = 1.25.*(4.8.*Qtotal); %includes plumbing, valves, fluids, instrumentsV_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;
%totalm_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 constconstants;
year = 1; %current year in flight
72
d = 0.723; %distance from the sun in AU
planetswitch = 1; %switch: 1 for planet, 0 for just the sungamma = [180].*pi./180; %planetary angle wrt. sun vector in ecliptic planeDratio = 1.479; %nondimensional distance from planet in radiiTplanet = const.Tvenus; %planet blackbody temperatureAF = const.AFvenus; %albedo factor
73
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 efficiencyk = 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 gainGr = 52000/(BWO^2);%transmitting antenna gainGt = 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 lossSL = 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 powerEIRP = 10*log10(Gt*Pt);%EIRP (downlink)EIRPr = 10*log10(Gr*Pt);%signal/noise ratio in dBCN0dB = (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 dBCN0 = 10^(CN0dB/10);CN0r = 10^(CN0dBr/10);%bit error rate calculationBER = 0.5*erfc(sqrt(CN0/Rb));BERr = 0.5*erfc(sqrt(CN0r/100));%gain conversion to dBGaindB = 10*log10(Gt);%display resultsdisp(['f = ', num2str(f), ' GHz BER = ', num2str(BER), ' Gain = ', num2str(GaindB), ' dB'])%end
74
Appendix 9.2 Communications Between Orbiter and Earth James Burkett
Budget Link Analysis -- Lander-to-Orbiter
Inputs NotesDistance 1.00E+05 meters dist = 100 km; %[meters] average distance of Jupiter, 778 million km Frequency 1.59E+09 Hz freq = 1.56 GHz; %[Hz] iteration of frequency Data Rate 3.00E+06 bps data_rate = 3 Mbps; %[bps] transmission data rate Transmitter Power 7 Watts Pt = 7; %[Watts] transmitter power Trxn Antenna Diam 0.1 meters diam = 10cm; %[meters] diameter of orbiter antenna Rec Antenna Diam 0.1 meters diam_receive = 10cm; %[meters] diameter of lander antenna
Transmitting Antenna GainGt 2.2100 dB Gt = 10*log( Eap*(10.472*(freq/1e9)*diam)^2 ); %freq in GHz, diam in meters, Eap = 0.6
Effective Isotropic Radiated PowerEIRP 1.07E+01 dB EIRP = 10*log10(Pt) + Gt;
Receiving Antenna GainGr 4.24E+00 dB Gr = 10*log10(G); % from tables for DSN Antennas in 810-005, Rev. E
LossesFree Space Loss 1.36E+02 dB FSL = 10*log( 1.757x10^-15*freq^2*distance^2 )Receiver Fader Loss 0.20 dB RFL = 1;Atmos. Absorp. Loss 0.00 dB AA = 0.5;Anten. Misalign. Loss 0.10 dB AML = 0.5;Polarization Loss 0.20 dB PL = 0; %[dB] Polarization Loss, PL=cos(theta_f)^2, not a problem for freqs >=10GHz
Received Isotropic Signal PowerPr -1.24E+02 dB Pr = EIRP + Gr - FSL - RFL - AA - AML - PL;
Thermal NoiseTs 20.00 dB Ts = 10*log10(T_deg); % estimated for data link in vicinity of Jupiterk (Boltzman's Const) -228.60 dB k = -228.60; %[dBJpK] Boltzmann's constant k = 1.38x10^-23 J/KNo -208.60 dB No = k + Ts;
BER (Bit Error Rate)
75
Tb 3.33E-07 sec/bit Tb = 1/data_rate;Eb -1.89E+02 dB Eb = Pr + 10*log10(Tb); % (Roddy, p.141)x 9.38E+01 x = 10^((Eb-No)/10);BER 5.09E-43 errors/bit trxn BER = exp(-x)/sqrt(4*pi*x); % (Roddy, p.143)
Noise MarginPr/No_r 84.50 dB PrNo_r = Pr - No;Data Rate 64.77 dB DR = 10*log10(data_rate);Eb/No_r 19.72 dB EbNo_r = PrNo_r - DR;Lo2 0.50 dB Lo2 = 0;Eb/No_reqd 5.00 dB EbNo_reqd = 5;Margin 14.22 dB M = EbNo_r - EbNo_reqd - Lo2;
Carrier-to-Noise RatioBn 4.92E-01 dB Bn = 10*log10(1.12); %[dB] noise bandwidth (Roddy, p.180)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)
OUTPUTSBeamwidth 132.075 deg % BW = 21e9/freq/diam where freq [=] Hz, diam [=] meters, and BW [=] degrees;BER 5.093E-43 Margin 1.422E+01 dB Notes: 10^-4 BER is assumed acceptable for PCM speech (Pritchard and Scuilli, p.211); Carrier-to-Noise Ratio 8.400E+01 dB/dB Roddy's "Satellite Communciations", p.140, says that 10^-4 BER is standard
76
Budget Link Analysis -- Orbiter-to-Lander
Inputs NotesDistance 1.00E+05 meters dist = 100 km; %[meters] average distance of Jupiter, 778 million kmFrequency 1.59E+09 Hz freq = 1.56 GHz; %[Hz] iteration of frequency Data Rate 3.00E+06 bps data_rate = 3 Mbps; %[bps] transmission data rate Transmitter Power 7 Watts Pt = 7; %[Watts] transmitter power Trxn Antenna Diam 0.1 meters diam = 10cm; %[meters] diameter of orbiter antenna Rec Antenna Diam 0.1 meters diam_receive = 10cm; %[meters] diameter of lander antenna
Transmitting Antenna GainGt 2.2100 dB Gt = 10*log( Eap*(10.472*(freq/1e9)*diam)^2 ); %freq in GHz, diam in meters, Eap = 0.6
Effective Isotropic Radiated PowerEIRP 1.07E+01 dB EIRP = 10*log10(Pt) + Gt;
Receiving Antenna GainGr 2.2100 dB Gr = 10*log( Eap*(10.472*(freq/1e9)*diam_rec)^2 ); % from tables for DSN Antennas in 810-005, Rev. E
LossesFree Space Loss 1.36E+02 dB FSL = 10*log( 1.757x10^-15*freq^2*distance^2 )Receiver Fader Loss 0.10 dB RFL = 1;Atmos. Absorp. Loss 0.00 dB AA = 0.5;Anten. Misalign. Loss 0.10 dB AML = 0.5;Polarization Loss 0.10 dB PL = 0; %[dB] Polarization Loss, PL=cos(theta_f)^2, not a problem for freqs >=10GHz
Received Isotropic Signal PowerPr -1.24E+02 dB Pr = EIRP + Gr - FSL - RFL - AA - AML - PL;
Thermal NoiseTs 20.00 dB Ts = 10*log10(T_deg); % estimated for data link in vicinity of Jupiterk (Boltzman's Const) -228.60 dB k = -228.60; %[dBJpK] Boltzmann's constant k = 1.38x10^-23 J/KNo -208.60 dB No = k + Ts;
BER (Bit Error Rate)Bit Period 3.33E-07 sec/bit Tb = 1/data_rate;Energy Per Bit -1.89E+02 dB Eb = Pr + 10*log10(Tb); % (Roddy, p.141)
77
x 9.83E+01 x = 10^((Eb-No)/10);BER 5.97E-45 errors/bit trxn BER = exp(-x)/sqrt(4*pi*x); % (Roddy, p.143)
Noise MarginRec.Power-to-Noise Ratio 84.70 dB PrNo_r = Pr - No;Data Rate 64.77 dB DR = 10*log10(data_rate);Bit Energy to Noise Ratio 19.92 dB EbNo_r = PrNo_r - DR;Implementation Loss 0.50 dB Lo2 = 0;Min. Power Ratio Reqd 5.00 dB EbNo_reqd = 5;Margin 14.42 dB M = EbNo_r - EbNo_reqd - Lo2;
Carrier-to-Noise RatioBn 4.92E-01 dB Bn = 10*log10(1.12); %[dB] noise bandwidth (Roddy, p.180)C/N 8.42E+01 dB C_N = Pr - No - Bn = Pr - k - Ts - Bn; %[dB] carrier-to-noise ratio (Roddy, p.188, eqn. 6.38)
OUTPUTSBeamwidth 132.075 deg % BW = 21e9/freq/diam where freq [=] Hz, diam [=] meters, and BW [=] degrees;Bit Error Rate 5.972E-45
Margin 1.442E+01 dB Notes: 10^-4 BER is assumed acceptable for PCM speech (Pritchard and Scuilli, p.211);
Carrier-to-Noise Ratio 8.420E+01 dB/dB Roddy's "Satellite Communciations", p.140, says that 10^-4 BER is standard
78
Budget Link Analysis -- Earth-to-Orbiter
Inputs Equations NotesDistance 7.78E+11 meters dist = 778 million km; %[meters] average distance of Jupiter, 778 million kmFrequency 7.16E+09 Hz freq = 7160 MHz; %[Hz] iteration of frequency Data Rate 3.00E+10 bps data_rate = 30 Gbps; %[bps] transmission data rate Transmitter Power N/A Watts Pt = ~20kW to ~400kW; %[Watts] transmitter power Trxn Antenna Diam 70 meters diam = 70 meters; %[meters] diameter of earth antenna Rec Antenna Diam 5 meters diam_receive = 5 meters; %[meters] diameter of orbiter antenna
Transmitting Antenna PowerEIRP 1.45E+02 dB From tables for DSN Antennas in 810-005, Rev. E
Receiving Antenna GainGr 4.93E+01 dB Gt = 10*log( Eap*(10.472*(freq/1e9)*diam_rec)^2 ); %freq in GHz, diam in meters, Eap = 0.6
LossesFree Space Loss 2.87E+02 dB FSL = 10*log( 1.757x10^-15*freq^2*distance^2 )Receiver Fader Loss 0.20 dB RFL = 1;Atmos. Absorp. Loss 2.00 dB AA = 0.5;Anten. Misalign. Loss 0.10 dB AML = 0.5;Polarization Loss 0.50 dB PL = 0; %[dB] Polarization Loss, PL=cos(theta_f)^2, not a problem for freqs >=10GHz
Received Isotropic Signal PowerPr -9.55E+01 dB Pr = EIRP + Gr - FSL - RFL - AA - AML - PL;
Thermal NoiseTs 15.00 dB Ts = 10*log10(T_deg); % Thermal noise from Roddyk (Boltzman's Const) -228.60 dB k = -228.60; %[dBJpK] Boltzmann's constant k = 1.38x10^-23 J/KNo -213.60 dB No = k + Ts;
BER (Bit Error Rate)Tb 3.33E-11 sec/bit Tb = 1/data_rate;Eb -2.00E+02 dB Eb = Pr + 10*log10(Tb); % (Roddy, p.141)BER 2.91E-10 errors/bit trxn BER = 0.5*ERFC(sqrt(C/N*Tb)) % (Roddy, p.143)
Noise Margin
79
Pr/No_r 118.09 dB PrNo_r = Pr - No;Data Rate 104.77 dB DR = 10*log10(data_rate);Eb/No_r 13.32 dB EbNo_r = PrNo_r - DR;Lo2 0.50 dB Lo2 = 0;Eb/No_reqd 5.00 dB EbNo_reqd = 5;Margin 7.82 dB M = EbNo_r - EbNo_reqd - Lo2;
Carrier-to-Noise RatioBn 4.92E-01 dB Bn = 10*log10(1.12); %[dB] noise bandwidth (Roddy, p.180)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)
OUTPUTSBeamwidth 0.042 deg % BW = 21e9/freq/diam where freq [=] Hz, diam [=] meters, and BW [=] degrees;Bit Error Rate 2.911E-10
Margin 7.823E+00 dB Notes: 10^-4 BER is assumed acceptable for PCM speech (Pritchard and Scuilli, p.211);
Carrier-to-Noise Ratio 1.176E+02 dB/dB Roddy's "Satellite Communciations", p.140, says that 10^-4 BER is standard
80
Budget Link Analysis -- Orbiter-to-Earth
Inputs Equations NotesDistance 7.78E+11 meters dist = 778 million km; %[meters] average distance of Jupiter, 778 million kmFrequency 8.42E+09 Hz freq = 8420 MHz; %[Hz] iteration of frequency Data Rate 3.00E+06 bps data_rate = 3 Mbps; %[bps] transmission data rate Transmitter Power 300 Watts Pt = 300 Watts; %[Watts] transmitter power Trxn Antenna Diam 5 meters diam = 5 meters; %[meters] diameter of orbiter antenna Rec Antenna Diam 70 meters diam_receive = 70 meters; %[meters] diameter of earth antenna
Transmitting Antenna GainGt 5.10E+01 dB Gt = 10*log( Eap*(10.472*(freq/1e9)*diam)^2 ); %freq in GHz, diam in meters, Eap = 0.6
Effective Isotropic Radiated PowerEIRP 7.58E+01 dB EIRP = 10*log10(Pt) + Gt;
Receiving Antenna GainGr 74.5 dB From tables for DSN Antennas in 810-005, Rev. E
LossesFree Space Loss 2.89E+02 dB FSL = 10*log( 1.757x10^-15*freq^2*distance^2 )Receiver Fader Loss 0.10 dB RFL = 1;Atmos. Absorp. Loss 2.00 dB AA = 0.5;Anten. Misalign. Loss 0.10 dB AML = 0.5;Polarization Loss 0.10 dB PL = 0; %[dB] Polarization Loss, PL=cos(theta_f)^2, not a problem for freqs >=10GHz
Received Isotropic Signal PowerPr -1.41E+02 dB Pr = EIRP + Gr - FSL - RFL - AA - AML - PL;
Thermal NoiseTs 15.00 dB Ts = 10*log10(T_deg); % Thermal noise from Roddyk (Boltzman's Const) -228.60 dB k = -228.60; %[dBJpK] Boltzmann's constant k = 1.38x10^-23 J/KNo -213.60 dB No = k + Ts;
BER (Bit Error Rate)Tb 3.33E-07 sec/bit Tb = 1/data_rate;Eb -2.06E+02 dB Eb = Pr + 10*log10(Tb); % (Roddy, p.141)
81
BER 3.72E-04 errors/bit trxn BER = 0.5*ERFC(sqrt(C/N*Tb)) % C/N in Watts/Watt and Tb in sec/bit (Roddy, p.143)
Noise MarginPr/No_r 72.81 dB PrNo_r = Pr - No;Data Rate 64.77 dB DR = 10*log10(data_rate);Eb/No_r 8.04 dB EbNo_r = PrNo_r - DR;Lo2 0.25 dB Lo2 = const;Eb/No_reqd 5.00 dB EbNo_reqd = 5;Margin 2.79 dB M = EbNo_r - EbNo_reqd - Lo2;
Carrier-to-Noise RatioBn 4.92E-01 dB Bn = 10*log10(1.12); %[dB] noise bandwidth (Roddy, p.180)C/N 7.23E+01 dB C_N = Pr - No - Bn = Pr - k - Ts - Bn; %[dB] carrier-to-noise ratio (Roddy, p.188, eqn. 6.38)
OUTPUTSBeamwidth 0.499 deg % BW = 21e9/freq/diam where freq [=] Hz, diam [=] meters, and BW [=] degrees;Bit Error Rate 3.720E-04
Margin 2.792E+00 dB Notes: 10^-4 BER is assumed acceptable for PCM speech (Pritchard and Scuilli, p.211);
Carrier-to-Noise Ratio 7.232E+01 dB/dB Roddy's "Satellite Communciations", p.140, says that 10^-4 BER is standard
82