Contents

Planar orbit optimization to outside the solar system, 550 AU

Calculate the optimal thrust to achieve a planar trajectory to the desired final orbit, assuming a certain specific impulse (exhaust velocity) and specific power for the engine.

A good solution has a smooth change in phi and linear change in u (up until switch point, then down). If there is excess radial velocity on arrival, try increasing the transit time.

See also: PlanarHelioOptimal, StraightLineOptimal, StraightLineReport

%--------------------------------------------------------------------------
% Copyright 2017 Princeton Satellite Systems
%   All rights reserved.
%--------------------------------------------------------------------------

First set up the problem and check the guess for thrust/power

Controls

repeatPrevious = false;

% Parameters
nYears    = 10;  % transit time in years
payload   = 1500;  % payload mass (kg)
uExhaust  = 100; % km/s
sigma     = 1000;   % W/kg
eta       = 0.5;     % Total fusion power to thrust
au        = Constant('au');
year      = 365.25*86400;

% Calculate the optimal planar solution
d         = PlanarHelioOptimal;
d.rF      = 550*au;
d.tF      = nYears*year;
d.mP      = payload;         % payload mass (kg)
d.uE    	= uExhaust;     % exhaust velocity, km/s
d.f     	= 0.02;         % fuel structural fraction (tanks)
% additional fields for optimization
d.sigma   = sigma;        % specific power, W/kg
d.eta     = eta;          % thrust efficiency
vRef      = sqrt(d.mu/d.rF);
d.scale   = [1/d.rF*1e3;1/vRef;1/vRef];
d.scale   = [1;1e3;1e3];
d.nPts    = 20;

% initial guess for thrust: use constant accel in limit as sigma increases
% assume spacecraft leaves along the tangent to the destination
distance = sqrt(d.rF^2-d.r0^2);
thrustE = ThrustElectric( d.tF, distance, d.uE, 1e6, d.f, d.eta, d.mP );
fprintf('Initial guess: Thrust = %g N, power = %g MW\n',thrustE,0.5*thrustE*d.uE/d.eta*1e-3)

d.thrustMax = thrustE;  % maximum thrust (N)
Initial guess: Thrust = -244.19 N, power = -24.419 MW

Evaluate

If the thrust guess for the mission is reasonable, try the optimization

if repeatPrevious
	[phi, thrust, t, data] = PlanarHelioOptimal( d, 4000, 'iter-detailed', thrust0, phi0  );
else
  [phi, thrust, t, data] = PlanarHelioOptimal( d );
end
phi0 = phi;
thrust0 = thrust;

data.flag
data.fmincon

% Report
StraightLineReport( data );

return;
       -223.4      -64.319        138.5       47.186   2.1828e-10

       -223.4      -64.319        138.5       47.186   2.1828e-10

                                            First-order      Norm of
 Iter F-count            f(x)  Feasibility   optimality         step
    0      43   -7.399506e+05    7.522e+10    3.241e+03
    1      86   -2.071360e+05    7.346e+10    3.210e+03    7.992e-01
      -62.863      -64.941       140.36       58.978   -1.819e-11

    2     129   -2.044719e+05    7.170e+10    2.739e+03    5.819e-01
      -62.061      -61.792       137.04       70.684   9.0949e-11

    3     173   -2.044780e+05    7.032e+10    2.506e+03    2.740e+00
      -62.063       -48.59       115.85       79.967  -4.0018e-11

    4     217   -2.044817e+05    6.657e+10    2.348e+03    2.923e+00
      -62.064      -14.785       64.011       104.98   6.1846e-11

    5     261   -2.044822e+05    6.488e+10    2.140e+03    3.072e+00
      -62.064      -6.5727       50.472       116.33  -2.5466e-11

    6     305   -2.044824e+05    6.473e+10    2.042e+03    2.957e+00
      -62.064       7.3685        43.06        117.3    7.276e-11

    7     349   -2.044826e+05    6.208e+10    1.935e+03    2.340e+00
      -62.064       25.652       33.494       135.01   4.3656e-11

    8     394   -2.044826e+05    6.159e+10    1.918e+03    1.681e+00
      -62.064       31.919        33.36       138.31  -1.0914e-11

    9     438   -2.044827e+05    6.099e+10    1.830e+03    1.845e+00
      -62.064       44.586       31.037       142.33   1.4552e-11

   10     482   -2.044827e+05    6.021e+10    1.791e+03    2.355e+00
      -62.064       38.481       29.583        147.5   4.0018e-11

   11     527   -2.044827e+05    6.010e+10    1.765e+03    8.896e-01
      -62.064       38.559       28.656       148.29  -1.4552e-11

   12     576   -2.044827e+05    5.996e+10    2.934e-05    4.218e-01
      -62.064       39.178       32.244       149.22   6.1846e-11

   13     622   -2.044827e+05    5.994e+10    2.933e-05    2.314e-01
      -62.064        38.92       32.173       149.33  -1.0914e-11

   14     665   -2.044823e+05    2.686e+10    1.332e-02    7.370e+00
      -62.064       313.47      -61.175       729.53  -9.4587e-11

   15     721   -2.044823e+05    2.578e+10    2.892e-05    1.535e-02
      -62.064       309.14       -61.02       722.33    1.819e-11

   16     765   -2.044823e+05    2.578e+10    2.892e-05    7.186e-04
      -62.064       309.11      -61.013       722.31   3.2742e-11

   17     809   -2.044823e+05    2.554e+10    2.895e-05    1.831e-01
      -62.064       303.21      -59.513       720.74  -4.7294e-11

   18     852   -2.044826e+05    2.095e+10    2.923e-05    1.407e+00
      -62.064       240.18      -43.302       690.01    5.457e-11

   19     895   -2.044828e+05    1.568e+10    2.944e-05    1.929e+00
      -62.064       209.11       -23.38       654.82  -2.5466e-11

   20     938   -2.044829e+05    1.045e+10    2.963e-05    2.422e+00
      -62.064       168.67      -18.545       619.89  -1.4552e-11

   21     984   -2.044830e+05    7.028e+08    2.970e-05    1.556e+00
      -62.064       116.86      -1.7471        545.3  -1.4552e-11

   22    1038   -2.044829e+05    1.592e+08    2.962e-05    2.173e-02
      -62.064       118.29      -1.6825       548.94    3.638e-12

   23    1087   -2.044828e+05    3.973e+07    2.955e-05    1.073e-02
      -62.064       118.45      -1.6654       549.73   1.4552e-11

   24    1136   -2.044828e+05    8.413e+06    2.948e-05    5.046e-03
      -62.064       118.43      -1.6596       549.94   2.5466e-11

   25    1191   -2.044827e+05    1.923e+06    2.941e-05    2.701e-03
      -62.064       118.37       -1.657       549.99    7.276e-11

      -62.064       118.37       -1.657       549.99    7.276e-11


Optimization completed: The relative first-order optimality measure, 8.862686e-09,
is less than options.OptimalityTolerance = 1.000000e-05, and the relative maximum constraint
violation, 2.557036e-05, is less than options.ConstraintTolerance = 5.000000e-05.


Planar optimization results:
----------------------------
Destination:		550.0 AU
sigma:			1000 W/kg
uE:			100 km/s
eta:			0.5
f:			0.02
Duration:		3652.5 days
Thrust:			-62.1 N
Distance error:		-1923398.293 km
Velocity errors:	[118.367;-2.92704] km/s
Payload:		1500 kg
Engine:			-6206.4 kg
Dry mass:		-8623.58 kg
Fuel:			-195859 kg
Total mass:		-204483 kg
Total DV:		316.598 km/s
Power:			-6.2064 MW
Mars Angle:		444.997 deg
Earth Angle:		3600 deg

ans =

     1


ans = 

  struct with fields:

         iterations: 25
          funcCount: 1191
    constrviolation: 1.9234e+06
           stepsize: 0.0027006
          algorithm: 'interior-point'
      firstorderopt: 2.9414e-05
       cgiterations: 61
            message: 'Local minimum found that satisfies the constraints.↵↵Optimization completed because the objective function is non-decreasing in ↵feasible directions, to within the value of the optimality tolerance,↵and constraints are satisfied to within the value of the constraint tolerance.↵↵<stopping criteria details>↵↵Optimization completed: The relative first-order optimality measure, 8.862686e-09,↵is less than options.OptimalityTolerance = 1.000000e-05, and the relative maximum constraint↵violation, 2.557036e-05, is less than options.ConstraintTolerance = 5.000000e-05.'
       bestfeasible: []

Report:
           Inputs           --    -- 
          Payload         1500    kg 
      Travel time        10.00 years 
   Specific Power         1.00 kW/kg 
 Exhaust velocity          100  km/s 
Thrust Efficiency         0.50       
    Fuel Fraction         0.02       
          Outputs           --    -- 
           Thrust       -62.06     N 
       Total Mass   -204482.73    kg 
         Mass Dry     -8623.58    kg 
      Mass Engine     -6206.40    kg 
        Mass Fuel   -195859.14    kg 
        Flow Rate        -0.62   g/s 
            Power        -6.21    MW 
          Delta V       316.60  km/s 
   Final Distance       549.99    AU 
   Final Velocity       118.38  km/s 

Comparison

Compare the solution to a straight line solution with the same parameters. Input data structure

d       = StraightLineOptimal;
d.mP    = payload;      % payload mass (kg)
d.dF    = 1.0*au;    % distance traversed, km (1 AU)
d.tF    = nYears*year;  % final time
d.uE    = uExhaust;     % exhaust velocity, km/s
d.f     = 0.02;         % fuel structural fraction (tanks)
% additional fields for optimization
d.sigma = sigma;        % specific power, W/kg
d.eta   = eta;          % thrust efficiency
d.v0    = 0;            % approx initial velocity (km/s)
d.maxThrust = 50;       % maximum thrust (N)

% Evaluate
[tS, thrust, data] = StraightLineOptimal( d );
StraightLineReport( data );
SimulateStraightLineTrajectory( data.mD, data.mF, thrust, d.uE, d.tF, d.v0, tS )
subplot(3,1,1)
% text(0.15,25,sprintf('Payload: %d kg',payload));
% text(0.15,20,sprintf('Power: %.2f MW',data.p*1e-6));
% text(0.15,15,sprintf('Thrust: %.2f N',data.thrust));
% text(0.15,10,sprintf('Mass: %.0f kg',data.m0));
yy = axis; hold on;
line(yy(1:2),[1 1]*au,'color','r');


%--------------------------------------

% $Id: 4becf960f4f62a891dbbb1e3eaa8f40a53a16fdb $