ImpulsiveManeuver:

--------------------------------------------------------------------------
   Computes a delta-v sequence for a relative orbit maneuver in a circular orbit 

   A constant thrust is assumed when converting delta-v to burn duration.
   Algorithms do not account for gravitational perturbations or disturbances.
   A circular reference orbit is assumed.
   The delta-v sequence is determined from a closed-form solution, derived from
     Gauss' variational equations.

   Since version 7.
--------------------------------------------------------------------------

   ------
   Inputs
   ------
   state         (.)  Data structure of the orbit state with following fields
                      - el           Measured mean orbital elements of reference [a,i,W,w,e,M]
                      - elA          Alfriend format of elements                 [a,lat,i,q1,q2,W]
                      - xH           Measured Hills-frame state: [x;y;z;xdot;ydot;zdot]
                      - mass         Spacecraft mass             [kg]
                      - tM           Timetag of measurement      [sec]

   goals         (.)  Data structure of geometric goal information.
                        Describes the desired trajectory.

   window        (.)  Data structure of commanded time window with following fields
                      - startTime       Earliest possible start time                    [sec since 1970]
                      - nOrbMin         Minimum number of orbits maneuver may last      [orbits]
                      - nOrbMax         Maximum number of orbits maneuver may last      [orbits]
                      - nManeuvers      Number of maneuvers to search over
                      - timeWeightExp   Time-weighting exponent (greater than 0)

   parameters    (.)  Data structure of planning parameters with following fields
                      - fNom         Nominal Thruster force                             [kN]
                      - dTMax        Maximum allowable burn duration                    [sec]
                      - horizon      Minimum time between planning and first burn       [sec]
                      - tDelayOOP    Minimum time between final IP burn and OOP burn    [sec]
                      - nSPOCoarse   Number of samples per orbit for LP (coarse computation)
                      - nSPOFine     Number of samples per orbit for LP (fine computation)

   -------
   Outputs
   -------
   maneuver          (.)  Maneuver data structure with following fields
                          - t0           Earliest burn start time
                          - tF           Latest burn finish time
                          - nBurns       Number of burns required
                          + burnData[]   Array of burn data structures with following fields
                             - t   Burn start time   [sec since 1970]
                             - dT  Burn duration     [sec]
                             - dV  Delta-V           [km/s]
                             - uX  unit x Hills direction 
                             - uY  unit y Hills direction
                             - uZ  unit z Hills direction

   maxDV             (1)  The maximum delta-v of the sequence
   
--------------------------------------------------------------------------

Children:

FormationFlying: Control/InPlane
FormationFlying: Control/OutOfPlane
FormationFlying: Coord/InitializeFormation
FormationFlying: DataStructures/Maneuver_Structure
FormationFlying: Dynamics/DiscreteHills
FormationFlying: Dynamics/HillsEqns
FormationFlying: Guidance/PCGoals
FormationFlying: Transformation/Goals2DeltaElem
FormationFlying: Transformation/Hills2DeltaElem
FormationFlying: Utility/ManeuverStruct2AccelVector
FormationFlying: Utility/NOrbVector
FormationFlying: Visual/HillsFramePlot
Math: Linear/Mag
Orbit: OrbitCoord/Alfriend2El
Orbit: OrbitCoord/El2Alfriend
Orbit: OrbitCoord/SLR
OrbitMiniToolbox: Support/El2RV
SC: BasicOrbit/OrbRate