SuperNOVAS v1.3
The NOVAS C library, made better
Loading...
Searching...
No Matches
util.c File Reference

Functions

double d_light (const double *pos_src, const double *pos_body)
 
void novas_debug (enum novas_debug_mode mode)
 ==========================================================================
 
double novas_equ_sep (double ra1, double dec1, double ra2, double dec2)
 
enum novas_debug_mode novas_get_debug_mode ()
 
double novas_norm_ang (double angle)
 
double novas_sep (double lon1, double lat1, double lon2, double lat2)
 
double novas_vlen (const double *restrict v)
 
int radec2vector (double ra, double dec, double dist, double *restrict pos)
 
int spin (double angle, const double *in, double *out)
 
short vector2radec (const double *restrict pos, double *restrict ra, double *restrict dec)
 

Variables

int novas_inv_max_iter = 100
 

Detailed Description

Date
Created on Mar 6, 2025
Author
G. Kaplan and A. Kovacs

Various commonly used routines used throughout the SuperNOVAS library.

Function Documentation

◆ d_light()

double d_light ( const double *  pos_src,
const double *  pos_body 
)

Returns the difference in light-time, for a star, between the barycenter of the solar system and the observer (or the geocenter) (Usage A).

Alternatively (Usage B), this function returns the light-time from the observer (or the geocenter) to a point on a light ray that is closest to a specific solar system body. For this purpose, 'pos_src' is the position vector toward observed object, with respect to origin at observer (or the geocenter); 'pos_body' is the position vector of solar system body, with respect to origin at observer (or the geocenter), components in AU; and the returned value is the light time to point on line defined by 'pos' that is closest to solar system body (positive if light passes body before hitting observer, i.e., if 'pos_body' is within 90 degrees of 'pos_src').

NOTES:

  1. This function is called by place()
Parameters
pos_srcPosition vector towards observed object, with respect to the SSB (Usage A), or relative to the observer / geocenter (Usage B).
pos_body[AU] Position of observer relative to SSB (Usage A), or position of intermediate solar-system body with respect to the observer / geocenter (Usage B).
Returns
[day] Difference in light time to observer, either relative to SSB (Usage A) or relative intermediate solar-system body (Usage B); or else NAN if either of the input arguments is NULL.
See also
place()

References novas_vlen().

◆ novas_debug()

void novas_debug ( enum novas_debug_mode  mode)

==========================================================================

Enables or disables reporting errors and traces to the standard error stream.

Parameters
modeNOVAS_DEBUG_OFF (0; or <0), NOVAS_DEBUG_ON (1), or NOVAS_DEBUG_EXTRA (2; or >2).
Since
1.0
Author
Attila Kovacs
See also
novas_get_debug_mode()

References NOVAS_DEBUG_EXTRA.

◆ novas_equ_sep()

double novas_equ_sep ( double  ra1,
double  dec1,
double  ra2,
double  dec2 
)

Returns the angular separation of two equatorial locations on a sphere.

Parameters
ra1[h] right ascension of first location
dec1[deg] declination of first location
ra2[h] right ascension of second location
dec2[deg] declination of second location
Returns
[deg] the angular separation of the two locations.
Since
1.3
Author
Attila Kovacs
See also
novas_sep()
novas_sun_angle()
novas_moon_angle()

References novas_sep().

◆ novas_get_debug_mode()

enum novas_debug_mode novas_get_debug_mode ( )

Returns the current, thread-local, mode for reporting errors encountered (and traces).

Returns
The current debug mode in the calling thread.
Since
1.0
Author
Attila Kovacs
See also
novas_debug()

◆ novas_norm_ang()

double novas_norm_ang ( double  angle)

Returns the normalized angle in the [0:2π) range.

Parameters
angle[rad] an angle in radians.
Returns
[rad] the normalized angle in the [0:2π) range.
Since
1.0
Author
Attila Kovacs

References TWOPI.

◆ novas_sep()

double novas_sep ( double  lon1,
double  lat1,
double  lon2,
double  lat2 
)

Returns the angular separation of two locations on a sphere.

Parameters
lon1[deg] longitude of first location
lat1[deg] latitude of first location
lon2[deg] longitude of second location
lat2[deg] latitude of second location
Returns
[deg] the angular separation of the two locations.
Since
1.3
Author
Attila Kovacs
See also
novas_equ_sep()
novas_sun_angle()
novas_moon_angle()

◆ novas_vlen()

double novas_vlen ( const double *restrict  v)

(for internal use only) Calculates the length of a 3-vector

Parameters
vPointer to a 3-component (x, y, z) vector. The argument cannot be NULL
Returns
the length of the vector
See also
vdot()
vdist()
Since
1.0
Author
Attila Kovacs

◆ radec2vector()

int radec2vector ( double  ra,
double  dec,
double  dist,
double *restrict  pos 
)

Converts equatorial spherical coordinates to a vector (equatorial rectangular coordinates).

Parameters
ra[h] Right ascension (hours).
dec[deg] Declination (degrees).
dist[AU] Distance (AU)
[out]pos[AU] Position 3-vector, equatorial rectangular coordinates (AU).
Returns
0 if successful, or -1 if the vector argument is NULL.
See also
vector2radec()
starvectors()

◆ spin()

int spin ( double  angle,
const double *  in,
double *  out 
)

Transforms a vector from one coordinate system to another with same origin and axes rotated about the z-axis.

REFERENCES:

  1. Kaplan, G. H. et. al. (1989). Astron. Journ. 97, 1197-1210.
Parameters
angle[deg] Angle of coordinate system rotation, positive counterclockwise when viewed from +z, in degrees.
inInput position vector.
[out]outPosition vector expressed in new coordinate system rotated about z by 'angle'. It can be the same vector as the input.
Returns
0 if successful, or -1 if the output vector is NULL.

References TWOPI.

◆ vector2radec()

short vector2radec ( const double *restrict  pos,
double *restrict  ra,
double *restrict  dec 
)

Converts an vector in equatorial rectangular coordinates to equatorial spherical coordinates.

REFERENCES:

  1. Kaplan, G. H. et. al. (1989). Astron. Journ. 97, 1197-1210.
Parameters
posPosition 3-vector, equatorial rectangular coordinates.
[out]ra[h] Right ascension in hours [0:24] or NAN if the position vector is NULL or a null-vector. It may be NULL if notrequired.
[out]dec[deg] Declination in degrees [-90:90] or NAN if the position vector is NULL or a null-vector. It may be NULL if not required.
Returns
0 if successful, -1 of any of the arguments are NULL, or 1 if all input components are 0 so 'ra' and 'dec' are indeterminate, or else 2 if both x and y are zero, but z is nonzero, and so 'ra' is indeterminate.
See also
radec2vector()

Variable Documentation

◆ novas_inv_max_iter

int novas_inv_max_iter = 100

Maximum number of iterations for convergent inverse calculations. Most iterative inverse functions should normally converge in a handful of iterations. In some pathological cases more iterations may be required. This variable sets an absolute maximum for the number of iterations in order to avoid runaway (zombie) behaviour. If inverse functions faile to converge, they will return a value indicating an error, and errno should be set to ECANCELED.

Since
1.1