Ignore:
Timestamp:
Jul 16, 2009, 12:34:39 PM (16 years ago)
Author:
cmv
Message:

mise a niveau Xephem 3.7.4, cmv 16/07/2009

File:
1 edited

Legend:

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

    r3477 r3654  
    1818#define SUBFLD          '|'     /* subfield separator */
    1919#define MAXFLDS 20              /* must be more than on any expected line */
     20#define MAXESGOOD       100     /* max earth satellite good, days */
    2021
    2122static char *enm (char *flds[MAXFLDS]);
     
    183184 * we detect nonconformance as efficiently as possible.
    184185 * name ends at first '\0', '\r' or '\n'.
     186 * set startok/endok.
    185187 * if ok return 0 else return -1
    186188 */
     
    244246        op->es_M = (float)tle_fld (l2, 44, 51);
    245247        op->es_orbit = (int)tle_fld (l2, 64, 68);
     248
     249        /* limit date range to decay period that changes period by 1% but
     250         * never more than MAXESGOOD.
     251         * es_n is rev/day, es_decay is (rev/day)/day
     252         */
     253        if (fabs(op->es_decay) > 0) {
     254            double dt = 0.01*op->es_n/fabs(op->es_decay);
     255            if (dt > MAXESGOOD)
     256                dt = MAXESGOOD;
     257            op->es_startok = op->es_epoch - dt;
     258            op->es_endok = op->es_epoch + dt;
     259        }
    246260
    247261        /* yes! */
     
    576590        if (nf == 12)
    577591            op->es_drag = (float) atod (flds[11]);
     592
     593        /* if not already specified, limit date range to decay period that
     594         * changes period by 1% but never longer than MAXESGOOD.
     595         * es_n is rev/day, es_decay is (rev/day)/day
     596         */
     597        if (op->es_startok == 0 && op->es_endok == 0 && fabs(op->es_decay) > 0){
     598            double dt = 0.01*op->es_n/fabs(op->es_decay);
     599            if (dt > MAXESGOOD)
     600                dt = MAXESGOOD;
     601            op->es_startok = op->es_epoch - dt;
     602            op->es_endok = op->es_epoch + dt;
     603        }
    578604
    579605        return (0);
     
    10001026
    10011027/* For RCS Only -- Do Not Edit */
    1002 static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: dbfmt.c,v $ $Date: 2008-03-25 17:45:12 $ $Revision: 1.8 $ $Name: not supported by cvs2svn $"};
     1028static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: dbfmt.c,v $ $Date: 2009-07-16 10:34:36 $ $Revision: 1.9 $ $Name: not supported by cvs2svn $"};
Note: See TracChangeset for help on using the changeset viewer.