true_anomaly Function

private pure function true_anomaly(rv) result(tru)

Compute true anomaly [0, 360] deg.

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(6):: rv

[position,velocity] vector

Return Value real(kind=wp)

true anomaly (deg)


Calls

proc~~true_anomaly~~CallsGraph proc~true_anomaly true_anomaly rv_to_orbital_elements rv_to_orbital_elements proc~true_anomaly->rv_to_orbital_elements

Called by

proc~~true_anomaly~~CalledByGraph proc~true_anomaly true_anomaly proc~altitude_maintenance altitude_maintenance proc~altitude_maintenance->proc~true_anomaly

Contents

Source Code


Source Code

    pure function true_anomaly(rv) result(tru)

    implicit none

    real(wp),dimension(6),intent(in) :: rv !! [position,velocity] vector
    real(wp) :: tru !! true anomaly (deg)

    real(wp),dimension(3) :: r !! position vector
    real(wp),dimension(3) :: v !! velocity vector
    real(wp) :: p,ecc,inc,raan,aop !! orbital elements

    r = rv(1:3)
    v = rv(4:6)

    call rv_to_orbital_elements(body_moon%mu,r,v,p,ecc,inc,raan,aop,tru)

    tru = tru*rad2deg ! convert to deg
    if (tru<zero) tru = tru + 360.0_wp ! wrap from 0 to 369

    end function true_anomaly