C+ C NAME: C LOSPosition C PURPOSE: C Calculates heliographic coordinates for all NLOS line of sight segments (of length dLOS) C for a collection of NL lines of sight. C CATEGORY: C Data processing C CALLING SEQUENCE: subroutine LOSPosition(I__VD,IYRS,DOYS,DIST,XLS,XCE,XLL,XDL,PPlos,VPlos) C INPUTS: C I__VD integer TOM__V (IPS velocities) or TOM__G (g-levels) C IYRS(NL) integer Year of observation C DOYS(NL) real Day of year (and fraction) of observation C DIST(NL) real Sun-Earth distance (AU) C XLS (NL) real Geocentric ecliptic longitude of Sun (deg) C XCE (NL) real Carrington variable of sub-Earth point C XLL (NL) real Geocentric ecliptic longitude difference lng(los)-lng(Sun) (deg) C XDL (NL) real Geocentric ecliptic latitude of los (deg) C OUTPUTS: C PPlos(4,NLOS,NL)real Lng/lat/rad/time of point on LOS C time = XCE with a negative correction for the light travel time from C point on LOS to observer C VPlos(NLOS,NL) real sin(Chi)=Vperp/Vrad (used for velocity IPS to calculate C the perpendicular velocity component from the (radial) velocity C CALLS: C T3D_iget, T3D_get, POINT_ON_LOS, ECLIPTIC_HELIOGRAPHIC, XMAP_OBS_POS C INCLUDE: include 'phys.h' include 'sun.h' include 't3d_param.h' include 't3d_array.h' include 't3d_index.h' C include 't3d_loc_fnc.h' C PROCEDURE: C > XClos is on the same scale as XCE. C > The output coordenates refer to the center of the segments C > Note that no attempt is made to keep the heliographic coordinates inside a fixed C range. This is taken care of in href=LOSProjection=. C MODIFICATION HISTORY: C FEB-1999, P. Hick (UCSD/CASS), split original in two functions: LOSPosition and LOSProjection C JUL-2001, P. Hick (UCSD/CASS; pphick@ucsd.edu), added TTlos argument C- integer I__VD integer IYRS (*) ! Year of source observation real DOYS (*) ! Day of year (and fraction) of source obs. real DIST (*) ! Distance of Sun to Earth real XLS (*) ! Ecliptic longitude of Sun real XCE (*) ! Carrington variable of Earth real XLL (*) ! Longitude diff. relative to Earth-Sun real XDL (*) ! Declination of Source real PPlos(*) ! Lng/lat/rad/time of point on los real VPlos(*) include 't3d_loc_fnc.h' if (I__VD .eq. TOM__V) call T3D_iget(T3D__NL_V,0,NL) if (I__VD .eq. TOM__G) call T3D_iget(T3D__NL_G,0,NL) call T3D_iget(T3D__NLOS_V,0,NLOS) call T3D_get (T3D__DLOS_V,0,dLOS) dTC = SUN__AU/(PHYS__c*SUN__SYNODICP*86.4)! Light travel time per AU (fraction of rotation) do I=1,NL ! Loop over all lines of sight iYr = IYRS(I) Doy = DOYS(I) ObsR = DIST(I) ! Heliocentric distance observer ObsLng = XLS(I)-180.0 ! Heliocentric ecliptic longitude Earth ObsXC = XCE(I) ! Modified Carrington variable Earth do J=1,NLOS ! Loop over all segments along los ! Define point P along los: P1 = XLL(I) ! Topocentric ecliptic longitude diff. with Earth-Sun line P2 = XDL(I) ! Topocentric ecliptic latitude P3 = (J-.5)*dLOS ! Distance along los to center of segment (units of ObsR) P4 = P3*ObsR*dTC ! Light travel time from P to observer (fraction of rotation) call POINT_ON_LOS(P1,P2,P3,ELO,ELOS,iEorW) ! Convert to heliocentric coordinates VPlos( locLOS(J,I) ) = sind(ELO)/P3 P3 = P3*ObsR ! Convert to AU P1 = ObsLng+P1 ! Heliocentric longitude of P call ECLIPTIC_HELIOGRAPHIC(0,iYr,Doy,P1,P2) ! Convert to heliographic coordinates P1 = XMAP_OBS_POS(ObsXC,P1) ! Modified Carrington variable of P L = locPOS(0,J,I) PPlos(L+LOS__XC) = P1 !-P4 ! Modified Carrington variable of P PPlos(L+LOS__XL) = P2 ! Heliographic latitude of P PPlos(L+LOS__RR) = P3 ! Heliocentric distance of P (AU) PPlos(L+LOS__TT) = ObsXC-P4 ! Time of observation corrected for light travel time end do end do return end