public class Pal extends Object
Based on the C version of slalib written by P T Wallace.
Modifier and Type | Field and Description |
---|---|
static double |
AUKM
Astronomical unit to kilometers
|
static double |
AUSEC
Light time for 1 AU (sec)
|
static double |
C
Speed of light (AU per day)
|
static double |
D2S
Seconds in a day
|
static double |
ESPEED
Nominal mean sidereal speed of Earth equator in km/s
(the actual value is about 0.4651)
|
int |
Flag
Flag for additional status information
|
static double |
GR2
Gravitational radius of the Sun x 2: (2*mu/c**2, au)
|
static double |
R2D
Degrees to radians
|
static double |
SOLSID
Ratio between solar and sidereal time
|
int |
Status
Current Status flag
|
static double |
VF
Km/s to AU/year
|
Constructor and Description |
---|
Pal() |
Modifier and Type | Method and Description |
---|---|
AngleDR |
Addet(AngleDR m,
double eq)
Add the e-terms (elliptic component of annual aberration) to a
pre IAU 1976 mean place to conform to the old catalogue convention.
|
AngleDR |
Amp(AngleDR ap,
double date,
double eq)
Convert star RA,Dec from geocentric apparent to mean place.
|
AngleDR |
Ampqk(AngleDR ap,
AMParams amprms)
Convert star RA,Dec from geocentric apparent to mean place.
|
AOParams |
Aoppa(UTCdate date,
ObsPosition obs,
Cartesian pm,
double tdk,
double pmb,
double rh,
double wl,
double tlr)
Precompute apparent to observed place parameters required by
Aopqk and Oapqk.
|
void |
Aoppat(double date,
AOParams aoprms)
Recompute the sidereal time in the apparent to observed place
star-independent parameter block.
|
double |
Caldj(int iy,
int im,
int id)
Gregorian calendar to Modified Julian Date.
|
double |
Cldj(int iy,
int im,
int id)
Gregorian calendar to Modified Julian Date.
|
double |
Daf2r(int ideg,
int iamin,
double asec)
Convert degrees, arcminutes, arcseconds to radians.
|
double |
Dat(double utc)
Increment to be applied to Coordinated Universal Time UTC to give
International Atomic Time TAI.
|
double[][] |
Dav2m(double[] axvec)
Form the rotation matrix corresponding to a given axial vector.
|
double |
Dbjin(palString string,
double dreslt)
Convert free-format input into double precision floating point,
using Dfltin but with special syntax extensions.
|
Spherical |
Dc62s(Cartesian v)
Conversion of position & velocity in Cartesian coordinates
to spherical coordinates.
|
AngleDR |
Dcc2s(double[] v)
Direction cosines to spherical coordinates.
|
double[] |
Dcs2c(AngleDR a)
Spherical coordinates to direction cosines.
|
palTime |
Dd2tf(double days)
Convert an interval in days into hours, minutes, seconds.
|
double[][] |
Deuler(String order,
double phi,
double theta,
double psi)
Form a rotation matrix from the Euler angles - three successive
rotations about specified Cartesian axes.
|
double |
Dfltin(palString string,
double dreslt)
Convert free-format input into double precision floating point.
|
double[] |
Dimxv(double[][] dm,
double[] va)
Performs the 3-d backward unitary transformation.
|
mjDate |
Djcal(double djm)
Modified Julian Date to Gregorian calendar, expressed
in a form convenient for formatting messages (namely
rounded to a specified precision, and with the fields
stored in a single array).
|
mjDate |
Djcl(double djm)
Modified Julian Date to Gregorian year, month, day,
and fraction of a day.
|
double[] |
Dm2av(double[][] rmat)
From a rotation matrix, determine the corresponding axial vector.
|
double |
Dmat(double[][] a,
double[] y)
Matrix inversion & solution of simultaneous equations.
|
double[][] |
Dmxm(double[][] a,
double[][] b)
Product of two 3x3 matrices.
|
double[] |
Dmxv(double[][] dm,
double[] va)
Performs the 3-d forward unitary transformation.
|
palTime |
Dr2af(double angle)
Convert an angle in radians into degrees, arcminutes, arcseconds.
|
palTime |
Dr2tf(double angle)
Convert an angle in radians to hours, minutes, seconds.
|
double |
Drange(double angle)
Normalize angle into range +/- pi.
|
double |
Dranrm(double angle)
Normalize angle into range 0-2 π.
|
double |
Drverot(double phi,
AngleDR r,
double st)
Velocity component in a given direction due to Earth rotation.
|
double |
Drvgalc(AngleDR r2000)
Velocity component in a given direction due to the rotation
of the Galaxy.
|
double |
Drvlg(AngleDR r2000)
Velocity component in a given direction due to the combination
of the rotation of the Galaxy and the motion of the Galaxy
relative to the mean motion of the local group.
|
double |
Drvlsrd(AngleDR r2000)
Velocity component in a given direction due to the Sun's
motion with respect to the dynamical Local Standard of Rest.
|
double |
Drvlsrk(AngleDR r2000)
Velocity component in a given direction due to the Sun's motion
with respect to an adopted kinematic Local Standard of Rest.
|
Cartesian |
Ds2c6(Spherical s)
Conversion of position & velocity in spherical coordinates
to Cartesian coordinates.
|
AngleDR |
Ds2tp(AngleDR r,
AngleDR rz)
Projection of spherical coordinates onto tangent plane
('gnomonic' projection - 'standard coordinates').
|
double |
Dt(double epoch)
Estimate the offset between dynamical time and Universal Time
for a given historical epoch.
|
double |
Dtf2d(int ihour,
int imin,
double sec)
Convert hours, minutes, seconds to days.
|
double |
Dtf2r(int ihour,
int imin,
double sec)
Convert hours, minutes, seconds to radians.
|
AngleDR |
Dtp2s(AngleDR x,
AngleDR rz)
Transform tangent plane coordinates into spherical.
|
double |
Dtt(double utc)
Increment to be applied to Coordinated Universal Time UTC to give
Terrestrial Time TT (formerly Ephemeris Time ET).
|
double |
Dvdv(double[] va,
double[] vb)
Scalar product of two 3-vectors.
|
double |
Dvn(double[] v,
double[] uv)
Normalizes a 3-vector also giving the modulus.
|
double[] |
Dvxv(double[] va,
double[] vb)
Vector product of two 3-vectors.
|
AngleDR |
Ecleq(AngleDR dl,
double date)
Transformation from ecliptic coordinates to J2000.0
equatorial coordinates.
|
double[][] |
Ecmat(double date)
Form the equatorial to ecliptic rotation matrix (IAU 1980 theory).
|
double |
Epb(double date)
Conversion of Modified Julian Date to Besselian epoch.
|
double |
Epb2d(double epb)
Conversion of Besselian epoch to Modified Julian Date.
|
double |
Epco(char k0,
char k,
double e)
Convert an epoch into the appropriate form - 'B' or 'J'.
|
double |
Epj(double date)
Conversion of Modified Julian Date to Julian epoch.
|
double |
Epj2d(double epj)
Conversion of Julian epoch to Modified Julian Date.
|
AngleDR |
Eqecl(AngleDR d,
double date)
Transformation from J2000.0 equatorial coordinates to
ecliptic coordinates.
|
double |
Eqeqx(double date)
Equation of the equinoxes (IAU 1994, double precision).
|
Galactic |
Eqgal(AngleDR dr)
Transformation from J2000.0 equatorial coordinates to
IAU 1958 Galactic coordinates.
|
double[] |
Etrms(double ep)
Compute the e-terms (elliptic component of annual aberration) vector.
|
void |
Evp(double date,
double deqx,
double[] dvb,
double[] dpb,
double[] dvh,
double[] dph)
Barycentric and heliocentric velocity and position of the Earth.
|
Stardata |
Fk425(Stardata s1950)
Convert B1950.0 FK4 star data to J2000.0 FK5.
|
AngleDR |
Fk45z(AngleDR r1950,
double bepoch)
Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero
proper motion in the FK5 frame (double precision).
|
Stardata |
Fk524(Stardata j2000)
Convert J2000.0 FK5 star data to B1950.0 FK4.
|
Stardata |
Fk54z(AngleDR r2000,
double bepoch)
Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming
zero proper motion and parallax.
|
AngleDR |
Galeq(Galactic gl)
Transformation from IAU 1958 Galactic coordinates to
J2000.0 equatorial coordinates.
|
Galactic |
Galsup(Galactic gl)
Transformation from IAU 1958 Galactic coordinates to
De Vaucouleurs supergalactic coordinates.
|
double[] |
Geoc(double p,
double h)
Convert geodetic position to geocentric.
|
double |
Gmst(double ut1)
Conversion from Universal Time to Sidereal Time.
|
char |
Kbj(int jb,
double e)
Select epoch prefix 'B' or 'J'.
|
AngleDR |
Map(Stardata sd,
double epq,
double date)
Transform star RA,Dec from mean place to geocentric apparent.
|
AMParams |
Mappa(double eq,
double date)
Compute star-independent parameters in preparation for
conversions between mean place and geocentric apparent place.
|
AngleDR |
Mapqk(Stardata s,
AMParams amprms)
Quick mean to apparent place: transform a star RA,Dec from
mean place to geocentric apparent place, given the
star-independent parameters.
|
AngleDR |
Mapqkz(AngleDR rm,
AMParams amprms)
Quick mean to apparent place: transform a star RA,dec from
mean place to geocentric apparent place, given the
star-independent parameters, and assuming zero parallax
and proper motion.
|
double[][] |
Nut(double date)
Form the matrix of nutation for a given date (IAU 1980 theory).
|
double[] |
Nutc(double date)
Nutation: longitude & obliquity components and
mean obliquity (IAU 1980 theory).
|
Observatory |
Obs(int n)
Parameters of selected groundbased observing stations.
|
Observatory |
Obs(String id)
Parameters of selected groundbased observing stations.
|
AngleDR |
Pm(AngleDR r0,
double[] pm,
double px,
double rv,
double ep0,
double ep1)
Apply corrections for proper motion to a star RA,Dec.
|
double[][] |
Prebn(double bep0,
double bep1)
Generate the matrix of precession between two epochs,
using the old, pre-IAU1976, Bessel-Newcomb model, using
Kinoshita's formulation (double precision).
|
double[][] |
Prec(double ep0,
double ep1)
Form the matrix of precession between two epochs (IAU 1976, FK5).
|
AngleDR |
Preces(String sys,
double ep0,
double ep1,
AngleDR d)
Precession - either FK4 (Bessel-Newcomb, pre-IAU1976) or
FK5 (Fricke, post-IAU1976) as required.
|
double[][] |
Precl(double ep0,
double ep1)
Form the matrix of precession between two epochs, using the
model of Simon et al (1994), which is suitable for long
periods of time.
|
double[][] |
Prenut(double epoch,
double date)
Form the matrix of precession and nutation (IAU 1976/1980/FK5).
|
double[] |
Refco(double hm,
double tdk,
double pmb,
double rh,
double wl,
double phi,
double tlr,
double eps)
Determine constants A and B in atmospheric refraction model
dz = A tan z + B tan^3 z.
|
double |
Refro(double zobs,
double hm,
double tdk,
double pmb,
double rh,
double wl,
double phi,
double tlr,
double eps)
Atmospheric refraction for radio and optical/IR wavelengths.
|
AngleDR |
Subet(AngleDR rc,
double eq)
Remove the e-terms (elliptic component of annual aberration)
from a pre IAU 1976 catalogue RA,Dec to give a mean place.
|
Galactic |
Supgal(Galactic ds)
Transformation from De Vaucouleurs supergalactic coordinates
to IAU 1958 Galactic coordinates.
|
double |
Zd(double ha,
double dec,
double phi)
HA, Dec to Zenith Distance.
|
public static final double GR2
public static final double VF
public static final double C
public static final double SOLSID
public static final double ESPEED
public static final double D2S
public static final double AUKM
public static final double AUSEC
public static final double R2D
public int Status
public int Flag
public AngleDR Addet(AngleDR m, double eq)
m
- RA,Dec (radians) without e-termseq
- Besselian epoch of mean equator and equinoxpublic AngleDR Amp(AngleDR ap, double date, double eq)
The mean coordinate system is the post IAU 1976 system, loosely called FK5.
ap
- apparent RA & Dec (radians)date
- TDB for apparent place (JD-2400000.5)eq
- equinox: Julian epoch of mean placepublic AngleDR Ampqk(AngleDR ap, AMParams amprms)
The mean coordinate system is the post IAU 1976 system, loosely called FK5.
Use of this routine is appropriate when efficiency is important and where many star positions are all to be transformed for one epoch and equinox. The star-independent parameters can be obtained by calling the Mappa routine.
ap
- apparent RA & Dec (radians)amprms
- star-independent mean-to-apparent parameterspublic AOParams Aoppa(UTCdate date, ObsPosition obs, Cartesian pm, double tdk, double pmb, double rh, double wl, double tlr)
Precompute apparent to observed place parameters required by Aopqk and Oapqk.
hm = -29.3 * tsl * log ( p / 1013.25 );
where tsl is the approximate sea-level air temperature in deg K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure p is not known, it can be estimated from the height of the observing station, hm as follows:p = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );
Note, however, that the refraction is proportional to the pressure and that an accurate p value is important for precise work.date
- UTC date/time (Modified Julian Date, JD-2400000.5) &
delta UT: UT1-UTC (UTC seconds)pm
- mean longitude of the observer (radians, east +ve),
mean geodetic latitude of the observer (radians),
observer's height above sea level (metres) &
polar motion x-coordinate (radians)tdk
- local ambient temperature (DegK; std=273.155)pmb
- local atmospheric pressure (mB; std=1013.25)rh
- local relative humidity (in the range 0.0-1.0)wl
- effective wavelength (micron, e.g. 0.55)tlr
- tropospheric lapse rate (DegK/metre, e.g. 0.0065)public void Aoppat(double date, AOParams aoprms)
For more information, see Aoppa.
date
- UTC date/time (Modified Julian Date, JD-2400000.5)
(see Aoppa source for comments on leap seconds)aoprms
- star-independent apparent-to-observed parameterspublic double Caldj(int iy, int im, int id) throws palError
(Includes century default feature: use Cldj for years before 100AD.)
iy
- Year in Gregorian calendarim
- Month in Gregorian calendarid
- Day in Gregorian calendarpalError
- if bad day, month or year
0 = ok 1 = bad year (MJD not computed) 2 = bad month (MJD not computed) 3 = bad day (MJD computed) Acceptable years are 00-49, interpreted as 2000-2049, 50-99, " " 1950-1999, 100 upwards, interpreted literally.
public double Cldj(int iy, int im, int id) throws palError
The year must be -4699 (i.e. 4700BC) or later.
The algorithm is derived from that of Hatcher 1984 (QJRAS 25, 53-55).
iy
- Year in Gregorian calendarim
- Month in Gregorian calendarid
- Day in Gregorian calendarpalError
- if bad day, month or year
0 = OK 1 = bad year (MJD not computed) 2 = bad month (MJD not computed) 3 = bad day (MJD computed)
public double Daf2r(int ideg, int iamin, double asec) throws palError
ideg
- Degreesiamin
- Arcminutesasec
- ArcsecondspalError
- degrees, arcmins or arcsecs out of range
Status returned: 1 = ideg outside range 0-359 2 = iamin outside range 0-59 3 = asec outside range 0-59.999...
public double Dat(double utc)
utc
- UTC date as a modified JD (JD-2400000.5)public double[][] Dav2m(double[] axvec)
A rotation matrix describes a rotation about some arbitrary axis. The axis is called the Euler axis, and the angle through which the reference frame rotates is called the Euler angle. The axial vector supplied to this routine has the same direction as the Euler axis, and its magnitude is the Euler angle in radians.
If axvec is null, the unit matrix is returned.
The reference frame rotates clockwise as seen looking along the axial vector from the origin.
axvec
- Axial vector (radians)public double Dbjin(palString string, double dreslt)
The purpose of the syntax extensions is to help cope with mixed FK4 and FK5 data. In addition to the syntax accepted by Dfltin, the following two extensions are recognized by dbjin:
The calling program is notified of the incidence of either of these extensions through an supplementary status argument. The rest of the arguments are as for Dfltin.
The Status returned is one of the following:
And the additional Flag is one of the following:
For details of the basic syntax, see Dfltin.
string
- String containing field to be decodeddreslt
- Previous Resultpublic Spherical Dc62s(Cartesian v)
v
- Cartesian position & velocity vectorpublic AngleDR Dcc2s(double[] v)
The spherical coordinates are longitude (+ve anticlockwise looking from the +ve latitude pole) and latitude. The Cartesian coordinates are right handed, with the x axis at zero longitude and latitude, and the z axis at the +ve latitude pole.
If v is null, zero a and b are returned. At either pole, zero a is returned.
v
- x, y, z vectorpublic double[] Dcs2c(AngleDR a)
The spherical coordinates are longitude (+ve anticlockwise looking from the +ve latitude pole) and latitude. The Cartesian coordinates are right handed, with the x axis at zero longitude and latitude, and the z axis at the +ve latitude pole.
a
- spherical coordinates in radians (RA,Dec)public palTime Dd2tf(double days)
days
- interval in dayspublic double[][] Deuler(String order, double phi, double theta, double psi)
A rotation is positive when the reference frame rotates anticlockwise as seen looking towards the origin from the positive region of the specified axis.
The characters of order define which axes the three successive rotations are about. A typical value is 'zxz', indicating that rmat is to become the direction cosine matrix corresponding to rotations of the reference frame through phi radians about the old z-axis, followed by theta radians about the resulting x-axis, then psi radians about the resulting z-axis.
The axis names can be any of the following, in any order or combination: x, y, z, uppercase or lowercase, 1, 2, 3. Normal axis labelling/numbering conventions apply; the xyz (=123) triad is right-handed. Thus, the 'zxz' example given above could be written 'zxz' or '313' (or even 'zxz' or '3xz'). Order is terminated by length or by the first unrecognized character.
Fewer than three rotations are acceptable, in which case the later angle arguments are ignored. Zero rotations leaves rmat set to the identity matrix.
order
- specifies about which axes the rotations occurphi
- 1st rotation (radians)theta
- 2nd rotation ( " )psi
- 3rd rotation ( " )public double Dfltin(palString string, double dreslt)
string
- String containing field to be decodeddreslt
- Previous resultpublic double[] Dimxv(double[][] dm, double[] va)
(n.b. The matrix must be unitary, as this routine assumes that the inverse and transpose are identical).
dm
- n x n matrixva
- vectorpublic mjDate Djcal(double djm) throws palError
Any date after 4701BC March 1 is accepted.
Large ndp values risk internal overflows. It is typically safe to use up to ndp=4.
The algorithm is derived from that of Hatcher 1984 (QJRAS 25, 53-55).
djm
- Modified Julian Date (JD-2400000.5)palError
public mjDate Djcl(double djm) throws palError
The algorithm is derived from that of Hatcher 1984 (QJRAS 25, 53-55).
djm
- Modified Julian Date (JD-2400000.5)palError
- unacceptable date (before 4701BC March 1)public double[] Dm2av(double[][] rmat)
A rotation matrix describes a rotation about some arbitrary axis. The axis is called the Euler axis, and the angle through which the reference frame rotates is called the Euler angle. The axial vector returned by this routine has the same direction as the Euler axis, and its magnitude is the Euler angle in radians. (The magnitude and direction can be separated by means of the routine Dvn.)
The reference frame rotates clockwise as seen looking along the axial vector from the origin.
If rmat is null, so is the result.
rmat
- Rotation matrixpublic double Dmat(double[][] a, double[] y)
symbol | type | dimension | before | after |
---|---|---|---|---|
n | int | no. of unknowns | unchanged | |
*a | double | [n][n] | matrix | inverse |
*y | double | [n] | vector | solution |
*d | double | - | determinant | |
*jf | int | - | # singularity flag | |
*iw | int | [n] | - | workspace |
a
- Matrixy
- Vectorpublic double[][] Dmxm(double[][] a, double[][] b)
a
- Matrixb
- Matrixpublic double[] Dmxv(double[][] dm, double[] va)
dm
- Matrixva
- Vectorpublic palTime Dr2af(double angle)
angle
- angle in radianspublic palTime Dr2tf(double angle)
angle
- Angle in radianspublic double Drange(double angle)
angle
- Angle in radianspublic double Dranrm(double angle)
angle
- Angle in radianspublic double Drverot(double phi, AngleDR r, double st)
phi
- Latitude of observing station (geodetic)r
- Apparent RA,Dec (radians)st
- local apparent sidereal timepublic double Drvgalc(AngleDR r2000)
r2000
- J2000.0 mean RA,Dec (radians)public double Drvlg(AngleDR r2000)
r2000
- J2000.0 mean RA,Dec (radians)public double Drvlsrd(AngleDR r2000)
There is another type of LSR, called a "kinematical" LSR. A kinematical LSR is the mean standard of rest of specified star catalogues or stellar populations, and several slightly different kinematical LSRs are in use. The Sun's motion with respect to an agreed kinematical LSR is known as the "standard" solar motion. To obtain a radial velocity correction with respect to an adopted kinematical LSR use the routine Rvlsrk.
r2000
- J2000.0 mean RA,Dec (radians)public double Drvlsrk(AngleDR r2000)
There is another sort of LSR, the "dynamical" LSR, which is a point in the vicinity of the Sun which is in a circular orbit around the Galactic centre. The Sun's motion with respect to the dynamical LSR is called the "peculiar" solar motion. To obtain a radial velocity correction with respect to the dynamical LSR use the routine Rvlsrd.
r2000
- J2000.0 mean RA,Dec (radians)public Cartesian Ds2c6(Spherical s)
s
- Spherical coordinates (longitude, latitude, radial)public AngleDR Ds2tp(AngleDR r, AngleDR rz) throws palError
r
- spherical coordinates of point to be projectedrz
- spherical coordinates of tangent pointpalError
public double Dt(double epoch)
before 979 | Stephenson & Morrison's 390 BC to AD 948 model |
979 to 1708 | Stephenson & Morrison's 948 to 1600 model |
after 1708 | McCarthy & Babcock's post-1650 model |
epoch
- (Julian) epoch (e.g. 1850.0)public double Dtf2d(int ihour, int imin, double sec) throws palError
ihour
- Hoursimin
- Minutessec
- SecondspalError
- Hour, Min or Sec out of rangepublic double Dtf2r(int ihour, int imin, double sec) throws palError
ihour
- Hoursimin
- Minutessec
- SecondspalError
- Hour, Min or Sec out of rangepublic AngleDR Dtp2s(AngleDR x, AngleDR rz)
x
- Tangent plane rectangular coordinates (xi, eta)rz
- Spherical coordinates of tangent point (ra, dec)public double Dtt(double utc)
utc
- UTC date as a modified JD (JD-2400000.5)public double Dvdv(double[] va, double[] vb)
va
- First vectorvb
- Second vectorpublic double Dvn(double[] v, double[] uv)
If the modulus of v is zero, uv is set to zero as well.
v
- Vectoruv
- (Returned) Unit vector in direction of vpublic double[] Dvxv(double[] va, double[] vb)
va
- First vectorvb
- Second vectorpublic AngleDR Ecleq(AngleDR dl, double date)
dl
- ecliptic longitude and latitude
(mean of date, IAU 1980 theory, radians)date
- TDB (loosely ET) as Modified Julian Date (JD-2400000.5)public double[][] Ecmat(double date)
date
- TDB (loosely ET) as Modified Julian Date (JD-2400000.5)public double Epb(double date)
date
- Modified Julian Date (JD - 2400000.5)public double Epb2d(double epb)
epb
- Besselian epochpublic double Epco(char k0, char k, double e)
k0
- Form of result: 'B'=Besselian, 'J'=Juliank
- Form of given epoch: 'B' or 'J'e
- Epochpublic double Epj(double date)
date
- Modified Julian Date (JD - 2400000.5)public double Epj2d(double epj)
epj
- Julian epochpublic AngleDR Eqecl(AngleDR d, double date)
d
- J2000.0 mean RA,Dec (radians)date
- TDB (loosely ET) as Modified Julian Date (JD-2400000.5)public double Eqeqx(double date)
Greenwich apparent ST = Greenwich mean ST + equation of the equinoxes
date
- TDB (loosely ET) as Modified Julian Date (JD-2400000.5)public Galactic Eqgal(AngleDR dr)
dr
- J2000.0 (RA, Dec) (in radians)public double[] Etrms(double ep)
ep
- Besselian epochpublic void Evp(double date, double deqx, double[] dvb, double[] dpb, double[] dvh, double[] dph)
barycentric velocity | 42 cm/s |
barycentric position | 6900 km |
heliocentric velocity | 42 cm/s |
heliocentric position | 1600 km |
This routine is adapted from the BARVEL and BARCOR Fortran subroutines of P.Stumpff, which are described in Astron. Astrophys. Suppl. Ser. 41, 1-8 (1980). The present routine uses double precision throughout; most of the other changes are essentially cosmetic and do not affect the results. However, some adjustments have been made so as to give results that refer to the new (IAU 1976 "FK5") equinox and precession, although the differences these changes make relative to the results from Stumpff's original "FK4" version are smaller than the inherent accuracy of the algorithm. One minor shortcoming in the original routines that has not been corrected is that better numerical accuracy could be achieved if the various polynomial evaluations were nested. Note also that one of Stumpff's precession constants differs by 0.001 arcsec from the value given in the Explanatory Supplement to the A.E.
(Units are AU/s for velocity and AU for position)
date
- TDB (loosely ET) as a Modified Julian Date (JD-2400000.5)deqx
- Julian epoch (e.g. 2000.0) of mean equator and
equinox of the vectors returned. If deqx <= 0.0,
all vectors are referred to the mean equator and
equinox (FK5) of epoch datedvb
- (Returned) barycentric velocitydpb
- (Returned) barycentric positiondvh
- (Returned) heliocentric velocitydph
- (Returned) heliocentric positionpublic Stardata Fk425(Stardata s1950)
This routine converts stars from the old, Bessel-Newcomb, FK4 system to the new, IAU 1976, FK5, Fricke system. The precepts of Smith et al (Ref 1) are followed, using the implementation by Yallop et al (Ref 2) of a matrix method due to Standish. Kinoshita's development of Andoyer's post-Newcomb precession is used. The numerical constants from Seidelmann et al (Ref 3) are used canonically.
s1950
- B1950.0 RA,dec (rad),
proper motions (rad/trop.yr),
parallax (arcsec),
radial velocity (km/s, +ve = moving away)public AngleDR Fk45z(AngleDR r1950, double bepoch)
This routine converts stars from the old, Bessel-Newcomb, FK4 system to the new, IAU 1976, FK5, Fricke system, in such a way that the FK5 proper motion is zero. Because such a star has, in general, a non-zero proper motion in the FK4 system, the routine requires the epoch at which the position in the FK4 system was determined.
The method is from Appendix 2 of Ref 1, but using the constants of Ref 4.
r1950
- B1950.0 FK4 RA,Dec at epoch (rad)bepoch
- Besselian epoch (e.g. 1979.3)public Stardata Fk524(Stardata j2000)
This routine converts stars from the new, IAU 1976, FK5, Fricke system, to the old, Bessel-Newcomb, FK4 system. The precepts of Smith et al (Ref 1) are followed, using the implementation by Yallop et al (Ref 2) of a matrix method due to Standish. Kinoshita's development of Andoyer's post-Newcomb precession is used. The numerical constants from Seidelmann et al (Ref 3) are used canonically.
j2000
- J2000.0 RA,Dec (rad),
J2000.0 proper motions (rad/Jul.yr),
parallax (arcsec),
radial velocity (km/s, +ve = moving away)public Stardata Fk54z(AngleDR r2000, double bepoch)
This routine converts star positions from the new, IAU 1976, FK5, Fricke system to the old, Bessel-Newcomb, FK4 system.
r2000
- J2000.0 FK5 RA,Dec (rad)bepoch
- Besselian epoch (e.g. 1950)public AngleDR Galeq(Galactic gl)
gl
- Galactic longitude and latitude l2, b2public Galactic Galsup(Galactic gl)
gl
- Galactic longitude and latitude l2,b2public double[] Geoc(double p, double h)
p
- latitude (geodetic, radians)h
- height above reference spheroid (geodetic, metres)public double Gmst(double ut1)
The IAU 1982 expression (see page S15 of the 1984 Astronomical Almanac) is used, but rearranged to reduce rounding errors. This expression is always described as giving the GMST at 0 hours UT. In fact, it gives the difference between the GMST and the UT, which happens to equal the GMST (modulo 24 hours) at 0 hours UT each day. In this routine, the entire UT is used directly as the argument for the standard formula, and the fractional part of the UT is added separately; note that the factor 1.0027379... does not appear.
See also the routine Gmsta, which delivers better numerical precision by accepting the UT date and time as separate arguments.
ut1
- Universal Time (strictly UT1) expressed as
Modified Julian Date (JD-2400000.5)public char Kbj(int jb, double e) throws palError
jb
- Dbjin prefix status: 0=none, 1='B', 2='J'e
- epoch - Besselian or JulianpalError
- Illegal prefix
If jb=0, B is assumed for e < 1984.0, otherwise J.
public AngleDR Map(Stardata sd, double epq, double date)
The reference frames and timescales used are post IAU 1976.
sd
- mean RA,Dec (rad)
proper motions (RA,Dec changes per Julian year),
parallax (arcsec),
radial velocity (km/sec, +ve if receding)epq
- Epoch and equinox of star data (Julian)date
- TDB for apparent place (JD-2400000.5)public AMParams Mappa(double eq, double date)
The parameters produced by this routine are required in the parallax, light deflection, aberration, and precession/nutation parts of the mean/apparent transformations.
The reference frames and timescales used are post IAU 1976.
eq
- epoch of mean equinox to be used (Julian)date
- TDB (JD-2400000.5)public AngleDR Mapqk(Stardata s, AMParams amprms)
Use of this routine is appropriate when efficiency is important and where many star positions, all referred to the same equator and equinox, are to be transformed for one epoch. The star-independent parameters can be obtained by calling the Mappa routine.
If the parallax and proper motions are zero the Mapqkz routine can be used instead.
The reference frames and timescales used are post IAU 1976.
s
- Mean RA,Dec (rad),
proper motions (RA,Dec changes per Julian year),
parallax (arcsec),
radial velocity (km/sec, +ve if receding)amprms
- star-independent mean-to-apparent parameterspublic AngleDR Mapqkz(AngleDR rm, AMParams amprms)
Use of this routine is appropriate when efficiency is important and where many star positions, all with parallax and proper motion either zero or already allowed for, and all referred to the same equator and equinox, are to be transformed for one epoch. The star-independent parameters can be obtained by calling the Mappa routine.
The corresponding routine for the case of non-zero parallax and proper motion is Mapqk.
The reference frames and timescales used are post IAU 1976.
rm
- Mean RA,dec (rad)amprms
- Star-independent mean-to-apparent parameterspublic double[][] Nut(double date)
date
- TDB (loosely ET) as Modified Julian Date (=JD-2400000.5)The matrix is in the sense v(true) = rmatn * v(mean) .
public double[] Nutc(double date)
date
- TDB (loosely ET) as Modified Julian Date (JD-2400000.5)public Observatory Obs(int n)
n
- Number specifying observing stationpublic Observatory Obs(String id)
id
- Identifier specifying observing stationpublic AngleDR Pm(AngleDR r0, double[] pm, double px, double rv, double ep0, double ep1)
r0
- RA,Dec at epoch ep0 (rad)pm
- proper motions: RA,Dec changes per year of epochpx
- parallax (arcsec)rv
- radial velocity (km/sec, +ve if receding)ep0
- start epoch in years (e.g Julian epoch)ep1
- end epoch in years (same system as ep0)public double[][] Prebn(double bep0, double bep1)
The matrix is in the sense v(bep1) = rmatp * v(bep0)
bep0
- Beginning Besselian epochbep1
- Ending Besselian epochpublic double[][] Prec(double ep0, double ep1)
ep0
- Beginning epochep1
- Ending epochpublic AngleDR Preces(String sys, double ep0, double ep1, AngleDR d)
sys
- Precession to be applied: "FK4" or "FK5"ep0
- Starting epochep1
- Ending epochd
- RA,Dec, mean equator & equinox of epoch ep0public double[][] Precl(double ep0, double ep1)
ep0
- Beginning epochep1
- Ending epochpublic double[][] Prenut(double epoch, double date)
epoch
- Julian epoch for mean coordinatesdate
- Modified Julian Date (JD-2400000.5) for true coordinatespublic double[] Refco(double hm, double tdk, double pmb, double rh, double wl, double phi, double tlr, double eps)
z is the "observed" zenith distance (i.e. affected by refraction) and dz is what to add to z to give the "topocentric" (i.e. in vacuo) zenith distance.
hm
- Height of the observer above sea level (metre)tdk
- Ambient temperature at the observer (deg k)pmb
- Pressure at the observer (millibar)rh
- Relative humidity at the observer (range 0-1)wl
- Effective wavelength of the source (micrometre)phi
- Latitude of the observer (radian, astronomical)tlr
- Temperature lapse rate in the troposphere (degk/metre)eps
- Precision required to terminate iteration (radian)public double Refro(double zobs, double hm, double tdk, double pmb, double rh, double wl, double phi, double tlr, double eps)
zobs
- Observed zenith distance of the source (radian)hm
- Height of the observer above sea level (metre)tdk
- Ambient temperature at the observer (deg K)pmb
- Pressure at the observer (millibar)rh
- Relative humidity at the observer (range 0-1)wl
- Effective wavelength of the source (micrometre)phi
- Latitude of the observer (radian, astronomical)tlr
- Tropospheric lapse rate (degK/metre)eps
- Precision required to terminate iteration (radian)public AngleDR Subet(AngleDR rc, double eq)
rc
- RA,Dec (radians) with e-terms includedeq
- Besselian epoch of mean equator and equinoxpublic Galactic Supgal(Galactic ds)
(These two references give different values for the Galactic longitude of the supergalactic origin. Both are wrong; the correct value is l2=137.37.)
ds
- Supergalactic longitude and latitudepublic double Zd(double ha, double dec, double phi)
ha
- Hour Angle in radiansdec
- Declination in radiansphi
- Observatory latitude in radiansCopyright © 2024 Central Laboratory of the Research Councils. All Rights Reserved.