v1.3.0 #165
Closed
attipaci
announced in
Announcements
v1.3.0
#165
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Feature release with many new convenience functions, such as for handling times and angles as strings; calculating rise, set, transit times; and other common astrometric calculations. In addition, the release brings various changes to improve performance.
Fixed
transform_cat()corrections to parallax when changing epochs. #116:transform_cat()to update parallax to the recalculated value when precessing or changing epochs. (This was a NOVAS C 3.1 bug.)transform_cat()insufficient checking forout_idlength #128:transform_cat()had insufficient string length checking ofout_idparameter. Prior to the fix it checked for the longer object name size instead of the catalog name size. However, even if longer than expected input names were left uncaught, only the appropriatre number of characters were used -- hence it broke nothing, only failed to remind the caller (with an error) when the supplied name was too long.Reorganize source code into smaller modules #139: Legacy linking of external
solarsystem()/solarsystem_hp()provider modules was blocked bysolsys-ephem.cinadvertently definining these functions whenBUILTIN_SOLSYS_EPHEMwas set to 1 (default) during the build, even though it was not supposed to.Use of TT vs TDB dependent on accuracy #156:
obs_posvel()calledgeo_posvel()with TDB instead of TT. It less than a 2 ms difference, so not typically signifficant, unless <10-m level poitioning is required for Earth-orbiting satellites.Added
New functions for v1.3 #113: New
novas_frame_lst()convenience function to readily return the Local (apparent) Sidereal Time for a given Earth-based observing frame.New functions for v1.3 #113: New
novas_hms_hours()andnovas_dms_degrees()convenience functions to make it easier to parse HMS or DMS based time or angle values, returning the result in units of hours or degrees, appropriately for use in SuperNOVAS.New functions for v1.3 #113: New
novas_rises_above()andnovas_sets_below()functions to return the date/time a source rises above or sets below a specific elevation on a given date, andnovas_transit_time()to calculate the time a source transits over the local meridian. (For Earth-based observers only). rise/transit/set times calculation #140, rise/set times discrepancy 2 #146: Further fixes to these calculations after the v1.3.0-rc5 release candidate [thanks to @valeriy-sokoloff].New functions for v1.3 #113: New
novas_helio_dist()function to calculate the heliocentric distance of a Solar-system body on a given date. Thenovas_solar_power()function can be used to estimate the incident Solar power on a Solar-system body, whilenovas_solar_illum()can be used to calculate the fraction of a spherical body that is illuminated by the Sun seen from the observer location.New functions for v1.3 #113: New
novas_hpa()andnovas_epa()functions to calculate the parallactic angle (a.k.a. vertical position angle) for a given location on sky, using the local horizontal coordinates, or else the equatorial position, respectively. The parallactic angle (PA) can be useful to convert local Cartesian offsets (e.g. from a flat image or detector array) between the local horizontal and equatorial orientations, e.g. via the newly addednovas_h2e_offset()ornovas_e2h_offset()functions. The conversion between offsets and absolute coordinates usually requires a WCS projections, such as described in Calabretta & Greisen 2002.New functions for v1.3 #113: New
novas_sep(),novas_equ_sep(), andnovas_object_sep()functions can be used to calculate the precise apparent distance between to spherical or equatorial locations, or between two sources, respectively.novas_sun_angle()andnovas_moon_angle()can be used to calculate the apparent angular distance of sources from the Sun and Moon, respectively.New functions for v1.3 #113: New
novas_observableandnovas_trackdata structures to provide second order Taylor series expansion of the apparent horizontal or equatorial positions, distances, and redshifts for sources. They can be calculated with the newly addednovas_hor_track()ornovas_equ_track()functions. Such tracking values, including rates and accelerations, can be directly useful for controlling telescope drives in horizontal or equatorial mounts to track sources (hence the name). You can also obtain instantaneous projected (extrapolated) positions from the tracking parameters vianovas_track_pos()at low computational cost.New functions for v1.3 #113: New
novas_los_to_xyz()andnovas_xyz_to_los()functions to convert between line-of-sight (δφ, δθ, δr) vectors and rectangular equatorial (δx, δy, δz) vectors.New functions for v1.3 #113: New
novas_xyz_to_uvw()andnovas_uvw_to_xzy()functions to convert between ITRS Earth locations (absolute or differential) to equatorial projections along a line of sight in the direction of a source. Such projections are oft used in interferometry.LSR vs SSB-based radial velocities for
cat_entry#114: Newnovas_lsr_to_ssb_vel()can be used to convert velocity vectors referenced to the LSR to Solar-System Barycentric velocities. And,novas_ssb_to_lsr_vel()to provide the inverse conversion.Add benchmarks #117: Added benchmarks under the
benchmark/folder, for SuperNOVAS as well as equivalent benchmarks for astropy. To run the SuperNOVAS benchmarks, simplymake benchmarkin the distribution directory.Additional date/time functions #118: New
novas_parse_date()/novas_parse_date_format()to parse date/time specifications,novas_parse_dms()andnovas_parse_hms()to return hours and degrees for HMS and DMS specifications, as well as the updated parse position.Additional date/time functions #118: New
novas_timescale_for_string()to match timescale constants to string representations, such as "UTC", or "TAI", andnovas_print_timescale()to convert to string representation.Additional date/time functions #118: New
novas_iso_timestamp()to print UTC timestamps in ISO date format with millisecond precision, andnovas_timestamp()to print timestamps in specific timescales. Incorrect ISO timestamp formatting in some cases #151: Various fixes to new timestamping afterrc7. [thanks to @valeriy-sokoloff]Disambiguate Gregorian and Roman/Julian calendars. #122: New
novas_jd_to_date(), andnovas_jd_from_date()which convert between JD day and calendar dates using the specific type of calendar: Gregorian, Roman/Julian, or the conventional calendar of date.Further date parsing functions #131: New
novas_date()andnovas_date_scale()for the simplest conversion of string times to Julian days, and in case of the latter also to a corresponding timescale (without returning a parse position).Add novas_parse_timescale() #133: New
novas_parse_timescale()to parse a timescale from a string specification, and return the updated parse position after also.Add novas_parse_hours() / novas_parse_degrees() #134: New
novas_parse_hours()andnovas_parse_degrees()to convert strings in decimal or HMS/DMS formats to floating point values for SuperNOVAS, and return the parse position after the time/angle specification.Add
novas_str_degrees()andnovas_str_hours()#135: Newnovas_str_hours()andnovas_str_degrees()for the simplest conversion of strings in decimal or HMS/DMS formats to floating point values for SuperNOVAS (without retruning a parse position).Improved support for coordinate epochs #137: New
novas_epoch()to convert string coordinate system specifications to the Julian date of the corresponding epoch, and newmake_cat_object_sys()andmake_redshifted_object_sys()to make it simpler to define ICRS catalog sources in the coordinate system of choice.Add FORTIFY config setting #143: Added
FORTIFYbuild configuration setting to enable gcc source code fortification checking by setting the_FORTIFY_SOURCEmacro to the specified value. It is now used with a value of 3 in the build and test CIs.Use standard C initializers instead of non-standard {} #150: Further initializers for SuperNOVAS structures that can be used to empty initialize data.
Add novas_print_hms() / novas_print_dms() functions #154: Added
novas_print_hms()andnovas_print_dms()functions to convert time / angles to their HMS/DMS string representations, with the chosen separators, and the desired decimal places on the seconds.Add novas_parse_iso_date() #155: Added
novas_parse_iso_date()for pasing ISO 8601 timestamps, including those expressed in the proleptic Gregorian calendar prior to the Gregorian calendar reform of 1582, for which the ISO 8601 timestamp differs from the astronomical calendar date assumed bynovas_parse_timestamp().Added
example-time.candexample-rise-set.cunderexamples/, for demonstrating date/time handling functions and rise, set, and transit time calculations.Changed
Use
restrictkeyword to enforce unaliased pointer args #130 Use C99restrictkeyword to prevent pointer argument aliasing. Modern compilers will warn if restricted pointer arguments are aliased. At the least, it is a hint to users that pointer arguments marked as such should be distinct from (not overlapping with) the other pointer arguments.Reorganize source code into smaller modules #139 Reorganized code into more manageably sized modules. It also makes the API documentation by source file more logically organized.
Reorganize source code into smaller modules #139: Legacy source code moved to
legacy/folder.Use standard C initializers instead of non-standard {} #150: Use standard C initializers instead of the non-standard empty backets
{}. While the empty brackets have been OK withgccfor quite a while, they only became standard in C23. Other compilers might barf at their use.cpp compatible naming #152: For C++ compatibility do not use
classas a parameter name. [thanks to @valeriy-sokoloff]Use of TT vs TDB dependent on accuracy #156: Omit TDB-TT time difference, a maximum of 2 ms, in Earth tilt calculations, where it really does not make any difference. As a result some calculations are now faster than before.
Use of TT vs TDB dependent on accuracy #156: Higher precision time match requirement for re-using cached ephemeris calculations.
Use of TT vs TDB dependent on accuracy #156:
tt2tdb()now caches last calculation also.Use of TT vs TDB dependent on accuracy #156: Eliminate redundant caching of calculations. (Also in Tweak which calculations are cached #158).
Use of TT vs TDB dependent on accuracy #156: Tighten
precession()time checking.Use the IAU 2000B nutation series for reduced (mas-level) accuracy #157: Switch to
iau2000b()as the low-precision nutation series. It is good to about 1 arcsec, which is the promised precision in reduced accuracy, but a lot faster than thenu2000k()series, which in turn is barely faster than the fulliau2000a()nutation series.Use the IAU 2000B nutation series for reduced (mas-level) accuracy #157:
fund_args()to always calculate full polynomial expansion. There is little performance to gain from the truncation we used in the vicinity of J2000. No real change in the results.Add caching to
ee_ct()#159: Add caching toee_ct(). Just in case someone wants to call it repeatedly with the same parameters, it will be much much faster now.In reduced accuracy mode apply gravitational deflection for the Sun only. In prior versions, deflection corrections were applied for Earth too. However, these are below the mas-level accuracy promised in reduced accuracy mode, and without it, the calculations for
place()andnovas_sky_pos()are significantly faster.Modified
julian_date()to add range checking for month and day arguments, and returnNAN(witherrnoset toEINVAL) if the input values are invalid.julian_date()andcal_date()now use astronomical calendar dates instead of the fixed Gregorian dates of before. Astronomical dates are Julian/Roman calendar dates prior to the Gregorian calendar reform of 1582.precession()to cache matrices to/from J2000 separately.Use
SIZE_OF_OBJ_NAMEandSIZE_OF_CAT_NAMEinstead ofsizeof(obj->starname)andsizeof(obj->catalog)internally for improved portability.Various arithmetic simplifications to give a minor performance boost.
Updated
README.mdfor v1.3 and benchmarks, including comparisons to astropy.Default
THREAD_LOCALdefinition extended to C23thread_localkeyword also.This discussion was created from the release v1.3.0.
Beta Was this translation helpful? Give feedback.
All reactions