C+ C NAME: C iReadOotyn C CALLING SEQUENCE: function iReadOotyn(iU,iFirst) C CALLS: C DATE_DOY, XMAP_SC_POS, SunNewcomb, ECLIPTIC_EQUATOR, POINT_ON_LOS, ECLIPTIC_HELIOGRAPHIC C INCLUDE: include 'sun.h' C EXTERNAL: external EARTH C PROCEDURE: C > Structure of Ooty files: C iY,iM,iD integer year, month and day of observation C IST integer time of observation in IST - hr and min C (the longitude difference between C Greenwich and the IST longitude is 82.5 C deg corresponding to 5.5 hrs time difference. C UT real universal time (should be IST-5.5) C cSrce string descriptor for radio source C iRA50(3) integer 1950 Right Ascension (h,m,s) C iDEC50(3) integer 1950 declination (deg,m,s) C iRA(3) integer Right Ascension at equinox of date C iDEC(3) integer declination at equinox of date C ELO real source elongation (deg) C SIZE real angular size of the compact component C of the source (seconds of arc) C iVEL integer IPS velocity (km/s) C AR real axial ratio of the solar wind density C irregularities C SN real signal to noise ratio of the spectrum C SCINDX real scintillation index C GVAL real disturbance factor C C From an email by Janardhan Padmanabhan: C C I have selected only those sources in this list with elongations C greater than or equal to 10 deg (the turnover in the m vs epsilon C curve at 327 MHz is around 10 deg) and signal to noise greater than or C equal to 10db. However, please note that source sizes derived for C sources with S/N less than 15 db will have larger errors. Therefore C if source sizes are an important input in your program, then use C only data with S/N greater than or equal to 15 db. C C For 8 observations in the file I was unable to extract the scintillation C indices. 7 of these are the august observations. I marked these in the C list with a "N/A" (not available) in the last column. C- integer iU integer iFirst double precision JDCar(nCar) character cMon*3 character cSrce*8 character cSrc*8 double precision dLngSun double precision dLatSun double precision dDisSun integer iRA50 (3) integer iRA (3) integer iDEC50(3) integer iDEC (3) save iY,iMO,iD,iH,iMI,UT,cSrce,iRA50,iDEC50,iRA, & iDEC,ELO,SIZE,iVEL,SN,SCINDX,GVAL,iRec iU = iU read (iU,'(2X,3I2,2X,2I2,F8.3,2X,A8,1X,2(1X,6I3),F7.2,F7.3,I6,F6.1,2F7.3)', & iostat=iReadOotyn) iY,iMO,iD,iH,iMI,UT,cSrce,iRA50,iDEC50,iRA, & iDEC,ELO,SIZE,iVEL,SN,SCINDX,GVAL if (iY .lt. 50) iY = iY+100 ! Y2K fix iRec = (1-iFirst)*iRec+1 ! iFirst=1 initializes record counter return C+ C NAME: C iProcessOotyn C PURPOSE: C Used as external function in 1st argument of ReadVIPS C CALLING SEQUENCE: entry iProcessOotyn(iR,nCar,JDCar,NCoff,XCend,Radius, & cSrc,nYr,Doy,XCsc,XCobs,xLat,xVV,xGG,dRA, & rLngSun,rDisSun,rLngP,rLatP,rEloP) C INPUTS: C See documentation for href=ReadVIPS=. C OUTPUTS: C See documentation for href=ReadVIPS=. C SEE ALSO: C iReadOoty C PROCEDURE: C Entry point in iReadOoty C MODIFICATION HISTORY: C ???-????, Paul Hick (UCSD/CASS; pphick@ucsd.edu) C- if (iVEL .eq. 0) then ! No velocity available: reject iProcessOotyn = 0 ! (never happens?) return end if cSrc = cSrce nYr = 1900+iY cMon = ' ' ! Make sure iMO is used call DATE_DOY(0,nYr,cMon,iMO,iD,iDoy) Doy = iDoy+UT/24.0 XCsc = XMAP_SC_POS(EARTH,nYr,Doy,-nCar,JDCar) if (XCsc .eq. BadR4()) then ! Time outside JDCar range iProcessOotyn = 0 return end if ! Sub-Earth position if (XCsc .gt. XCend) then ! Sub-Earth past XCend iProcessOotyn = 2 return end if iR = iRec call SunNewcomb(0,nYr,Doy,dLngSun,dLatSun,dDisSun) ! Geocentric eclip. coord(Sun) rDisSun = dDisSun rLngSun = dLngSun ! Geocentric eclip. lng(Sun) rLng = dLngSun rLat = dLatSun ! Geocentric eclip. lat(Sun) call ECLIPTIC_EQUATOR(0,nYr,Doy,rLng,rLat) dRA = rLng ! RA (Sun) rLng = (iRA(1)+(iRA(2)+iRA(3)/60.0)/60.0)*15.0 ! RA (P) (deg) rLat = iDEC(1)+(iDEC(2)+iDEC(3)/60.0)/60.0 ! Decl (P) dRA = rLng-dRA ! RA(P)-RA(Sun) if (abs(dRA) .gt. 180.0) dRA = dRA-sign(1.0,dRA)*360.0 call ECLIPTIC_EQUATOR(1,nYr,Doy,rLng,rLat) ! Geocentric eclip. coord(P) rLng = rLng-rLngSun rLngP = rLng ! Geocentric ecliptic lng(P)-lng(Sun) rLatP = rLat ! Geocentric ecliptic lat(P) rP = max(0.25, cosd(rLng)*cosd(rLat) ) ! Geocentric distance P (at least 0.25 AU) call POINT_ON_LOS(rLng,rLat,rP,rEloP,EloSun,i) ! Heliocentric coord(P) rel. Sun rP = rP*dDisSun ! Dist. Sun-P (AU) rEloP = i*rEloP ! rEloP>0 : East of Sun ! <0 : West of Sun rLng = rLngSun+180.0+rLng ! Heliocentric eclip. lng(P) call ECLIPTIC_HELIOGRAPHIC(0,nYr,Doy,rLng,rLat) ! Heliographic coord(P) xLat = rLat ! Heliographic lat(P) XCobs = XMAP_OBS_POS(XCsc,rLng) ! Point-P at rP XCobs = XCobs+(Radius-rP)/iVEL*SUN__SPIRAL ! Point-P traced to Radius xVV = iVEL ! IPS velocity xGG = GVAL iProcessOotyn = 1 return end