C+ C NAME: C interpolate_latlon.f C PURPOSE: C Interpolate the longitude of ASHI to use in a sidereal time determination C CATEGORY: C I/O C CALLING SEQUENCE: C call interpolate_latlon(JDXI,JD,alat,alon,NL,alaty,alonx) C C INPUTS: C JDXI real*8 Julian Date time to interpolate to C JD (NL) real*8 Julian dates of the tracked values where longitudes and latitudes exist C C OUTPUTS: C NL integer # valid number of tracked longitudes and latitudes recorded C alaty real interpolated tracked latitude value C alonx real interpolated tracked longitude value C C FUNCTIONS/SUBROUTINES: C C MODIFICATION HISTORY: C April-2022, Bernard Jackson (UCSD) C- subroutine interpolate_latlon(JDXI,JD,alat,alon,NL,alaty,alonx) real alat(NL), & alon(NL) real*8 JD (NL) real*8 JDXI C print*, ' Into interpolate_latlon' IX = 0 do I=1,NL-1 if(JDXI.ge.JD(I).and.JDXI.lt.JD(I+1)) then alonx = ((JDXI-JD(I))/(JD(I+1)-JD(I)))*(alon(I+1)-alon(I)) + alon(I) alaty = ((JDXI-JD(I))/(JD(I+1)-JD(I)))*(alat(I+1)-alat(I)) + alat(I) IX = I end if end do if(IX.eq.0) then C print*, 'The interpolate JDXI =',JDXI,' value is out of bounds.',JD(1),JD(NL) stop end if C write (*,'(2I5,3F15.6,6F9.4)') IX,IX+1,JD(IX),JD(IX+1),JDXI,alat(IX),alat(IX+1),alaty,alon(IX),alon(IX+1),alonx return end