view release on metacpan or search on metacpan
erfasrc/src/aper.c view on Meta::CPAN
** cphi double unchanged
** diurab double unchanged
** eral double "local" Earth rotation angle (radians)
** refa double unchanged
** refb double unchanged
**
** Notes:
**
** 1) This function exists to enable sidereal-tracking applications to
** avoid wasteful recomputation of the bulk of the astrometry
** parameters: only the Earth rotation is updated.
**
** 2) For targets expressed as equinox based positions, such as
** classical geocentric apparent (RA,Dec), the supplied theta can be
** Greenwich apparent sidereal time rather than Earth rotation
** angle.
**
** 3) The function eraAper13 can be used instead of the present
** function, and starts from UT1 rather than ERA itself.
**
** 4) This is one of several functions that inserts into the astrom
erfasrc/src/pvu.c view on Meta::CPAN
** e r a P v u
** - - - - - - -
**
** Update a pv-vector.
**
** Given:
** dt double time interval
** pv double[2][3] pv-vector
**
** Returned:
** upv double[2][3] p updated, v unchanged
**
** Notes:
**
** 1) "Update" means "refer the position component of the vector
** to a new date dt time units from the existing date".
**
** 2) The time units of dt must match those of the velocity.
**
** 3) It is permissible for pv and upv to be the same array.
**
lib/Astro/PAL.pm view on Meta::CPAN
croak "palAopqk: Need 14 elements in star-independent apparent to observed array"
unless @aoprms == 14;
return pal_Aopqk( $rap, $dap, \@aoprms );
}
=item palAoppat
For the C API the calling convention is to modify the AOPRMS array in
place, for the perl API we accept the AOPRMS array but return the
updated version.
@aoprms = Astro::PAL::palAoppat( $date, \@aoprms );
@aoprms = Astro::PAL::palAoppat( $date, @aoprms );
=cut
sub palAoppat {
croak 'Usage: palAoppat( date, @aoprms )'
unless @_ > 1;
lib/Astro/PAL.xs view on Meta::CPAN
&epoch1,&orbi1,&anode1,&perih1,&aorq1,&e1,&am1,&jstat);
XPUSHs(sv_2mortal(newSVnv(epoch1)));
XPUSHs(sv_2mortal(newSVnv(orbi1)));
XPUSHs(sv_2mortal(newSVnv(anode1)));
XPUSHs(sv_2mortal(newSVnv(perih1)));
XPUSHs(sv_2mortal(newSVnv(aorq1)));
XPUSHs(sv_2mortal(newSVnv(e1)));
XPUSHs(sv_2mortal(newSVnv(am1)));
XPUSHs(sv_2mortal(newSViv(jstat)));
# Returns updated u
void
palPertue(date, u)
double date
double * u
PREINIT:
int jstat;
PPCODE:
jstat = 0;
palPertue(date,u,&jstat);
palsrc/palDfltin.c view on Meta::CPAN
* Invocation:
* void palDfltin( const char * string, int *nstrt,
* double *dreslt, int *jflag );
* Arguments:
* string = const char * (Given)
* String containing number to be decoded.
* nstrt = int * (Given and Returned)
* Character number indicating where decoding should start.
* On output its value is updated to be the location of the
* possible next value. For compatibility with SLA the first
* character is index 1.
* dreslt = double * (Returned)
* Result. Not updated when jflag=1.
* jflag = int * (Returned)
* status: -1 = -OK, 0 = +OK, 1 = null, 2 = error
* Description:
* Extracts a number from an input string starting at the specified
* index.
* Authors:
* TIMJ: Tim Jenness (JAC, Hawaii)
* {enter_new_authors_here}
palsrc/palIntin.c view on Meta::CPAN
* Invocation:
* void palIntin( const char * string, int *nstrt,
* long *ireslt, int *jflag );
* Arguments:
* string = const char * (Given)
* String containing number to be decoded.
* nstrt = int * (Given and Returned)
* Character number indicating where decoding should start.
* On output its value is updated to be the location of the
* possible next value. For compatibility with SLA the first
* character is index 1.
* ireslt = long * (Returned)
* Result. Not updated when jflag=1.
* jflag = int * (Returned)
* status: -1 = -OK, 0 = +OK, 1 = null, 2 = error
* Description:
* Extracts a number from an input string starting at the specified
* index.
* Authors:
* TIMJ: Tim Jenness (JAC, Hawaii)
* {enter_new_authors_here}
palsrc/palInvf.c view on Meta::CPAN
* palFitxy, palPxy, palXy2xy and palDcmpf
* Authors:
* PTW: Pat Wallace (STFC)
* GSB: Graham Bell (EAO)
* History:
* 1990-04-11 (PTW):
* SLALIB implementation.
* 2004-12-26 (PTW):
* Documentation updated.
* 2018-10-23 (GSB):
* Initial version in C.
* Copyright:
* Copyright P.T.Wallace. All rights reserved.
* Copyright (C) 2018 East Asian Observatory.
* Licence:
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
palsrc/palPertel.c view on Meta::CPAN
* double *epoch1, double *orbi1, double *anode1,
* double *perih1, double *aorq1, double *e1, double *am1,
* int *jstat );
* Arguments:
* jform = int (Given)
* Element set actually returned (1-3; Note 6)
* date0 = double (Given)
* Date of osculation (TT MJD) for the given elements.
* date1 = double (Given)
* Date of osculation (TT MJD) for the updated elements.
* epoch0 = double (Given)
* Epoch of elements (TT MJD)
* orbi0 = double (Given)
* inclination (radians)
* anode0 = double (Given)
* longitude of the ascending node (radians)
* perih0 = double (Given)
* longitude or argument of perihelion (radians)
* aorq0 = double (Given)
* mean distance or perihelion distance (AU)
palsrc/palPertel.c view on Meta::CPAN
* AORQ = perihelion distance, q (AU)
* E = eccentricity, e
*
* - DATE0, DATE1, EPOCH0 and EPOCH1 are all instants of time in
* the TT timescale (formerly Ephemeris Time, ET), expressed
* as Modified Julian Dates (JD-2400000.5).
*
* DATE0 is the instant at which the given (i.e. unperturbed)
* osculating elements are correct.
*
* DATE1 is the specified instant at which the updated osculating
* elements are correct.
*
* EPOCH0 and EPOCH1 will be the same as DATE0 and DATE1
* (respectively) for the JFORM=2 case, normally used for minor
* planets. For the JFORM=3 case, the two epochs will refer to
* perihelion passage and so will not, in general, be the same as
* DATE0 and/or DATE1 though they may be similar to one another.
* - The elements are with respect to the J2000 ecliptic and equinox.
* - Unused elements (AM0 and AM1 for JFORM=3) are not accessed.
* - See the palPertue routine for details of the algorithm used.
palsrc/palPertue.c view on Meta::CPAN
* Within predetermined limits, the timestep for the numerical
* integration is varied in length in inverse proportion to the
* magnitude of the net acceleration on the body from the major
* planets.
*
* The numerical integration requires estimates of the major-planet
* motions. Approximate positions for the major planets (Pluto
* alone is omitted) are obtained from the routine palPlanet. Two
* levels of interpolation are used, to enhance speed without
* significantly degrading accuracy. At a low frequency, the routine
* palPlanet is called to generate updated position+velocity "state
* vectors". The only task remaining to be carried out at the full
* frequency (i.e. at each integration step) is to use the state
* vectors to extrapolate the planetary positions. In place of a
* strictly linear extrapolation, some allowance is made for the
* curvature of the orbit by scaling back the radius vector as the
* linear extrapolation goes off at a tangent.
*
* Various other approximations are made. For example, perturbations
* by Pluto and the minor planets are neglected and relativistic
* effects are not taken into account.
palsrc/palPertue.c view on Meta::CPAN
1047.355, 3498.5, 22869., 19314.,
332946.038, 27068709.
};
/* Preset the status to OK. */
*jstat = 0;
/* Copy the final epoch. */
TFINAL = date;
/* Copy the elements (which will be periodically updated). */
for (I=0; I<13; I++) {
UL[I] = u[I];
}
/* Initialize the working reference epoch. */
T0=UL[2];
/* Total timespan (days) and hence time left. */
TSPAN = TFINAL-T0;
TLEFT = TSPAN;
palsrc/palPertue.c view on Meta::CPAN
if (J != 0) goto ABORT;
/* Adjust the timespan and time left. */
TSPAN = TFINAL-T0;
TLEFT = TSPAN;
}
/* Next timestep. */
}
/* Return the updated universal-element set. */
for (I=0; I<13; I++) {
u[I] = UL[I];
}
/* Finished. */
return;
/* Miscellaneous numerical error. */
ABORT:
*jstat = -1;
palsrc/palUe2pv.c view on Meta::CPAN
* Type of Module:
* Library routine
* Invocation:
* void palUe2pv( double date, double u[13], double pv[6], int *jstat );
* Arguments:
* date = double (Given)
* TT Modified Julian date (JD-2400000.5).
* u = double [13] (Given & Returned)
* Universal orbital elements (updated, see note 1)
* given (0) combined mass (M+m)
* " (1) total energy of the orbit (alpha)
* " (2) reference (osculating) epoch (t0)
* " (3-5) position at reference epoch (r0)
* " (6-8) velocity at reference epoch (v0)
* " (9) heliocentric distance at reference epoch
* " (10) r0.v0
* returned (11) date (t)
* " (12) universal eccentric anomaly (psi) of date
* pv = double [6] (Returned)