place Subroutine

public subroutine place(tjd, object, locatn, icoord, star, observ, skypos)

THIS SUBROUTINE COMPUTES THE APPARENT DIRECTION OF A STAR OR SOLAR SYSTEM BODY AT A SPECIFIED TIME AND IN A SPECIFIED COORDINATE SYSTEM. BASED ON KAPLAN, ET AL. (1989), ASTRONOMICAL JOURNAL 97, 1197-1210, WITH SOME ENHANCEMENTS FROM KLIONER (2003), ASTRONOMICAL JOURNAL 125, 1580-1597.

 TJD    = TT JULIAN DATE FOR PLACE (IN)
 OBJECT = CHARACTER STRING IDENTIFYING OBJECT OF INTEREST (IN)
          FOR SOLAR SYSTEM
          BODY,             SPECIFY THE NAME USING ALL UPPER-
                            CASE LETTERS ('SUN', 'MOON',
                            'JUPITER', ETC.),
                            - OR -
                            SPECIFY THE BODY ID NUMBER
                            IN A 4-CHARACTER STRING OF THE
                            FORM '=NNN', WHERE NNN IS THE
                            BODY ID NUMBER
          FOR STAR,         PROVIDE A BLANK STRING, THE WORD
                            'STAR', OR ANY STRING BEGINNING
                            WITH '*'
 LOCATN = INTEGER CODE SPECIFYING LOCATION OF OBSERVER (IN)
          SET LOCATN=0 FOR OBSERVER AT GEOCENTER
          SET LOCATN=1 FOR OBSERVER ON SURFACE OF EARTH
          SET LOCATN=2 FOR OBSERVER ON NEAR-EARTH SPACECRAFT
 ICOORD = INTEGER CODE SPECIFYING COORDINATE SYSTEM OF OUTPUT
          POSITION (IN)
          SET ICOORD=0 FOR GCRS (OR 'LOCAL GCRS')
          SET ICOORD=1 FOR TRUE EQUATOR AND EQUINOX OF DATE
          SET ICOORD=2 FOR TRUE EQUATOR AND CIO OF DATE
          SET ICOORD=3 FOR ASTROMETRIC COORDINATES, I.E.,
                       WITHOUT LIGHT DEFLECTION OR ABERRATION
 STAR   = ARRAY OF CATALOG DATA FOR STAR (IN)
          (NOT USED IF SOLAR SYSTEM BODY REQUESTED)
          STAR(1) = ICRS RIGHT ASCENSION IN HOURS
          STAR(2) = ICRS DECLINATION IN DEGREES
          STAR(3) = ICRS PROPER MOTION IN RA IN
                    MILLIARCSECONDS/YEAR
          STAR(4) = ICRS PROPER MOTION IN DEC IN
                    MILLIARCSECONDS/YEAR
          STAR(5) = PARALLAX IN MILLIARCSECONDS
          STAR(6) = RADIAL VELOCITY IN KILOMETERS/SECOND
          FURTHER STAR ARRAY ELEMENTS ARE NOT USED HERE
          BUT ARE RESERVED FOR FUTURE USE
 OBSERV = ARRAY OF DATA SPECIFYING LOCATION OF OBSERVER (IN)
          (NOT USED IF LOCATN=0)
          FOR LOCATN=1,
          OBSERV(1) = GEODETIC LONGITUDE (WGS-84) OF OBSERVER
                      (EAST +) IN DEGREES
          OBSERV(2) = GEODETIC LATITUDE (WGS-84) OF OBSERVER
                      (NORTH +) IN DEGREES
          OBSERV(3) = HEIGHT OF OBSERVER ABOVE ELLIPSOID
                      IN METERS
          OBSERV(4) = VALUE OF DELTA-T IN SECONDS
                      (DELTA-T=TT-UT1)
          OBSERV(5) = (NOT USED, RESERVED FOR FUTURE USE)
          OBSERV(6) = (NOT USED, RESERVED FOR FUTURE USE)
          FOR LOCATN=2,
          OBSERV(1) = GEOCENTRIC X IN KILOMETERS
          OBSERV(2) = GEOCENTRIC Y IN KILOMETERS
          OBSERV(3) = GEOCENTRIC Z IN KILOMETERS
          OBSERV(4) = GEOCENTRIC X-DOT IN KILOMETERS/SECOND
          OBSERV(5) = GEOCENTRIC Y-DOT IN KILOMETERS/SECOND
          OBSERV(6) = GEOCENTRIC Z-DOT IN KILOMETERS/SECOND
          WITH RESPECT TO TRUE EQUATOR AND EQUINOX OF DATE
 SKYPOS = ARRAY OF OUTPUT DATA SPECIFYING OBJECT'S PLACE
          ON THE SKY AT TIME TJD, WITH RESPECT TO THE
          SPECIFIED OUTPUT COORDINATE SYSTEM (OUT)
          SKYPOS(1) = X, DIMENSIONLESS      UNIT VECTOR
          SKYPOS(2) = Y, DIMENSIONLESS      TOWARD OBJECT
          SKYPOS(3) = Z, DIMENSIONLESS
          SKYPOS(4) = APPARENT, TOPOCENTRIC, OR ASTROMETRIC
                      RIGHT ASCENSION IN HOURS
          SKYPOS(5) = APPARENT, TOPOCENTRIC, OR ASTROMETRIC
                      DECLINATION IN DEGREES
          SKYPOS(6) = TRUE (GEOMETRIC, EUCLIDIAN) DISTANCE
                      TO SOLAR SYSTEM BODY IN AU AT TIME TJD,
                      OR 0.D0 FOR STAR
          SKYPOS(7) = RADIAL VELOCITY IN KILOMETERS/SECOND
          FURTHER SKYPOS ARRAY ELEMENTS ARE NOT USED HERE
          BUT ARE RESERVED FOR FUTURE USE

NOTE 1: VALUES OF LOCATN AND ICOORD FOR VARIOUS STANDARD KINDS OF PLACE: LOCATN=0 AND ICOORD=1 APPARENT PLACE LOCATN=1 AND ICOORD=1 TOPOCENTRIC PLACE LOCATN=0 AND ICOORD=0 VIRTUAL PLACE LOCATN=1 AND ICOORD=0 LOCAL PLACE LOCATN=0 AND ICOORD=3 ASTROMETRIC PLACE LOCATN=1 AND ICOORD=3 TOPOCENTRIC ASTROMETRIC PLACE

NOTE 2: ARRAYS STAR AND SKYPOS MAY BE EXPANDED IN THE FUTURE, AND THIS CAN BE ALLOWED FOR IN THE CALLING CODE BY DIMENSIONING THESE ARRAYS WITH 20 AND 10 ELEMENTS, RESPECTIVELY, EVEN THOUGH ELEMENTS BEYOND STAR(6) AND SKYPOS(7) ARE NOT NOW REFERRED TO IN THIS SUBROUTINE.

NOTE 3: IF LOCATN=1 AND OBSERV(4)=0.D0, THE VALUE OF DELTA-T WILL BE OBTAINED FROM GETDT, WHICH PROVIDES THE LAST VALUE OF DELTA-T DEFINED BY THE USER VIA CALL TO SETDT.

NOTE 4: SKYPOS(7), THE RADIAL VELOCITY, IS THE PREDICTED RADIAL VELOCITY MEASURE (Z) TIMES THE SPEED OF LIGHT, AN INHERENTLY SPECTROSCOPIC MEASURE. FOR A STAR, IT INCLUDES ALL EFFECTS, SUCH AS GRAVITATIONAL RED SHIFT, CONTAINED IN THE CATALOG BARYCENTRIC RADIAL VELOCITY MEASURE, WHICH IS ASSUMED GIVEN IN STAR(6). FOR A SOLAR SYSTEM BODY, IT APPLIES TO A FICTITIOUS EMITTER AT THE CENTER OF THE OBSERVED OBJECT, ASSUMED MASSLESS (NO GRAVITATIONAL RED SHIFT), AND DOES NOT IN GENERAL APPLY TO REFLECTED LIGHT.

Arguments

Type IntentOptional Attributes Name
real(kind=wp) :: tjd
character(len=*) :: object
integer :: locatn
integer :: icoord
real(kind=wp), dimension(*) :: star
real(kind=wp), dimension(6) :: observ
real(kind=wp), dimension(*) :: skypos

Calls

proc~~place~~CallsGraph proc~place novas_module::place proc~aberat novas_module::aberat proc~place->proc~aberat proc~angles novas_module::angles proc~place->proc~angles proc~astcon novas_module::astcon proc~place->proc~astcon proc~ciobas novas_module::ciobas proc~place->proc~ciobas proc~cioloc novas_module::cioloc proc~place->proc~cioloc proc~dlight novas_module::dlight proc~place->proc~dlight proc~frame novas_module::frame proc~place->proc~frame proc~geocen novas_module::geocen proc~place->proc~geocen proc~geopos novas_module::geopos proc~place->proc~geopos proc~grvdef~2 novas_module::grvdef proc~place->proc~grvdef~2 proc~limang novas_module::limang proc~place->proc~limang proc~littim novas_module::littim proc~place->proc~littim proc~nutate novas_module::nutate proc~place->proc~nutate proc~preces novas_module::preces proc~place->proc~preces proc~propmo novas_module::propmo proc~place->proc~propmo proc~radvl novas_module::radvl proc~place->proc~radvl proc~times novas_module::times proc~place->proc~times proc~vectrs novas_module::vectrs proc~place->proc~vectrs setvec setvec proc~place->setvec solsys solsys proc~place->solsys proc~aberat->proc~astcon proc~angles->setvec proc~ciobas->proc~frame proc~ciobas->proc~nutate proc~ciobas->proc~preces proc~ciord novas_module::ciord proc~cioloc->proc~ciord proc~eqxra novas_module::eqxra proc~cioloc->proc~eqxra proc~dlight->proc~astcon proc~geocen->proc~astcon proc~geopos->proc~astcon proc~geopos->proc~frame proc~geopos->proc~nutate proc~geopos->proc~preces eqinox eqinox proc~geopos->eqinox getdt getdt proc~geopos->getdt placst placst proc~geopos->placst proc~etilt novas_module::etilt proc~geopos->proc~etilt proc~sidtim novas_module::sidtim proc~geopos->proc~sidtim proc~terra novas_module::terra proc~geopos->proc~terra resume resume proc~geopos->resume proc~grvdef~2->proc~astcon proc~grvdef~2->proc~dlight proc~grvdef~2->proc~geocen proc~grvdef~2->solsys id id proc~grvdef~2->id proc~grvd novas_module::grvd proc~grvdef~2->proc~grvd proc~limang->proc~astcon dasin dasin proc~limang->dasin proc~littim->proc~geocen proc~littim->solsys proc~nutate->proc~etilt proc~radvl->proc~astcon proc~vectrs->proc~astcon ciofil ciofil proc~ciord->ciofil proc~eqxra->proc~etilt proc~etilt->proc~frame proc~etilt->proc~preces celpol celpol proc~etilt->celpol getmod getmod proc~etilt->getmod proc~eect2000 novas_module::eect2000 proc~etilt->proc~eect2000 proc~funarg novas_module::funarg proc~etilt->proc~funarg proc~nod~2 novas_module::nod proc~etilt->proc~nod~2 proc~grvd->proc~astcon proc~sidtim->proc~ciobas proc~sidtim->proc~cioloc proc~sidtim->proc~frame proc~sidtim->proc~nutate proc~sidtim->proc~preces proc~sidtim->proc~times proc~sidtim->getdt proc~sidtim->proc~eqxra proc~sidtim->proc~etilt proc~sidtim->getmod proc~erot novas_module::erot proc~sidtim->proc~erot proc~terra->proc~astcon proc~anmp novas_module::anmp proc~eect2000->proc~anmp proc~nod~2->getmod proc~nu2000a novas_module::nu2000a proc~nod~2->proc~nu2000a proc~nu2000k novas_module::nu2000k proc~nod~2->proc~nu2000k proc~nu2000k->proc~funarg

Called by

proc~~place~~CalledByGraph proc~place novas_module::place proc~mpstar novas_module::mpstar proc~mpstar->proc~place proc~places novas_module::places proc~places->proc~place