Ignore:
Timestamp:
Mar 25, 2008, 6:45:21 PM (18 years ago)
Author:
cmv
Message:

mise a jour Xephem 3.7.3 , cmv 25/03/2008

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaExt/XephemAstroLib/riset_cir.c

    r3111 r3477  
    8484            rp->rs_flags |= RS_RISERR;
    8585            break;
    86         case -2: /* converged but not today */ /* FALLTHRU */
     86        case -2: /* converged but not today, err but give times anyway */
     87            rp->rs_risetm = n.n_mjd;
     88            rp->rs_riseaz = o.s_az;
     89            rp->rs_flags |= RS_NORISE;
     90            break;
    8791        case -3: /* probably never up */
    88             rp->rs_flags |= RS_NORISE;
     92            rp->rs_flags |= RS_NEVERUP;
    8993            break;
    9094        }
     
    100104            rp->rs_flags |= RS_SETERR;
    101105            break;
    102         case -2: /* converged but not today */ /* FALLTHRU */
     106        case -2: /* converged but not today, err but give times anyway */
     107            rp->rs_settm = n.n_mjd;
     108            rp->rs_setaz = o.s_az;
     109            rp->rs_flags |= RS_NOSET;
     110            break;
    103111        case -3: /* probably circumpolar */
    104             rp->rs_flags |= RS_NOSET;
     112            rp->rs_flags |= RS_CIRCUMPOLAR;
    105113            break;
    106114        }
     
    220228
    221229        /* instead of transit, for satellites we find time of maximum
    222          * altitude, if we know both the rise and set times and the former
    223          * occurs before the latter.
     230         * altitude, if we know both the rise and set times.
    224231         */
    225         if (rise && set && rp->rs_risetm < rp->rs_settm) {
     232        if (rise && set) {
    226233            double tt, al;
    227234            if (find_max (np, op, rp->rs_risetm, rp->rs_settm, &tt, &al) < 0) {
     
    266273#define MAXPASSES       20              /* max iterations to try */
    267274#define FIRSTSTEP       (1.0/60.0/24.0) /* first time step, days */
     275#define MAXSTEP         (1.0/24.0)/* max time step,days (to detect flat)*/
    268276
    269277        double a0 = 0;
     
    295303            a0 = a1;
    296304
    297         } while (++npasses < MAXPASSES && fabs(dt) > TMACC);
     305            if (++npasses > MAXPASSES || fabs(dt) >= MAXSTEP)
     306                return (-3);
     307
     308        } while (fabs(dt)>TMACC);
    298309
    299310        /* return codes */
    300         if (npasses == MAXPASSES)
    301             return (-3);
    302311        return (fabs(mjdn-mjd) < .5 ? 0 : -2);
    303312
    304313#undef  MAXPASSES
    305314#undef  FIRSTSTEP
     315#undef  MAXSTEP
    306316}
    307317
     
    361371double *tp, double *alp)        /* time of max altitude, and that altitude */
    362372{
     373        /* want rise before set */
     374        while (ts < tr)
     375            tr -= 1.0/op->es_n;
    363376        mjd = (ts + tr)/2;
    364377        if (obj_cir (np, op) < 0)
     
    370383
    371384/* For RCS Only -- Do Not Edit */
    372 static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: riset_cir.c,v $ $Date: 2006-11-22 13:53:30 $ $Revision: 1.6 $ $Name: not supported by cvs2svn $"};
     385static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: riset_cir.c,v $ $Date: 2008-03-25 17:45:19 $ $Revision: 1.7 $ $Name: not supported by cvs2svn $"};
Note: See TracChangeset for help on using the changeset viewer.