Compute delta-V for lunar orbit insertion

See also: LunarOrbitInsertion, RV2El, AE2RPRA, Constant

%--------------------------------------------------------------------------
%   Copyright (c) 2024 Princeton Satellite Systems, Inc.
%   All rights reserved.
%   Since 2024.1
%--------------------------------------------------------------------------

disp('Demo of LunarOrbitInsertion:')

muMoon = Constant('mu moon');
rMoon  = Constant('equatorial radius moon');

% First example: specify the target perigee altitude
hLunarOrbit = 200; % km

% Relative position at start
dR     = [2000;0;0]; % km
dV     = [0;3;0];    % km/s

% Spacecraft initial mass, kg
mI     = 6;

% Thruster parameters for insertion
uE     = 9.806*285; % Exhaust velocity (m/s)
thrust = 20;        % thrust (N)

% Compute the insertion delta-V and vector (ECI frame)
[deltaV, uECI, tBurn] = LunarOrbitInsertion( hLunarOrbit, dR, dV, mI, uE, thrust );
el      = RV2El(dR,dV+uECI*deltaV,muMoon);
[rP,rA] = AE2RPRA(el(1),el(5));

fprintf('\nPerigee altitude input:\n\n');

fprintf('Desired lunar perigee atitude    %8.1f km\n', hLunarOrbit);
fprintf('Resulting lunar perigee altitude %8.1f km\n', rP-rMoon);
fprintf('Resulting lunar apogee altitude  %8.1f km\n', rA-rMoon);
fprintf('Engine exhaust velocity          %8.1f m/s\n', uE);
fprintf('Initial mass                     %8.1f kg\n', mI);
fprintf('Thrust                           %8.1f N\n', thrust);
fprintf('Delta V                          %8.1f km/s\n', deltaV);
fprintf('Burn duration                    %8.1f sec\n',	tBurn);
fprintf('Position difference [%8.2f %8.2f %8.2f] km\n',	dR);
fprintf('Velocity difference [%8.2f %8.2f %8.2f] km/s\n',	dV);
fprintf('Burn vector ECI     [%8.2f %8.2f %8.2f]\n', uECI);

% Now, input target orbital elements instead (1st input)

[a,e]          = RPRA2AE(1800,2000);
el             = [a 0.01 0 0 e pi];
[deltaV, uECI] = LunarOrbitInsertion( el, dR, dV, mI, uE, thrust );
elA            = RV2El(dR,dV+uECI*deltaV,muMoon);

fprintf('\nElements input:\n\n');

fprintf('Desired Elements   %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f \n', el);
fprintf('Achieved elements  %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f \n', elA);
fprintf('Delta V        %8.1f km/s\n',     deltaV);
fprintf('Burn duration  %8.1f sec\n',	tBurn);
fprintf('Position difference [%8.2f %8.2f %8.2f] km\n',	dR);
fprintf('Velocity difference [%8.2f %8.2f %8.2f] km/s\n',	dV);
fprintf('Burn vector ECI     [%8.2f %8.2f %8.2f]\n',	uECI);

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

% $Id: 404830678c8fa9f879e5eea137dfa23922e06369 $
Demo of LunarOrbitInsertion:

Perigee altitude input:

Desired lunar perigee atitude       200.0 km
Resulting lunar perigee altitude    200.0 km
Resulting lunar apogee altitude     262.0 km
Engine exhaust velocity            2794.7 m/s
Initial mass                          6.0 kg
Thrust                               20.0 N
Delta V                               1.4 km/s
Burn duration                       346.3 sec
Position difference [ 2000.00     0.00     0.00] km
Velocity difference [    0.00     3.00     0.00] km/s
Burn vector ECI     [   -0.00    -1.00    -0.00]

Elements input:

Desired Elements   1900.000    0.010    0.000    0.000    0.053    3.142 
Achieved elements  1900.000    3.132    3.142    0.000    0.053    3.142 
Delta V             4.5 km/s
Burn duration     346.3 sec
Position difference [ 2000.00     0.00     0.00] km
Velocity difference [    0.00     3.00     0.00] km/s
Burn vector ECI     [   -0.00    -1.00    -0.00]