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 eterms (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
starindependent 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 freeformat 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 freeformat input into double precision floating point.

double[] 
Dimxv(double[][] dm,
double[] va)
Performs the 3d 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 3d 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 02 π.

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 3vectors.

double 
Dvn(double[] v,
double[] uv)
Normalizes a 3vector also giving the modulus.

double[] 
Dvxv(double[] va,
double[] vb)
Vector product of two 3vectors.

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 eterms (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 starindependent 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
starindependent 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
starindependent 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, preIAU1976, BesselNewcomb 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 (BesselNewcomb, preIAU1976) or
FK5 (Fricke, postIAU1976) 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 eterms (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 etermseq
 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 (JD2400000.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 starindependent parameters can be obtained by calling the Mappa routine.
ap
 apparent RA & Dec (radians)amprms
 starindependent meantoapparent 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 sealevel 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, JD2400000.5) &
delta UT: UT1UTC (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 xcoordinate (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.01.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, JD2400000.5)
(see Aoppa source for comments on leap seconds)aoprms
 starindependent apparenttoobserved 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 0049, interpreted as 20002049, 5099, " " 19501999, 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, 5355).
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 0359 2 = iamin outside range 059 3 = asec outside range 059.999...
public double Dat(double utc)
utc
 UTC date as a modified JD (JD2400000.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 zaxis, followed by theta radians about the resulting xaxis, then psi radians about the resulting zaxis.
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 righthanded. 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, 5355).
djm
 Modified Julian Date (JD2400000.5)palError
public mjDate Djcl(double djm) throws palError
The algorithm is derived from that of Hatcher 1984 (QJRAS 25, 5355).
djm
 Modified Julian Date (JD2400000.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 post1650 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 (JD2400000.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 (JD2400000.5)public double[][] Ecmat(double date)
date
 TDB (loosely ET) as Modified Julian Date (JD2400000.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 (JD2400000.5)public double Eqeqx(double date)
Greenwich apparent ST = Greenwich mean ST + equation of the equinoxes
date
 TDB (loosely ET) as Modified Julian Date (JD2400000.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, 18 (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 (JD2400000.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, BesselNewcomb, 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 postNewcomb 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, BesselNewcomb, 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 nonzero 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, BesselNewcomb, 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 postNewcomb 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, BesselNewcomb, 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 (JD2400000.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 (JD2400000.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 (JD2400000.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 starindependent 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
 starindependent meantoapparent 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 starindependent parameters can be obtained by calling the Mappa routine.
The corresponding routine for the case of nonzero parallax and proper motion is Mapqk.
The reference frames and timescales used are post IAU 1976.
rm
 Mean RA,dec (rad)amprms
 Starindependent meantoapparent parameterspublic double[][] Nut(double date)
date
 TDB (loosely ET) as Modified Julian Date (=JD2400000.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 (JD2400000.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 (JD2400000.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 01)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 01)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 eterms 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.