Hohmann transfer with orbit plane rotation
[deltav, dv1, dv2, alpha] = CL_man_dvHohmannRotP(ai, af, rotang [[, c_mode, alpha, mu, res="d"]]) man = CL_man_dvHohmannRotP(ai, af, rotang [[, c_mode, alpha, mu, res="s"]])
Computes the impulsive maneuvers of a transfer from an initial circular orbit with semi major axis ai to a final circular orbit with semi major axis af where the plane rotates about the axis joining the 2 maneuver locations.
The transfer is derived from a Hohmann transfer. Out-of-plane (non radial) components are added to the two DVs in order to achieve the desired plane rotation. The function can be used in two ways depending on the argument c_mode (computation mode). If c_mode = "o" (optimize, which is the default), the proportion of rotation angle between the 2 maneuvers is determined automatically in order to obtain the minimal total DV. If c_mode = "c" (compute), the proportion given by alpha is used. alpha (between 0 and 1) represents the proportion of rotation angle performed at the fist impulse. This means that if alpha is 0, the plane rotation is entirely obtained by the 2nd impulse.
The total plane rotation angle is rotang. The direct sense for the rotation is deduced from the directon of the rotation axis: from maneuver location 2 to maneuver location 1.
The output argument deltav is the sum of the norms of the velocity increments (|dv1| + |dv2|).
Velocity increments are expressed in the "qsw" frame.
If the argument res is present and is equal to "s", all the output data are returned in a structure.
The typical use is for changing the semi-major axis and the inclination of a circular orbit simultaneously. rotang is then the inclination change if the first maneuver is at the ascending node.
Semi-major axis of initial circular orbit. [m] (1xN or 1x1)
Semi-major axis of final circular orbit. [m] (1xN or 1x1)
Plane rotation angle in [-%pi, %pi]. [rad] (1xN or 1x1)
(string, optional) "o": optimize DV, "c": use alpha values. Default is "o" (1x1)
(optional) Proportion of rotation angle for the first velocity increment. Only used if c_mode = "c". Default value is 0.5 (1xN or 1x1)
(optional) Gravitational constant. Default is %CL_mu. [m^3/s^2] (1x1)
(string, optional) Type of output: "d" for multiple outputs or "s" for a single structure output. Default is "d".
Som of norms of velocity increments. [m/s] (1xN)
First velocity increment in cartesian coordinates in the "qsw" local orbital frame. [m/s]. (3xN)
Second velocity increment at opposite location in cartesian coordinates in the "qsw" local orbital frame. [m/s] (3xN)
Proportion of rotation angle actually used for the first velocity increment.
Structure containing all the output data.
CNES - DCT/SB
// Change of semi-major axis and inclination by 2 maneuvers ai = 7000.e3; af = 7100.e3; rotang = 0.01; // rad [deltav_opt, dv1, dv2, alpha_opt] = CL_man_dvHohmannRotP(ai, af, rotang); // Check results: // First maneuver at the ascending node kep0 = [ai; 0; 1; 0; 0; 0]; kep1 = CL_man_applyDvKep(kep0, dv1, dv_frame = "qsw"); // 2nd maneuver at the descending node (also the apogee) kep1(6) = CL_kp_v2M(kep1(2), %pi - kep1(4)); kep2 = CL_man_applyDvKep(kep1, dv2, dv_frame = "qsw") // Effect of inclination change ratio between the 2 maneuvers alpha = linspace(0, 1, 100); // proportion at 1st impulse deltav = CL_man_dvHohmannRotP(ai, af, rotang, c_mode="c", alpha=alpha); scf(); plot(alpha, deltav); plot(alpha_opt, deltav_opt, "o"); | ![]() | ![]() |