Welcome to the NavList Message Boards.


A Community Devoted to the Preservation and Practice of Celestial Navigation and Other Methods of Traditional Wayfinding

Compose Your Message

Add Images & Files
    Re: Astronomical Refraction: Computational Method for All Zenith Angles
    From: Frank Reed CT
    Date: 2005 Aug 18, 06:06 EDT

    Marcel you wrote:
    "Looking at table 2 with  the results showing the two parameters hw and ho.
    According to the text they  both indicate the height of the observer. But
    what does then mean e.g. the  column with hw=0m and ho=2000m? "
    As stated in the article, that "hw" is  the height at which the temperature
    and pressure were "measured" (it's a  calibration altitude for the model
    atmosphere) while h0 is the observer's  altitude. I can't think of any reason in
    your application to choose anything but  zero for hw.
    And you wrote:
    " I assume that a zero got lost somewhere  and it was meant n=1.0002941."
    Yes, that's clearly a typo.
    And you  wrote:
    "Unfortunately the paper does not mention why this value was chosen or  to
    what it corresponds to. "
    Ah, but that's the great thing. It's up to  you. YOU may choose any value you
    want for the index of refraction corresponding  to whatever frequency of
    (visible) light you need for your model. If you intend  to use the standard "zero"
    points for temperature and pressure that are used in  this article, then,
    naturally, you should choose a refraction index for zero  degrees Celsius and 760
    mm (Hg) pressure but the variation with frequency is an  input to the
    problem. The specific value of the refraction index chosen for the  sample runs in
    the article is just an example. Notice also that this  calculational approach
    can be extended easily to atmospheres with completely  different structure and
    composition which might have radically different  refraction indices (realistic
    calculations for Mars perhaps?? the night sky as  seen from the cloudtops of
    I coded this up to satisfy myself  that it works. It does...
    Here's some very "basic" code using a simple  exponential model atmosphere.
    It reproduces the standard zero altitude  refraction table rather nicely. You
    can extend it by using the atmosphere model  described in the article. Or you
    could experiment with any sort of  temperature/pressure model that suits your
    interests (consistent with the ideal  gas law and hydrostatic equilibrium
    --unless you want to get into really exotic  conditions).
    DECLARE FUNCTION getmu#  (r#)
    CONST REarth = 6378000#
    'follows Auer-Standish:  Astronomical Journal, May 2000.
    pi = 4 * ATN(1)
    kk = 180 /  pi
    INPUT "psi0:", psi0
    psi0 = psi0 / kk
    INPUT "ht (m):",  ht
    r0 = REarth + ht
    mu0 = getmu(r0)
    mrsp0 = mu0 * r0 *  SIN(psi0)
    sum = 0
    'the integration interval (in radians). Has to be  fairly small for
    dpsi = .00001
    'dr for derivatives:
    dr =  1
    'drtest for Newton-Raphson loop:
    drtest = .01 * dr
    'Start value  for angular integration.
    'Could start nearer to zero but this works  fine:
    psi = .1 * psi0
    r = REarth + 20000  'a fairly arbitrary  seed value...
    'getr loop follows:
    'calculate index of refraction at distance  r (see function getmu below):
    mu =  getmu(r)
    'and calculate again a little bit  higher:
    mu1 = getmu(r +  dr)
    'and thus get the derivative  d(mu)/dr:
    dmudr = (mu1 - mu) /  dr
    'use Newton-Raphson to get r as outlined in  article:
    F = mu * r - mrsp0 /  SIN(psi)
    dFdr = dmudr * r +  mu
    rnew = r - F /  dFdr
    'after two or three passes, this test  should bail out of the loop:
    IF ABS(rnew - r)  < drtest THEN EXIT DO
    r =  rnew
    'now calculate  d(ln(mu))/d(ln(r)):
    dlmdlr = (r / mu) * dmudr
    'add the contribution for this zenith distance to the  integral:
    sum = sum + dpsi * dlmdlr / (1 +  dlmdlr)
    'note: partsum --next line-- is for testing purposes  only:
    IF psi < .9 * psi0 THEN partsum = sum
    'increment the zenith distance:
    psi = psi + dpsi
    LOOP UNTIL  psi >= psi0
    'That's it. The sum is the total refraction. Convert to  minutes of arc:
    ref = -sum * kk * 60
    PRINT ref
    'The following lines  are for testing purposes only.
    'For zenith distances below 75 degrees, the  refraction s/b proportional to
    PRINT ref / TAN(psi0)
    PRINT  partsum / sum
    FUNCTION getmu (r)
    'Calculates the index of  refraction (mu) of the atmosphere as a function of
    altitude r.
    'BIG NOTE:  this is a simple TEST model with exponential density. Works
    'but  should be replaced with something more sophisticated like the model in
    'original article. And this model can be extended with any sort of  arbitrary
    'conditions as required.
    'Simple exponential decay of  atmospheric density with a scale height of 10
    getmu = 1 +  .00029241# * EXP(-(r - REarth) / 10000)
    42.0N 87.7W, or 41.4N  72.1W.

    Browse Files

    Drop Files


    What is NavList?

    Join NavList

    (please, no nicknames or handles)
    Do you want to receive all group messages by email?
    Yes No

    You can also join by posting. Your first on-topic post automatically makes you a member.

    Posting Code

    Enter the email address associated with your NavList messages. Your posting code will be emailed to you immediately.

    Email Settings

    Posting Code:

    Custom Index

    Start date: (yyyymm dd)
    End date: (yyyymm dd)

    Visit this site
    Visit this site
    Visit this site
    Visit this site
    Visit this site
    Visit this site