64 lines
1.5 KiB
Fortran
64 lines
1.5 KiB
Fortran
!c****************************************************************
|
|
|
|
subroutine enubasis(r_lat,r_lon,r_enumat)BIND(C, NAME='enubasis_C')
|
|
|
|
!c****************************************************************
|
|
!c**
|
|
!c** FILE NAME: enubasis.f
|
|
!c**
|
|
!c** DATE WRITTEN: 7/22/93
|
|
!c**
|
|
!c** PROGRAMMER:Scott Hensley
|
|
!c**
|
|
!c** FUNCTIONAL DESCRIPTION:Takes a lat and lon and returns a
|
|
!c** change of basis matrix from ENU to geocentric coordinates.
|
|
!c**
|
|
!c** ROUTINES CALLED:none
|
|
!c**
|
|
!c** NOTES: none
|
|
!c**
|
|
!c** UPDATE LOG:
|
|
!c****************************************************************
|
|
|
|
use, intrinsic :: iso_c_binding
|
|
implicit none
|
|
|
|
!c INPUT VARIABLES:
|
|
real(C_DOUBLE), value :: r_lat !latitude (deg)
|
|
real(C_DOUBLE), value :: r_lon !longitude (deg)
|
|
|
|
!c OUTPUT VARIABLES:
|
|
real(C_DOUBLE), dimension(3,3) :: r_enumat
|
|
|
|
!c LOCAL VARIABLES:
|
|
real*8 r_slt,r_clt,r_clo,r_slo
|
|
|
|
|
|
!c PROCESSING STEPS:
|
|
|
|
r_clt = cos(r_lat)
|
|
r_slt = sin(r_lat)
|
|
r_clo = cos(r_lon)
|
|
r_slo = sin(r_lon)
|
|
|
|
!c North vector
|
|
|
|
r_enumat(1,2) = -r_slt*r_clo
|
|
r_enumat(2,2) = -r_slt*r_slo
|
|
r_enumat(3,2) = r_clt
|
|
|
|
!c East vector
|
|
|
|
r_enumat(1,1) = -r_slo
|
|
r_enumat(2,1) = r_clo
|
|
r_enumat(3,1) = 0.d0
|
|
|
|
!c Up vector
|
|
|
|
r_enumat(1,3) = r_clt*r_clo
|
|
r_enumat(2,3) = r_clt*r_slo
|
|
r_enumat(3,3) = r_slt
|
|
|
|
end subroutine enubasis
|
|
|