[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*To*: "'Michael Koppelman'" <lolife@bitstream.net>, TASS <tass@listserv.wwa.com>*Subject*: RE: GJD to HJD*From*: "Creager, Robert S" <CreagRS@LOUISVILLE.STORTEK.COM>*Date*: Thu, 13 Jun 2002 14:36:04 -0600*Sender*: owner-tass@listserv.wwa.com

A thought. Arne indicates that SLA can do these calculations (I believe), and there is a perl module which interfaces with SLA (http://search.cpan.org/doc/TJENNESS/Astro-SLA-0.95/SLA.pm)... Cheers, Rob > -----Original Message----- > From: Michael Koppelman [mailto:lolife@bitstream.net] > Sent: Thursday, June 13, 2002 1:58 PM > To: TASS > Subject: Re: GJD to HJD > > > I wrote some perl code to do this conversion. I tried to use Dirk's > fortran code and John's basic code and I was checking them > against Lew > Cook's spread sheet. > > The perl-ized fortran code does not match Cook's spreadsheet. > I'm guessing > this must have to do with operator precedence or something > like that in > the perl code. The fortran was pretty basic once I got into it. > > The basic code matches Cook's spreadsheet except for the > sign. For the > example I'm using, the spreadsheet gets 0.001172325 and the perl-ized > basic gets -0.0011722. The fortran code, for reference, gets > -0.00273274334579997. > > The code is below. jd2hjd is the fortran code and j2h is the > basic code. > Can you see anything odd? > > Thanks! > Michael > > > #!/usr/local/bin/perl > > use strict; > > # expects ra and dec in decimal degrees: example: > # echo "2452431.7738252 179.4697 6.3752" | perl helio.pl > > while (<STDIN>) { > chop; > my $line = $_; > my( $jd, $ra, $dec ) = split( /\s+/, $line ); > my $correction = &jd2hjd( $jd, $ra, $dec ); > print "JD is $jd\n"; > print "correction is $correction\n"; > print "HJD is ", $jd+$correction, "\n"; > print "----\n"; > $correction = &j2h( $jd, $ra, $dec ); > print "JD is $jd\n"; > print "correction is $correction\n"; > print "HJD is ", $jd+$correction, "\n"; > } > > sub jd2hjd { > my( $jd, $ra, $dec ) = @_; > > my $pi = atan2(1,1)*4; > > $ra = $ra * $pi / 180; > $dec = $dec * $pi / 180; > > my $n = $jd - 2451545; > my $l = (4.89495042 + 0.017202792 * $n) % (2*$pi); > my $g = (6.24004077 + 0.01720197 * $n) % (2*$pi); > my $theta = $l + 0.0334231 * sin($g) + 0.0003491 * sin(2 * $g); > my $r = 1.00014 - .01671 * cos($g) - .00014 * cos(2 * $g); > my $eps = 0.4090877 - 0.000000007 * $n; > my $a1 = cos($theta) * cos($ra) * cos($dec); > my $a2 = sin($theta) * (sin($eps) * sin($dec) + cos($eps) * > cos($dec) * sin($ra)); > my $helio_corr = -0.0057755 * $r * ($a1 + $a2); > return( $helio_corr ); > } > > sub j2h { > my ($jd, $ra, $dec ) = @_; > > my $rad = 57.2957795132; > > my $sct = ( $jd - 2451545 ) / 36525; > my $scl = 280.4659 + (35999.371946 * $sct); > my $scm = ($scl - 282.9405) - (0.322204 * $sct); > my $lambda = $scl + (1.9148 * sin($scm / $rad)) + (.02 * > sin((2 * $scm) > /$rad)); > my $nu = $lambda - $scl + $scm; > my $scr = 0.99972 / (1 + (0.01671 * cos($nu / $rad))); > my $sclong = cos($dec / $rad) * cos($ra / $rad); > my $scsm = (0.91748 * cos($dec / $rad) * sin($ra / > $rad)) + (0.39778 * > sin($dec / $rad)); > my $tau = 0.005775 * $scr * (($sclong * cos($lambda / > $rad)) + ($scsm > * sin($lambda / $rad))); > return( $tau ); > } > >

**Follow-Ups**:**Re: GJD to HJD***From:*Michael Koppelman <lolife@bitstream.net>

**Re: GJD to HJD***From:*Michael Koppelman <lolife@bitstream.net>

**Re: GJD to HJD***From:*Michael Koppelman <lolife@bitstream.net>

- Prev by Date:
**Mark IV pipeline produces JD, not HJD** - Next by Date:
**Re: Need some data samples** - Prev by thread:
**Re: GJD to HJD** - Next by thread:
**Re: GJD to HJD** - Index(es):