Contents

AlphaCentauri flyby at constant thrust

%--------------------------------------------------------------------------
% See also: SolveFlybyPower, EngineThrust, FlybyConstantThrust,
%           EngineReport, SimulateFlyby
%--------------------------------------------------------------------------

%--------------------------------------------------------------------------
% Copyright (c) 2016 Princeton Satellite Systems, Inc.
% All rights reserved.
%--------------------------------------------------------------------------

% Constants
lY   = 9460730472580.8; % km per lightyear
YEAR = 365.25*86400;

% Mission parameters
d = Straight2DStructure;
d.dF    = 4.4*lY; % target distance, Alpha Centauri
d.uE    = 5000;   % km/s
d.eta   = 0.6;    % fusion power to thrust efficiency
sigma   = 20.0;   % kW/kg
d.f     = 0.02;   % structural fraction, kg/kg

years   = 375;
d.sigma = sigma*1e3;
d.tF    = years*YEAR;
d.mP    = 100;    % kg

% Find the payload and power ratios for the desired flight time
[lambda,alpha] = SolveLambdaFlyby( d );
m0     = d.mP/lambda;
power  = d.mP/alpha;
thrust = EngineThrust( power, d );

% Calculate flyby distance achieved
[dF, vF, mF]  = FlybyConstantThrust( thrust, d );

[~,data] = EngineReport(thrust,d,true)
SimulateFlyby( data )
subplot(3,1,1)
text(25,2,sprintf('Payload: %d kg\nPower: %.2f MW\nThrust: %.2f N\nMass: %.0f kg',...
  d.mP,power*1e-6,thrust,m0));

k = 1;
s = {};
s{k,1} = 'Final position';    s{k,2} = sprintf('%12.2f',dF/lY);     s{k,3} = 'lY';    k = k + 1;
s{k,1} = 'Final velocity';    s{k,2} = sprintf('%12.2f',vF);        s{k,3} = 'km/s';	k = k + 1;
s{k,1} = 'Final time';        s{k,2} = sprintf('%12.2f',years);     s{k,3} = 'yr';    k = k + 1;
s{k,1} = 'Fuel';              s{k,2} = sprintf('%12.2f',mF);        s{k,3} = 'kg';    k = k + 1;
s{k,1} = 'Mass Total';        s{k,2} = sprintf('%12.2f',m0);        s{k,3} = 'kg';    k = k + 1;
s{k,1} = 'Mass Engine';       s{k,2} = sprintf('%12.2f',mE);        s{k,3} = 'kg';    k = k + 1;
s{k,1} = 'Mass Payload';      s{k,2} = sprintf('%12.2f',mP);        s{k,3} = 'kg';    k = k + 1;
s{k,1} = 'Exhaust Velocity';	s{k,2} = sprintf('%12.2f',uE);        s{k,3} = 'km/s';  k = k + 1;
s{k,1} = 'Power';             s{k,2} = sprintf('%12.2f',power/1e6);	s{k,3} = 'MW';    k = k + 1;
s{k,1} = 'Thrust';            s{k,2} = sprintf('%12.2f',thrust);    s{k,3} = 'N';     k = k + 1;
s{k,1} = 'Specific power';    s{k,2} = sprintf('%12.2f',sigma);     s{k,3} = 'kW/kg'; k = k + 1;
s{k,1} = 'Efficiency';        s{k,2} = sprintf('%12.2f',eta);       s{k,3} = '';      k = k + 1;
s{k,1} = 'Tank fraction';     s{k,2} = sprintf('%12.2f',f);         s{k,3} = '';

DisplayLatexTable(s)
if 0
  CreateLatexTable(s,'PointDesignAlphaCentauri');
end

return;
Warning: distance too large to achieve in time 
Warning: EngineReport: Distance not achieved! 
Report:
           ---- INPUTS ----           --    -- 
                    Payload          100    kg 
           Desired distance         4.40    LY 
                Travel time       375.00 years 
           ---- ENGINE ----           --    -- 
          Thrust Efficiency         0.60       
           Exhaust velocity         5000  km/s 
             Specific Power        20.00 kW/kg 
         Fuel Tank Fraction         0.02       
          ---- OUTPUTS ----           --    -- 
      Payload Mass Fraction         0.00 mP/m0 
     Payload Power Fraction          Inf kW/kg 
                    Delta-V         0.00  km/s 
---- PAYLOAD DEPENDENT ----           --    -- 
                     Thrust         1.23     N 
            Distance target         4.40    LY 
          Distance achieved         2.99    LY 
                      Power         5.12    MW 
                 Total Mass          Inf    kg 
                   Mass Dry       414.47    kg 
                Mass Engine       256.25    kg 
                  Mass Fuel      2911.19    kg 
                  Flow Rate         0.00   g/s 

data = 

  struct with fields:

           tF: 1.1834e+10
           dF: 4.1627e+13
            f: 0.02
           uE: 5000
          eta: 0.6
        sigma: 20000
           mP: 100
           mE: 256.25
           v0: []
    createdBy: 'Straight2DStructure'
       lambda: 0
        alpha: 0
           dV: 0
       thrust: 1.23
            p: 5.125e+06
           m0: Inf
           mF: 2911.2
           mD: 414.47
         mDot: 2.46e-07
           tS: 8.7464e+09
           vS: 5206

Final position simulation         4.40 Distance (LY)
Final velocity simulation     10412.07 km/s
Final time     simulation       375.00 year
  Final position         4.40    lY 
  Final velocity     10412.07  km/s 
      Final time       375.00    yr 
            Fuel      2911.19    kg 
      Mass Total      3325.66    kg 
     Mass Engine      1656.34    kg 
    Mass Payload       505.37    kg 
Exhaust Velocity     20000.00  km/s 
           Power         5.12    MW 
          Thrust         1.23     N 
  Specific power        20.00 kW/kg 
      Efficiency         0.50       
   Tank fraction         1.00       

An array of durations

taus    = linspace(300,500);
Ps      = zeros(size(tau));
m0s     = Ps;
dZero   = Ps;
for k = 1:length(taus)
  d.tF = taus(k)*YEAR;
  dZero(k) = ZeroPayloadFlyby( d, d.tF );
  if d.dF<dZero(k)
    [lambda,alpha] = SolveLambdaFlyby( d );
    [Ps(k),m0s(k)] = SolveFlybyPower( d );
  end
end
Plot2D(taus,[dZero/lY;Ps*1e-6],'Years',{'Zero Payload Distance, LY','Power to 4.4 LY (MW)'},...
  'Alpha Centauri Flyby')
subplot(2,1,1)
yy = axis; hold on;
plot(yy(1:2),4.4*[1 1],'r-')
subplot(2,1,2)
text(400,80,sprintf('Payload: %d kg\nuE:    %g km/s\nsigma: %g kW/kg\neta:   %g\nf:    %g',...
  mP,uE,sigma,eta,f));

Numerical simulation and trajectory plot

mD	= mP + mE + f*mDot*tF;
SimulateFlyby( mD, mF, thrust, uE, tF )
subplot(3,1,1)
text(25,2,sprintf('Payload: %d kg\nPower: %.2f MW\nThrust: %.2f N\nMass: %.0f kg',...
  mP,power*1e-6,thrust,m0));


 %--------------------------------------
% $Date$
% $Id: 7096d2a2004d17930b3ca722e46755ae3dc7e51d $