示例#1
0
    /**
     * Build a set of coefficients.
     *
     * @param date the current date
     * @param m m index
     * @param j j index
     */
    private void buildCoefficients(final AbsoluteDate date, final int m, final int j) {
      // Create local arrays
      final double[] currentCijm = new double[] {0., 0., 0., 0., 0., 0.};
      final double[] currentSijm = new double[] {0., 0., 0., 0., 0., 0.};

      // compute the term 1 / (jn - mθ<sup>.</sup>)
      final double oojnmt = 1. / (j * meanMotion - m * centralBodyRotationRate);

      // initialise the coeficients
      for (int i = 0; i < 6; i++) {
        currentCijm[i] = -cjsjFourier.getSijm(i, j, m);
        currentSijm[i] = cjsjFourier.getCijm(i, j, m);
      }
      // Add the separate part for δ<sub>6i</sub>
      currentCijm[5] += tnota * oojnmt * cjsjFourier.getCijm(0, j, m);
      currentSijm[5] += tnota * oojnmt * cjsjFourier.getSijm(0, j, m);

      // Multiply by 1 / (jn - mθ<sup>.</sup>)
      for (int i = 0; i < 6; i++) {
        currentCijm[i] *= oojnmt;
        currentSijm[i] *= oojnmt;
      }

      // Add the coefficients to the interpolation grid
      for (int i = 0; i < 6; i++) {
        cijm[m][j + jMax][i].addGridPoint(date, currentCijm[i]);
        sijm[m][j + jMax][i].addGridPoint(date, currentSijm[i]);
      }
    }
示例#2
0
    /**
     * Compute the short periodic coefficients.
     *
     * @param date the current date
     * @throws OrekitException if an error occurs
     */
    public void computeCoefficients(final AbsoluteDate date) throws OrekitException {
      // Compute only if there is at least one non-resonant tesseral
      if (!nonResOrders.isEmpty() || mDailiesOnly) {
        // Generate the fourrier coefficients
        cjsjFourier.generateCoefficients(date);

        // the coefficient 3n / 2a
        tnota = 1.5 * meanMotion / a;

        // build the mDaily coefficients
        for (int m = 1; m <= maxOrderMdailyTesseralSP; m++) {
          // build the coefficients
          buildCoefficients(date, m, 0);
        }

        if (!mDailiesOnly) {
          // generate the other coefficients, if required
          for (int m : nonResOrders.keySet()) {
            final List<Integer> listJ = nonResOrders.get(m);

            for (int j : listJ) {
              // build the coefficients
              buildCoefficients(date, m, j);
            }
          }
        }
      }
    }