$LastChangedDate: 27-Juil-2011 $

# CL_op_searchRepeatOrbits

Search for repeat orbits

## Calling Sequence

       [params]=CL_op_searchRepeatOrbits(smaMin,smaMax,QMin,QMax,ecc,sso,[incInput,[er,mu,j2,rotr_pla,rotr_pla_sun]])

## Description

- Computes all repeat (also called "phased") orbits for a given range of semi major axis and number of planet revolutions per cycle.

  An orbit is considered as "phased" if the ground tracks (with respect to the rotating planet) repeat exactly, which means that after a certain whole number of orbits, the planet must has rotated a whole number of revolutions with respect to the orbit's node.

  Let Tc be the duration of the repeat cycle. There must exist 2 integers M and Q such that:

  Tc = M * T = Q * Tr

  where T is the orbit period (more exactly the mean nodal period), and Tr is the revolution period of the planet with respect to the orbit's (ascending or descending) node (Tr is called "orbital day" in the following).

  If M is expressed as: M=N*Q+P (with P < Q), the problem comes down to determining the 3 integers N,P,Q such that:

  Tc = (N*Q+P)*T = Q * Tr (with P < Q))

  Then:

  Q (=Tc/Tr) is the number of planet revolutions per repeat cycle.

  N+P/Q (=Tr/T) is the number of orbits per planet revolutions with respect to the orbit's (ascending or descending) node.

  N*Q+P (= Tc/T) is the (whole) number of orbits per repeat cycle.

  Note that Tr depends on the orbit parameters because the node drifts under the effect of J2.

  Two orbit cases are handled:

  - Orbits with a fixed inclination (incInput). There is only one unknown (sma), which is determined using the equation: (N*Q+P)*T(sma) = Q * Tr(sma)

  - Sun-synchronous orbits: the inclination is computed in the process. There are 2 unknowns (sma and inc). Two equations are then used: (N*Q+P)*T(sma) = Q * Tr(sma), and sun-sync(sma,inc) (condition for Sun-synchronicity). For a Sun-synchronous orbit, an orbital day is the same as a usual day (86400 s).

  Also note that the computation uses the mean drifts, so that the true ground tracks may not repeat exactly if the argument of perigee drifts.

- params is a 11-column matrix with as many rows as there are solutions.

  - params(:,1): Semi major axis [m]

  - params(:,2): Eccentricity

  - params(:,3): Inclination [rad]

  - params(:,4:6): N, P, Q

  - params(:,7): Number of orbits per cycle (=N*Q+P)

  - params(:,8): (mean) Nodal period [s]

  - params(:,9): Cycle duration [days]

  - params(:,10): Longitude gap between 2 closest ascending ground tracks at the equator [rad] = 2*%pi/(N*Q+P)

  - params(:,11): Gap in longitude after one cycle modulo 2*pi [rad] (for checking purposes)

## Parameters

smaMin:

  Lower bound of semi major axis range (m) (1 x 1)

smaMax:

  Upper bound of semi major axis range (m) (1 x 1)

QMin:

  Minimum number of "orbital days" per repeat cycle (integer) (1 x 1)

QMax:

  Maximum number of "orbital days" per repeat cycle (integer) (1 x 1)

ecc :

  eccentricity (1 x 1)

sso:

  1 = search for sun-synchronous orbits, 0 = search for orbits with fixed inclination (1 x 1)

incInput :

  (mandatory if sso==0, else optional) Inclination (rad) (1 x 1)

er:

  (optional) equatorial radius [m] (default is %CL_eqRad)

mu:

  (optional) gravitational constant [m^3/s^2] (default value is %CL_mu)

j2:

  (optional) second zonal harmonic coefficient (default is %CL_j2)

rotr_pla :

  (optional) rotation rate of the planet (default is %CL_rotrEarth) (1 x 1)

rotr_pla_sun :

  (optional) mean apparent rotation rate of the Sun around the planet (default is %CL_rotrEarthSun) (1 x 1)

params :

  results (See description)

## Authors

- CNES - DCT/SB

## See also

- CL_op_repeatGroundTracks

- CL_op_repeat2smaInc

- CL_op_ssoJ2

## Examples

    smaMin = 7000.0 * 1000;
    smaMax = 7050.0 * 1000;
    QMin = 2;
    QMax = 6;
    ecc = 0.001;
    sso = 1;
    [params]=CL_op_searchRepeatOrbits(smaMin,smaMax,QMin,QMax,ecc,sso)

    sso = 0;
    incInput = CL_deg2rad(98.5);
    [params]=CL_op_searchRepeatOrbits(smaMin,smaMax,QMin,QMax,ecc,sso,incInput)