[Previous]
[Next]
NAME:
e1_hos
PURPOSE:
Define data structures for Helios plasma experiment E1
OUTPUTS:
L_OUT integer*4 (defined in data statement)
Maximum record length (in 4 byte words) allowed for the
universal files. This number must be large enough to contain
the data structure HDM1 (the largest of the four structures).
CSEQ(2) character*1 (defined in character statement)
CSEQ(1) = 'A' is used to identify the parameter structure GEN
CSEQ(2) = 'B' is used to identify the raw data structures
CALLING SEQUENCE:
include 'e1_hos.h'
COMMON BLOCKS:
common /ALL/ GEN
common /ALL0/ NDM
common /ALL1/ HDM1
common /ALL2/ HDM2
PROCEDURE:
Structure GEN is updated by:
CLR_GEN clears all entries
MK_GEN fills the structure with data read from 1 dim. parameter tape
FAKE_GEN fills the structure with data read from Sorted Data tape
MK_NDM only GEN.I2A_B and GEN.AzShift entries
MK_HDM1 only GEN.AzShift entry
MK_HDM2 only GEN.AzShift entry
Structure NDM is updated by: MK_NDM
Structure HDM1 is updated by: MK_HDM1
Structure HDM2 is updated by: MK_HDM2
MODIFICATION HISTORY:
FEB/MAR-1992, Rainer Schwenn (MPAE)/Paul Hick (UCSD)
[Previous]
[Next]
NAME:
e1_raw
CATEGORY
Data analysis of Helios E1 (plasma) experiment
PROCEDURE:
Common block used to extract spectral data from subroutine HOSINP
[Previous]
[Next]
NAME:
e9_hos
PURPOSE:
Defines data structures to handle Helios photometer data
INCLUDED BY:
TheFit
RESTRICTIONS:
Many of the binary Helios file were created on an old VMS VAX, which
did not automatically align structures. However, most Fortran compilers
will align structures by default. This default behavior must be suppressed
when this include files is used. An additional problem that g77 on Linux
does not support structures.
There are functions available to read/write Helios photometer data that do
not need these structures (Fortran=HOSRead=, Fortran=HOSWrite=), and will
work on VMS, Windows and Linux. These are now the preferred way to read/write
photometer data.
PROCEDURE:
[Previous]
[Next]
NAME:
EARTH
PURPOSE:
Returns the heliographic or ecliptic longitude (in degrees) of the
sub-Earth point
CATEGORY:
Celestial mechanics
CALLING SEQUENCE:
function EARTH(iYrIn,Doy)
INPUTS:
iYr integer year
(if iYr<0 then the ecliptic longitude is returned)
Doy real day of year, including fraction for time of day
OUTPUTS:
EARTH real heliographic longitude (degrees, 0<=EARTH<360)
CALLS: ***
ECLIPTIC_HELIOGRAPHIC, SunNewcomb
CALLED BY:
AdjustJDCar, MAP_CarrTime, N_CARRINGTON, ReadG, SetGrid, Write3D_bb_UT
iProcessNagoya, iProcessNagoyan, iProcessOoty, iProcessOotyn, iProcessUCSD
iReadNagoya, iReadNagoyan, iReadOoty, iReadOotyn, iReadUCSD, ipsd, ipsdt
shift_MOD [1], shift_MOD [2], surf_MOD
SEE ALSO:
XMAP_SC_POS
EXTERNAL BY:
AdjustJDCar, BList_NSO_NOAA, BList_WSO, BList_WSO_NOAA, JD_SYNC, MAP_CarrTime
N_CARRINGTON, ReadG, SetGrid, Write3D_bb_UT, iReadNagoya, iReadNagoyan, iReadOoty
iReadOotyn, iReadUCSD, ipsd
PROCEDURE:
Typically used as external function to e.g. XMAP_SC_POS
MODIFICATION HISTORY:
JAN-1991, Paul Hick (UCSD/CASS)
JUL-1993, Paul Hick (UCSD/CASS; pphick@ucsd.edu), added option to return ecliptic longitude
[Previous]
[Next]
NAME:
EARTH8
PURPOSE:
Returns the heliographic or ecliptic longitude (in degrees) of the
sub-Earth point
CATEGORY:
Celestial mechanics
CALLING SEQUENCE:
function EARTH8(iYrIn,Doy8)
INPUTS:
iYr integer year
(if iYr<0 then the ecliptic longitude is returned)
Doy8 double precision day of year, including fraction for time of day
OUTPUTS:
EARTH real heliographic longitude (degrees, 0<=EARTH<360)
CALLS: ***
ECLIPTIC_HELIOGRAPHIC8, SunNewcomb8
CALLED BY:
MkTimes, write3D_infotd3D
SEE ALSO:
XMAP_SC_POS
EXTERNAL BY:
MkTimes
PROCEDURE:
Typically used as external function to e.g. XMAP_SC_POS
MODIFICATION HISTORY:
JAN-1991, Paul Hick (UCSD/CASS)
JUL-1993, Paul Hick (UCSD/CASS; pphick@ucsd.edu), added option to return ecliptic longitude
[Previous]
[Next]
NAME:
EARTH_ELIMB
PURPOSE:
Returns the heliographic or ecliptic longitude (in degrees) of the
solar east limb
CALLING SEQUENCE:
function EARTH_ELIMB(iYrIn,Doy)
INPUTS:
iYr integer year
(if iYr<0 then the ecliptic longitude is returned)
Doy real day of year, including fraction for time of day
OUTPUTS:
EARTH_ELIMB real heliographic longitude of east limb (degrees, 0<=EARTH<360)
CALLS: ***
ECLIPTIC_HELIOGRAPHIC, SunNewcomb
SEE ALSO:
XMAP_SC_POS
PROCEDURE:
Typically used as external function to e.g. XMAP_SC_POS
MODIFICATION HISTORY:
???-????, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
EARTH_WLIMB
PURPOSE:
Returns the heliographic or ecliptic longitude (in degrees) of the
solar west limb
CALLING SEQUENCE:
function EARTH_WLIMB(iYrIn,Doy)
INPUTS:
iYr integer year
(if iYr<0 then the ecliptic longitude is returned)
Doy real day of year, including fraction for time of day
OUTPUTS:
EARTH_WLIMB real heliographic longitude of east limb (degrees, 0<=EARTH<360)
CALLS: ***
ECLIPTIC_HELIOGRAPHIC, SunNewcomb
SEE ALSO:
XMAP_SC_POS
PROCEDURE:
Typically used as external function to e.g. XMAP_SC_POS
MODIFICATION HISTORY:
???-????, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
ECLIPTIC_EQUATOR
PURPOSE:
Converts ecliptic coordinates into equatorial coordinates or v.v.
CATEGORY:
Math: coordinate transformation
CALLING SEQUENCE:
subroutine ECLIPTIC_EQUATOR(ID,iYr,Doy,PHI,RLAT)
CALLS: ***
Julian, rotate
INPUTS:
ID integer ID=0: ecliptic ---> equatorial
ID=1: equatorial ---> ecliptic
iYr integer year of current date
Doy real day of year, including a fraction for the time of day
PHI real ecliptic longitude for equinox of current date
RLAT real ecliptic latitude for equinox of current date
OUTPUTS:
PHI real right ascension
RLAT real declination
CALLED BY:
Pandora, ReadG, iProcessNagoya, iProcessNagoyan, iProcessOoty, iProcessOotyn
iProcessUCSD, iReadNagoya, iReadNagoyan, iReadOoty, iReadOotyn, iReadUCSD
PROCEDURE:
See O. Montenbruck, Practical Ephemeris Calculations, p. 11
If ID not equal 0 or 1 then ID = 0 is assumed.
MODIFICATION HISTORY:
Paul Hick (MPAE,UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
ECLIPTIC_HELIOGRAPHIC
PURPOSE:
Converts ecliptic coordinates into heliographic coordinates or v.v.
CATEGORY:
Math: coordinate transformation
CALLING SEQUENCE:
subroutine ECLIPTIC_HELIOGRAPHIC(ID,iYr,Doy,PHI,RLAT)
INPUTS:
ID integer ID=0: ecliptic ---> heliographic
ID=1: heliographic ---> ecliptic
iYr integer year of current date
Doy real day of year, including a fraction for the time of day
INPUTS/OUTPUTS:
PHI real ecliptic longitude for equinox of current date/
heliographic longitude
RLAT real ecliptic latitude for equinox of current date/
heliographic latitude
CALLED BY:
BList_NSO_NOAA, BList_WSO_NOAA, EARTH, EARTH_ELIMB, EARTH_WLIMB, ExtractPosition
HELIOS_1, HELIOS_2, JD_SYNC, LOSPosition, MkPos, Pandora, READ_HOS, ReadG, SUN_L0B0
bLOSCheckLoc, iProcessOoty, iProcessOotyn, iProcessUCSD, iReadOoty, iReadOotyn
iReadUCSD, ipsd, ipsdt
INCLUDE:
include 'sun.h'
CALLS: ***
Julian, rotate
SIDE EFFECTS:
ALFA -90 deg. plus ecliptic longitude of ascending node of solar
equator on ecliptic
BETA inclination of solar equator with respect to ecliptic
GAMMA 90 deg. plus angle from ascending node to heliographic prime
meridian
PROCEDURE:
See R. Green, Spherical Astronomy, Cambridge UP, 1985, Section 17.7,
p. 430.
MODIFICATION HISTORY:
Paul Hick (MPAE,UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
ECLIPTIC_HELIOGRAPHIC8
PURPOSE:
Converts ecliptic coordinates into heliographic coordinates or v.v.
CATEGORY:
Math: coordinate transformation
CALLING SEQUENCE:
subroutine ECLIPTIC_HELIOGRAPHIC8(ID,iYr,Doy8,PHI,RLAT)
INPUTS:
ID integer ID=0: ecliptic ---> heliographic
ID=1: heliographic ---> ecliptic
iYr integer year of current date
Doy8 double precision day of year, including a fraction for the time of day
INPUTS/OUTPUTS:
PHI real ecliptic longitude for equinox of current date/
heliographic longitude
RLAT real ecliptic latitude for equinox of current date/
heliographic latitude
CALLED BY:
EARTH8, ExtractPositionn8, MkPostd
INCLUDE:
include 'sun.h'
CALLS: ***
Julian8, rotate
SIDE EFFECTS:
ALFA -90 deg. plus ecliptic longitude of ascending node of solar
equator on ecliptic
BETA inclination of solar equator with respect to ecliptic
GAMMA 90 deg. plus angle from ascending node to heliographic prime
meridian
PROCEDURE:
See R. Green, Spherical Astronomy, Cambridge UP, 1985, Section 17.7,
p. 430.
MODIFICATION HISTORY:
Paul Hick (MPAE,UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
ElSunDistance
PURPOSE:
Calulates Electron-Sun distance and angle Sun-Electron-Observer
CALLING SEQUENCE:
function ElSunDistance(ScSun,ScEl,Elo, SinChi)
INPUTS:
ScSun real Observer-Sun distance
ScEl real Observer-Electron distance
Elo real elongation of line of sight (deg), i.e. angle between
observer-Sun and observer-electron directions
(Elo = 0 is the direction observer-Sun)
OUTPUTS:
ElSunDistance
real Sun-Electron distance (same units as ScSun and ScEl)
SinChi real Sine of angle Sun-Electron-Observer
CALLS: ***
cosd, sind
CALLED BY:
LOSWeights, ThomsonLOS3DStep, ThomsonLOSStep, ThomsonSetupIntegrand, ThomsonTang
ThomsonTang3D, ThomsonTangMRad, ThomsonTangMRad3D
PROCEDURE:
Cosine and sine rule in triangle with Sun, Observer and Electron on
the corners.
MODIFICATION HISTORY:
SEP-1996, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
EqKepler
PURPOSE:
Kepler's equation is used in the determination of orbital positions.
It gives the relation between mean and eccentric anomaly (for given
orbit eccentricity).
CATEGORY:
Celestial mechanics
CALLING SEQUENCE:
function EqKepler(E)
INPUTS:
E real eccentric anomaly (degrees)
M real mean anomaly (degrees)
ee real orbit ellipticity (eccentricity)
OUTPUTS:
EqKepler real fnc value
CALLS: ***
sind
CALLED BY:
KeplerOrbit
EXTERNAL BY:
KeplerOrbit
INCLUDE:
include 'math.h'
COMMON BLOCKS:
real M
real ee
common /KEPLER/ M,ee
PROCEDURE:
The eccentric anomaly is the root of Kepler's equation:
EqKepler = X-(180/PI)*ee*sin(X)-M = 0
See O. Montenbruck, "Practical Ephemeris Calculations", Springer
(1989), par. 3.1.1.4, p. 44
MODIFICATION HISTORY:
1990, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
EqKeplerd
PURPOSE:
Kepler's equation is used in the determination of orbital positions.
It gives the relation between mean and eccentric anomaly (for given
orbit eccentricity).
CATEGORY:
Celestial mechanics
CALLING SEQUENCE:
function EqKeplerd(E)
INPUTS:
E double precision eccentric anomaly (degrees)
M double precision mean anomaly (degrees)
ee double precision orbit ellipticity (eccentricity)
OUTPUTS:
EqKepler double precision fnc value
CALLED BY:
Time2KeplerOrbit
EXTERNAL BY:
Time2KeplerOrbit
INCLUDE:
include 'math.h'
CALLS: ***
dsind
EXPLICIT:
double precision ee
double precision M
COMMON BLOCKS:
common /KEPLERD/ M,ee
PROCEDURE:
The eccentric anomaly is the root of Kepler's equation:
EqKepler = X-(180/PI)*ee*sin(X)-M = 0
See O. Montenbruck, "Practical Ephemeris Calculations", Springer
(1989), par. 3.1.1.4, p. 44
MODIFICATION HISTORY:
JAN-2004, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
ExpandSW
PURPOSE:
CATEGORY:
CALLING SEQUENCE:
program ExpandSW
INPUTS:
OUTPUTS:
CALLS: ***
ArrR4GetMinMax, AskChar, BadR4, EXTRACTMAPS, Say, Str2Flt, Str2Flt_Exp, WR2DARR
bOpenFile, fncWZ, iFltArr, iFreeLun
SEE ALSO:
EXTERNAL:
external fncWZ
INCLUDE:
include 'openfile.h'
PROCEDURE:
MODIFICATION HISTORY:
???-????, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
Extractd
PURPOSE:
Extracts interpolated velocity and density IPS deconvolved maps at
a given time and position.
CALLING SEQUENCE:
call Extractd(bExtract,RR,dRR,XCbe,XCtbeg,XCtend,nLng,nLat,nMap,nT,FALLOFF,
& VV,DD,XCshift,DVfact,DDfact,NCoff,XCstrt,nCar,JDCar)
INPUTS:
bExtract(12) logical .TRUE.: extract; .FALSE.: do not extract
1<=ITP<=9 Planets (1=Mercury, 2=Venus, 3=Earth, etc.)
10=Ulysses, 11=Helios 1; 12=Helios 2
RR real height of deconvolution
dRR real distance between heights
XCbe(2,nT) real start and ending Carrington variable of arrays
XCtbeg double precision beginning time of observations
XCtend double precision ending time of observations
nLng integer # longitudes
nLat integer # latitudes
nMap integer # heights
nT integer # times
FALLOFF real Density falloff with solar distance
VV(nLng,nLat,nT)real velocity map at height RR
DD(nLng,nLat,nT)real density map at height RR
XCshift(nLng,nLat,nMap,nT,3) real shift amount from array
DVfact(nLng,nLat,nMap,nT) real velocity difference at height
DDfact(nLng,nLat,nMap,nT) real density difference at height
NCoff integer
XCstrt real Start rotation value
nCar integer # Carrington rotations
JDCar double precision Julian Date at beginning of rotations
OUTPUTS:
CALLS: ***
BadR4, ExtractPositionn8, Get3DTval, Get4Dval, Julian8, Say, XMAP_OBS_POS, bGetLun
cTime2System, iFreeLun, itrim
CALLED BY:
ipsdt
[Previous]
[Next]
NAME:
Extractd3d
PURPOSE:
Extracts interpolated velocity and density IPS deconvolved maps at
a given time and position. This is the same program as Extracttd.for
except that it extracts an interpolated time series from the density
matrix directly (using a 4-D interpolative scheme rather than from
the 3D base density using XCshift and DVfact and DDfact. The densities
and velocities are extracted at UT times.
CALLING SEQUENCE:
call Extractd3D(bExtract,RR,dRR,XCbe,XCtbeg,XCtend,nLng,nLat,
& nMap,nT,nTn,V3DT,D3DT,NCoff,XCstrt,nCar,JDCar)
INPUTS:
bExtract(12) logical .TRUE.: extract; .FALSE.: do not extract
1<=ITP<=9 Planets (1=Mercury, 2=Venus, 3=Earth, etc.)
10=Ulysses, 11=Helios 1; 12=Helios 2
RR real height of deconvolution
dRR real distance between heights
XCbe(2,nT) real start and ending Carrington variable of arrays
XCtbeg real*8 start time of observations
XCtend real*8 end time of observations
nLng integer # longitudes
nLat integer # latitudes
nMap integer # heights
nT integer # of times
nTn integer # of times of extracted matrix
V3DT(nLng,nLat,nMap,nTn*nT) real 3 D velocity over time
D3DT(nLng,nLat,nMap,nTn*nT) real 3 D density over time
NCoff integer
XCstrt real Start rotation value
nCar integer # Carrington rotations
JDCar real*8 Julian Date at beginning of rotations
OUTPUTS:
CALLS: ***
BadR4, ExtractPositionn8, Get4Dval, Julian8, Say, XMAP_OBS_POS, bGetLun, cTime2System
iFreeLun, itrim
CALLED BY:
ipsdt
[Previous]
[Next]
NAME:
ExtractInsitu
PURPOSE:
Extracts interpolated velocity and density IPS deconvolved maps at
a given time and position.
CALLING SEQUENCE:
subroutine ExtractInsitu(bExtract,VV3D,DD3D,BR3D,BT3D,BN3D,nCar,JDCar)
INPUTS:
bExtract(12) logical .TRUE.: extract; .FALSE.: do not extract
1<=ITP<=9 Planets (1=Mercury, 2=Venus, 3=Earth, etc.)
10=Ulysses, 11=Helios 1; 12=Helios 2
VV3D(nLng,nLat,nRad) real 3-D velocity
DD3D(nLng,nLat,nRad) real 3-D normalized density
BR3D(nLnG,nLat,nRad) real 3-D magnetic field radial component
BT3D(nLnG,nLat,nRad) real 3-D magnetic field tangential component
BN3D(nLnG,nLat,nRad) real 3-D magnetic field normal component
nCar integer # Carrington rotations
JDCar real*8 Julian Date at beginning of rotations
OUTPUTS:
CALLED BY:
ipsd
INCLUDE:
include 'openfile.h'
include 'sun.h'
include 't3d_array.h'
CALLS: ***
BadR4, ExtractPosition, FLINT8, Get3Dval, Julian, T3D_get, T3D_get_grid, T3D_iget
XCvarFormat, XMAP_OBS_POS, bOpenFile, cTime2System, iFreeLun, itrim
PROCEDURE:
[Previous]
[Next]
NAME:
ExtractMap
PURPOSE:
Extracts interpolated velocity and density IPS deconvolved maps.
CALLING SEQUENCE:
subroutine ExtractMap(RS,RR,dRR,XCbeg,XCend,nLng,nLat,nRad,V,D,
& XC3D,Vratio,Dratio,XCstrt,iLng,VS,DS)
INPUTS:
RS real height where V and D needed (AU)
RR real reference height (AU)
dRR real radial grid spacing (AU)
XCbeg real start Carrington variable of arrays
XCend real end Carrington variable of arrays
(if I__MOD=1 then XCend-XCbeg should be an integer)
nLng integer # longitudes covering [XCbeg,XCend]
nLat integer # latitudes covering [-90,90] deg
nRad integer # heliocentric distances
V(nLng,nLat) real velocity array at RR
D(nLng,nLat) real normalized density array at RR
XC3D(nLng,nLat,nRad) real shift amount from array
Vratio (nLng,nLat,nRad) real velocity ratio
Dratio (nLng,nLat,nRad) real normalized density (nr^2) ratio
XCstrt real Carrington variable at start of map to be extracted
iLng integer # longitudes to be extracted
OUTPUTS:
VS(iLng,nLat) real velocities at RS
DS(iLng,nLat) real normalized densities (nr^2) at RS
CALLS: ***
BadR4, FLINT
CALLED BY:
ipsd
INCLUDE:
include 'mapcoordinates.h'
RESTRICTIONS:
If any of the extraction points is outside the range [1,nLng] by more than one,
then BadR4() is returned for density and velocity
PROCEDURE:
> The input arrays are defined at locations i=1,nLng.
Velocities and normalized densities are extracted at locations xLng+(i-1), i=1,iLng
> All grid points (I,J) at height RS are traced back to the reference surface RR
using the XC3D array. Density and velocity at each grid point at heigh RS are
calculated from the Vratio and Dration arrays.
> If the traced back position is outside the range [XCbeg,XCend] then it is scaled
back into the [XCbeg,XCend] by doing a mod(XC,XCend-XCbeg).
> Density and velocity at the source surface are calculated by interpolating on
the D and V arrays using the traced-back locations at the source surface.
> If I__MOD=2 then the traced-back position may end up outside [XCbeg,XCend]. If they
are more than 1 grid spacing away, the value BadR4() is returned for density and
velocity. Within one grid spacing the values are extrapolated.
MODIFICATION HISTORY:
MAR-1994, Paul Hick (UCSD/CASS); original version written at STELab
APR-1999, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added arguments xLng and iLng to allow for extraction of a map covering
less than the full range from XCbeg to XCend
[Previous]
[Next]
NAME:
ExtractPosition
PURPOSE:
CALLING SEQUENCE:
subroutine ExtractPosition(ITP,iYr,Doy,RVect)
INPUTS:
OUTPUTS:
CALLS: ***
ECLIPTIC_HELIOGRAPHIC, HOSOrbit, PlanetOrbit, StereoAOrbit, StereoBOrbit
SunNewcomb, UlyssesOrbit
CALLED BY:
ExtractInsitu
[Previous]
[Next]
NAME:
ExtractPositionn8
PURPOSE:
CALLING SEQUENCE:
subroutine ExtractPositionn8(ITP,iYr,Doy8,RVect)
INPUTS:
OUTPUTS:
CALLS: ***
ECLIPTIC_HELIOGRAPHIC8, HOSOrbit, PlanetOrbit, StereoAOrbit, StereoBOrbit
SunNewcomb8, UlyssesOrbit
CALLED BY:
Extractd, Extractd3d