lambert_module Module

This module contains the Izzo and Gooding algorithms for solving Lambert's problem.


Uses

  • module~~lambert_module~~UsesGraph module~lambert_module lambert_module module~kind_module kind_module module~lambert_module->module~kind_module module~numbers_module numbers_module module~lambert_module->module~numbers_module module~vector_module vector_module module~lambert_module->module~vector_module iso_fortran_env iso_fortran_env module~kind_module->iso_fortran_env module~numbers_module->module~kind_module module~vector_module->module~kind_module module~vector_module->module~numbers_module

Used by

  • module~~lambert_module~~UsedByGraph module~lambert_module lambert_module module~fortran_astrodynamics_toolkit fortran_astrodynamics_toolkit module~fortran_astrodynamics_toolkit->module~lambert_module

Variables

Type Visibility Attributes Name Initial
real(kind=wp), private, parameter :: log2 = log(two)
real(kind=wp), private, parameter :: two_third = two/three
real(kind=wp), private, parameter :: four_third = four/three
real(kind=wp), private, parameter :: five_half = five/two
real(kind=wp), private, parameter :: three_half = three/two

Abstract Interfaces

abstract interface

  • private function func(t) result(f)

    interface to the zeroin input function

    Arguments

    Type IntentOptional Attributes Name
    real(kind=wp), intent(in) :: t

    Independant variable for the function.

    Return Value real(kind=wp)

    The function evaluated at t.


Subroutines

public subroutine solve_lambert_izzo(r1, r2, tof, mu, long_way, multi_revs, v1, v2, status_ok)

Solve Lambert's problem using Izzo's method.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in), dimension(3) :: r1

first cartesian position [km]

real(kind=wp), intent(in), dimension(3) :: r2

second cartesian position [km]

real(kind=wp), intent(in) :: tof

time of flight [sec]

real(kind=wp), intent(in) :: mu

gravity parameter [km^3/s^2]

logical, intent(in) :: long_way

when true, do "long way" (>pi) transfers

integer, intent(in) :: multi_revs

maximum number of multi-rev solutions to compute

real(kind=wp), intent(out), dimension(:,:), allocatable :: v1

vector containing 3d arrays with the cartesian components of the velocities at r1

real(kind=wp), intent(out), dimension(:,:), allocatable :: v2

vector containing 3d arrays with the cartesian components of the velocities at r2

logical, intent(out) :: status_ok

true if everything is OK

public subroutine solve_lambert_gooding(r1, r2, tof, mu, long_way, multi_revs, v1, v2, status_ok)

Solve Lambert's problem using Gooding's method.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in), dimension(3) :: r1

first cartesian position [km]

real(kind=wp), intent(in), dimension(3) :: r2

second cartesian position [km]

real(kind=wp), intent(in) :: tof

time of flight [sec]

real(kind=wp), intent(in) :: mu

gravity parameter [km^3/s^2]

logical, intent(in) :: long_way

when true, do "long way" (>pi) transfers

integer, intent(in) :: multi_revs

maximum number of multi-rev solutions to compute

real(kind=wp), intent(out), dimension(:,:), allocatable :: v1

vector containing 3d arrays with the cartesian components of the velocities at r1

real(kind=wp), intent(out), dimension(:,:), allocatable :: v2

vector containing 3d arrays with the cartesian components of the velocities at r2

logical, intent(out) :: status_ok

true if everything is OK

public subroutine solve_lambert_arorarussell(r1, r2, tofin, mu, lu, nrev, long_way, shortperiod, tolerance, max_iterations, v1, v2)

Solve Lambert's problem using the Arora/Russell method.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in), dimension(3) :: r1
real(kind=wp), intent(in), dimension(3) :: r2
real(kind=wp), intent(in) :: tofin
real(kind=wp), intent(in) :: mu
real(kind=wp), intent(in) :: lu

scale factor in km

integer, intent(in) :: nrev
logical, intent(in) :: long_way
logical, intent(in) :: shortperiod
real(kind=wp), intent(in) :: tolerance
integer, intent(in) :: max_iterations
real(kind=wp), intent(out), dimension(3) :: v1
real(kind=wp), intent(out), dimension(3) :: v2

public subroutine lambert_test()

Author
Jacob Williams

Compare the Lambert routines.

Arguments

None