Annotation of researchv10no/cmd/sky/jup.c, revision 1.1

1.1     ! root        1: #include "sky.h"
        !             2: 
        !             3: extern struct juptab
        !             4: {
        !             5:        float f[6];
        !             6:        char c[3];
        !             7: } juptab[];
        !             8: 
        !             9: jup()
        !            10: {
        !            11:        double pturbl, pturbb, pturbr;
        !            12:        double lograd;
        !            13:        double dele, enom, vnom, nd, sl;
        !            14:        double q0, v0, t0, m0, j0 , s0, u0, n0;
        !            15:        double lsun, elong, ci, dlong;
        !            16:        double planp[9];
        !            17:        struct juptab *pp = &juptab[0];
        !            18:        double olong;
        !            19:        double grin;
        !            20:        double temp;
        !            21: 
        !            22: /*
        !            23:  *     The arguments nnd coefficients are taken from
        !            24:  *
        !            25:  *     Here are the mean orbital elements.
        !            26:  */
        !            27: 
        !            28:        object = "Jupiter     ";
        !            29:        ecc = 0.04833748 + 1.63903e-4*capt - 0.4642e-6*capt2 - 1.593e-9*capt3;
        !            30:        incl = 1.3086429 - 0.005696*capt + 3.89e-6*capt2;
        !            31:        node = 99.4431901 + 1.0105300*capt + 3.522e-4*capt2 - 8.51e-6*capt3;
        !            32:        argp = 13.4119487 + 0.21344495*capt + 7.466e-4*capt2 - 3.7946e-6*capt3;
        !            33:        anom = 225.3350378 + 0.0830853474*eday - 8.332e-4*capt2 + 3.9876e-6*capt3;
        !            34:        motion = .083091212;
        !            35:        mrad = 5.202803;
        !            36: 
        !            37:        incl *= radian;
        !            38:        node *= radian;
        !            39:        argp *= radian;
        !            40:        anom = fmod(anom, 360.)*radian;
        !            41:        motion *= radian;
        !            42: 
        !            43: /*
        !            44:  *     Longitudes of perturbing planets,
        !            45:  *     They are of epoch Jan 0.5, 1900, and are
        !            46:  *     referred to the fixed qquinox of that date.
        !            47:  */
        !            48: 
        !            49:        q0 = 178.179 + 4.092338817*eday;
        !            50:        v0 = 342.767 + 1.602130491*eday;
        !            51:        t0 =  99.697 + 0.985609114*eday;
        !            52:        m0 = 293.748 + 0.524032950*eday;
        !            53:        j0 = 238.050 + 0.083091230*eday;
        !            54:        s0 = 266.280 + 0.033459743*eday;
        !            55:        u0 = 243.370 + 0.011731421*eday;
        !            56:        n0 =  85.183 + 0.005987356*eday;
        !            57: 
        !            58:        q0 *= radian;
        !            59:        v0 *= radian;
        !            60:        t0 *= radian;
        !            61:        m0 *= radian;
        !            62:        j0 *= radian;
        !            63:        s0 *= radian;
        !            64:        u0 *= radian;
        !            65:        n0 *= radian;
        !            66: 
        !            67:        grin = 5.*s0 - 2.*j0 - 8079.0*radsec*capt;
        !            68: 
        !            69:        planp[1] = q0;
        !            70:        planp[2] = v0;
        !            71:        planp[3] = t0;
        !            72:        planp[4] = m0;
        !            73:        planp[5] = j0;
        !            74:        planp[6] = s0;
        !            75:        planp[7] = u0;
        !            76:        planp[8] = n0;
        !            77: 
        !            78: /*
        !            79:  *     Computation of long period terms affecting the mean anomaly.
        !            80:  */
        !            81: 
        !            82:        anom += 0.
        !            83:        +(1192.85-6.076*capt-0.0400*capt2+0.00075*capt3)*radsec*sin(grin)
        !            84:        +(-23.80-0.192*capt+0.0226*capt2-0.00080*capt3)*radsec*cos(grin)
        !            85:        +(-11.04-0.060*capt-0.0072*capt2+0.00021*capt3)*radsec*sin(2.*grin)
        !            86:        +(1.44-0.086*capt+0.0004*capt2+0.00006*capt3)*radsec*cos(2.*grin)
        !            87: 
        !            88:         + (8.22-0.120*capt-0.002*capt2)*radsec*sin(2.*j0-6.*s0+3.*u0)
        !            89:         + (0.55 + 0.420*capt - 0.0079*capt2)*radsec*cos(2.*j0-6.*s0+3.*u0)
        !            90:        ;
        !            91: 
        !            92: /*
        !            93:  *     Computation of elliptic orbit.
        !            94:  */
        !            95: 
        !            96:        enom = anom + ecc*sin(anom);
        !            97:        do {
        !            98:                dele = (anom - enom + ecc * sin(enom)) /
        !            99:                        (1. - ecc*cos(enom));
        !           100:                enom += dele;
        !           101:        } while(fabs(dele) > 1.e-8);
        !           102:        vnom = 2.*atan2(sqrt((1.+ecc)/(1.-ecc))*sin(enom/2.),
        !           103:                        cos(enom/2.));
        !           104:        rad = mrad*(1. - ecc*cos(enom));
        !           105: 
        !           106: /*
        !           107:  *     Perturbations in longitude.
        !           108:  */
        !           109: 
        !           110:        pturbl = 0.
        !           111:                +(-83.79-1.222*capt+0.0097*capt2)*sin(grin-j0)
        !           112:                +(137.08-1.508*capt-0.0069*capt2)*cos(grin-j0)
        !           113:        ;
        !           114: 
        !           115:        for(;;){
        !           116:                if(pp->c[2]==0){
        !           117:                        pp++;
        !           118:                        break;
        !           119:                }
        !           120:                temp = planp[pp->c[2]]*pp->c[0] + j0*pp->c[1];
        !           121:                pturbl += (pp->f[0]+pp->f[1]*capt+pp->f[2]*capt2)*sin(temp)
        !           122:                        + (pp->f[3]+pp->f[4]*capt+pp->f[5]*capt2)*cos(temp);
        !           123:                pp++;
        !           124:        }
        !           125: 
        !           126: /*
        !           127:  *     Perturbations in latitude.
        !           128:  */
        !           129: 
        !           130:        pturbb = 0.;
        !           131: /*
        !           132:        for(;;){
        !           133:                if(pp->f[0]==0.){
        !           134:                        pp++;
        !           135:                        break;
        !           136:                }
        !           137:                pturbb += pp->f[0]*cos(pp->f[1] + pp->c[0]*j0 + pp->c[1]*planp[pp->c[2]]);
        !           138:                pp++;
        !           139:        }
        !           140: */
        !           141: 
        !           142: /*
        !           143:  *     Perturbations in log radius vector.
        !           144:  */
        !           145: 
        !           146:        pturbr = 0.;
        !           147: /*
        !           148:        for(;;){
        !           149:                if(pp->f[0]==0.){
        !           150:                        pp++;
        !           151:                        break;
        !           152:                }
        !           153:                pturbr += pp->f[0]*cos(pp->f[1] + pp->c[0]*j0 + pp->c[1]*planp[pp->c[2]]);
        !           154:                pp++;
        !           155:        }
        !           156: */
        !           157:        pturbr *= 1.e-6;
        !           158: 
        !           159: /*
        !           160:  *     reduce to the ecliptic
        !           161:  */
        !           162: 
        !           163:        olong = vnom + argp + pturbl*radsec;
        !           164:        nd = olong - node;
        !           165:        lambda = node + atan2(sin(nd)*cos(incl), cos(nd));
        !           166: 
        !           167:        sl = sin(incl)*sin(nd);
        !           168:        beta = atan2(sl, sqrt(1.-sl*sl)) + pturbb*radsec;
        !           169: 
        !           170:        lograd = pturbr*2.30258509;
        !           171:        rad *= 1. + lograd;
        !           172: 
        !           173: /*
        !           174:  *     Compute motion for planetary aberration.
        !           175:  */
        !           176: 
        !           177:        temp = motion*mrad*mrad*sqrt(1.-ecc*ecc)/(rad*rad);
        !           178:        ldot = temp*sin(2.*(lambda-node))/sin(2.*(olong-node));
        !           179:        bdot = temp*sin(incl)*cos(lambda-node);
        !           180:        rdot = motion*mrad*ecc*sin(olong-argp)/sqrt(1.-ecc*ecc);
        !           181: 
        !           182: /*
        !           183:  *     Compute magnitude.
        !           184:  */
        !           185: 
        !           186:        mag = -8.93;
        !           187: 
        !           188:        semi = 98.57;
        !           189: 
        !           190:        helio();
        !           191:        geo();
        !           192: 
        !           193: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.