RTNCovariance.java

  1. /* Copyright 2002-2022 CS GROUP
  2.  * Licensed to CS GROUP (CS) under one or more
  3.  * contributor license agreements.  See the NOTICE file distributed with
  4.  * this work for additional information regarding copyright ownership.
  5.  * CS licenses this file to You under the Apache License, Version 2.0
  6.  * (the "License"); you may not use this file except in compliance with
  7.  * the License.  You may obtain a copy of the License at
  8.  *
  9.  *   http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package org.orekit.files.ccsds.ndm.cdm;

  18. import org.hipparchus.linear.MatrixUtils;
  19. import org.hipparchus.linear.RealMatrix;
  20. import org.orekit.files.ccsds.section.CommentsContainer;

  21. /**
  22.  * Container for RTN covariance matrix data. This class as a RealMatrix as
  23.  * attribute which can be acces with getRTNCovariaxMatrix method. Beware that
  24.  * there are thus 2 ways to modify the RTN covariance : setC... ( setCrr,
  25.  * setCtr ...) which should be prioritized and getRTNCovariaxMatrix.setEntry(row, col, value).
  26.  * <p> The RTN Covariance Matrix is provided in the 9×9 Lower Triangular Form. All parameters of the 6×6 position/velocity submatrix
  27.  * are mandatory. The remaining elements will return NaN if not provided. </p>
  28.  * @author Melina Vanel
  29.  * @since 11.2
  30.  */
  31. public class RTNCovariance extends CommentsContainer {

  32.     /** RTN covariance matrix. */
  33.     private RealMatrix covarianceMatrix;

  34.     /** Simple constructor. To update matrix value there are 2 ways to modify the RTN
  35.      * covariance : setC... ( setCrr, setCtr ...) which should be prioritized and
  36.      * getRTNCovariaxMatrix.setEntry(row, col, value).
  37.      * <p> The RTN Covariance Matrix is provided in the 9×9 Lower Triangular Form. All parameters of the 6×6 position/velocity submatrix
  38.      * are mandatory. The remaining elements will return NaN if not provided. </p>
  39.      */
  40.     public RTNCovariance() {
  41.         covarianceMatrix = MatrixUtils.createRealMatrix(9, 9);
  42.         for (int i = 0; i < covarianceMatrix.getRowDimension(); ++i) {
  43.             for (int j = 0; j <= i; ++j) {
  44.                 covarianceMatrix.setEntry(i, j, Double.NaN);
  45.             }
  46.         }

  47.     }

  48.     /** {@inheritDoc} */
  49.     @Override
  50.     public void validate(final double version) {
  51.         super.validate(version);
  52.         // We only check values that are mandatory in a cdm file
  53.         checkNotNaN(getCrr(),              RTNCovarianceKey.CR_R);
  54.         checkNotNaN(getCtr(),              RTNCovarianceKey.CT_R);
  55.         checkNotNaN(getCtt(),              RTNCovarianceKey.CT_T);
  56.         checkNotNaN(getCnr(),              RTNCovarianceKey.CN_R);
  57.         checkNotNaN(getCnt(),              RTNCovarianceKey.CN_T);
  58.         checkNotNaN(getCnn(),              RTNCovarianceKey.CN_N);
  59.         checkNotNaN(getCrdotr(),           RTNCovarianceKey.CRDOT_R);
  60.         checkNotNaN(getCrdott(),           RTNCovarianceKey.CRDOT_T);
  61.         checkNotNaN(getCrdotn(),           RTNCovarianceKey.CRDOT_N);
  62.         checkNotNaN(getCrdotrdot(),        RTNCovarianceKey.CRDOT_RDOT);
  63.         checkNotNaN(getCtdotr(),           RTNCovarianceKey.CTDOT_R);
  64.         checkNotNaN(getCtdott(),           RTNCovarianceKey.CTDOT_T);
  65.         checkNotNaN(getCtdotn(),           RTNCovarianceKey.CTDOT_N);
  66.         checkNotNaN(getCtdotrdot(),        RTNCovarianceKey.CTDOT_RDOT);
  67.         checkNotNaN(getCtdottdot(),        RTNCovarianceKey.CTDOT_TDOT);
  68.         checkNotNaN(getCndotr(),           RTNCovarianceKey.CNDOT_R);
  69.         checkNotNaN(getCndott(),           RTNCovarianceKey.CNDOT_T);
  70.         checkNotNaN(getCndotn(),           RTNCovarianceKey.CNDOT_N);
  71.         checkNotNaN(getCndotrdot(),        RTNCovarianceKey.CNDOT_RDOT);
  72.         checkNotNaN(getCndottdot(),        RTNCovarianceKey.CNDOT_TDOT);
  73.         checkNotNaN(getCndotndot(),        RTNCovarianceKey.CNDOT_NDOT);
  74.     }

  75.     /** Set an entry in the RTN covariance matrix.
  76.      * <p>
  77.      * Both m(j, k) and m(k, j) are set.
  78.      * </p>
  79.      * @param j row index (must be between 0 and 5 (inclusive)
  80.      * @param k column index (must be between 0 and 5 (inclusive)
  81.      * @param entry value of the matrix entry
  82.      */
  83.     public void setCovarianceMatrixEntry(final int j, final int k, final double entry) {
  84.         covarianceMatrix.setEntry(j, k, entry);
  85.         covarianceMatrix.setEntry(k, j, entry);
  86.     }

  87.     /**
  88.      * Get the RTN covariance matrix.
  89.      * <p> The RTN Covariance Matrix is provided in the 9×9 Lower Triangular Form. All parameters of the 6×6 position/velocity submatrix
  90.      * are mandatory. The remaining elements will return NaN if not provided. </p>
  91.      * @return the RTN covariance matrix
  92.      */
  93.     public RealMatrix getRTNCovarianceMatrix() {
  94.         return covarianceMatrix;
  95.     }

  96.     /**
  97.      * Get the object [1,1] in covariance matrix (with index starting at 1).
  98.      * @return the object [1,1] in covariance matrix (in m²)
  99.      */
  100.     public double getCrr() {
  101.         return covarianceMatrix.getEntry(0, 0);
  102.     }

  103.     /**
  104.      * Set the object [1,1] in covariance matrix (with index starting at 1).
  105.      * @param CRR = object [1,1] in covariance matrix (in m²)
  106.      */
  107.     public void setCrr(final double CRR) {
  108.         refuseFurtherComments();
  109.         setCovarianceMatrixEntry(0, 0, CRR);
  110.     }

  111.     /**
  112.      * Get the object [2,1] in covariance matrix (with index starting at 1).
  113.      * @return the object [2,1] in covariance matrix (in m²)
  114.      */
  115.     public double getCtr() {
  116.         return covarianceMatrix.getEntry(1, 0);
  117.     }

  118.     /**
  119.      * Set the object [2,1] in covariance matrix (with index starting at 1).
  120.      * @param CTR = object [2,1] in covariance matrix (in m²)
  121.      */
  122.     public void setCtr(final double CTR) {
  123.         refuseFurtherComments();
  124.         setCovarianceMatrixEntry(1, 0, CTR);
  125.     }

  126.     /**
  127.      * Get the object [2,2] in covariance matrix (with index starting at 1).
  128.      * @return the object [2,2] in covariance matrix (in m²)
  129.      */
  130.     public double getCtt() {
  131.         return covarianceMatrix.getEntry(1, 1);
  132.     }

  133.     /**
  134.      * Set the object [2,2] in covariance matrix (with index starting at 1).
  135.      * @param CTT = object [2,2] in covariance matrix (in m²)
  136.      */
  137.     public void setCtt(final double CTT) {
  138.         refuseFurtherComments();
  139.         setCovarianceMatrixEntry(1, 1, CTT);
  140.     }

  141.     /**
  142.      * Get the object [3,1] in covariance matrix (with index starting at 1).
  143.      * @return the object [3,1] in covariance matrix (in m²)
  144.      */
  145.     public double getCnr() {
  146.         return covarianceMatrix.getEntry(2, 0);
  147.     }

  148.     /**
  149.      * Set the object [3,1] in covariance matrix (with index starting at 1).
  150.      * @param CNR = object [3,1] in covariance matrix (in m²)
  151.      */
  152.     public void setCnr(final double CNR) {
  153.         refuseFurtherComments();
  154.         setCovarianceMatrixEntry(2, 0, CNR);
  155.     }

  156.     /**
  157.      * Get the object [3,2] in covariance matrix (with index starting at 1).
  158.      * @return the object [3,2] in covariance matrix (in m²)
  159.      */
  160.     public double getCnt() {
  161.         return covarianceMatrix.getEntry(2, 1);
  162.     }

  163.     /**
  164.      * Set the object [3,2] in covariance matrix (with index starting at 1).
  165.      * @param CNT = object [3,2] in covariance matrix (in m²)
  166.      */
  167.     public void setCnt(final double CNT) {
  168.         refuseFurtherComments();
  169.         setCovarianceMatrixEntry(2, 1, CNT);
  170.     }

  171.     /**
  172.      * Get the object [3,3] in covariance matrix (with index starting at 1).
  173.      * @return the object [3,3] in covariance matrix (in m²)
  174.      */
  175.     public double getCnn() {
  176.         return covarianceMatrix.getEntry(2, 2);
  177.     }

  178.     /**
  179.      * Set the object [3,3] in covariance matrix (with index starting at 1).
  180.      * @param CNN = object [3,3] in covariance matrix (in m²)
  181.      */
  182.     public void setCnn(final double CNN) {
  183.         refuseFurtherComments();
  184.         setCovarianceMatrixEntry(2, 2, CNN);
  185.     }

  186.     /**
  187.      * Get the object [4,1] in covariance matrix (with index starting at 1).
  188.      * @return the object [4,1] in covariance matrix (in m²/s)
  189.      */
  190.     public double getCrdotr() {
  191.         return covarianceMatrix.getEntry(3, 0);
  192.     }

  193.     /**
  194.      * Set the object [4,1] in covariance matrix (with index starting at 1).
  195.      * @param CRdotR = object [4,1] in covariance matrix (in m²/s)
  196.      */
  197.     public void setCrdotr(final double CRdotR) {
  198.         refuseFurtherComments();
  199.         setCovarianceMatrixEntry(3, 0, CRdotR);
  200.     }

  201.     /**
  202.      * Get the object [4,2] in covariance matrix (with index starting at 1).
  203.      * @return the object [4,2] in covariance matrix (in m²/s)
  204.      */
  205.     public double getCrdott() {
  206.         return covarianceMatrix.getEntry(3, 1);
  207.     }

  208.     /**
  209.      * Set the object [4, 2] in covariance matrix (with index starting at 1).
  210.      * @param CRdotT = object [4, 2] in covariance matrix (in m²/s)
  211.      */
  212.     public void setCrdott(final double CRdotT) {
  213.         refuseFurtherComments();
  214.         setCovarianceMatrixEntry(3, 1, CRdotT);
  215.     }

  216.     /**
  217.      * Get the object [4, 3] in covariance matrix (with index starting at 1) .
  218.      * @return the object [4, 3] in covariance matrix (in m²/s)
  219.      */
  220.     public double getCrdotn() {
  221.         return covarianceMatrix.getEntry(3, 2);
  222.     }

  223.     /**
  224.      * Set the object [4, 3] in covariance matrix (with index starting at 1).
  225.      * @param CRdotN = object [4,3] in covariance matrix (in m²/s)
  226.      */
  227.     public void setCrdotn(final double CRdotN) {
  228.         refuseFurtherComments();
  229.         setCovarianceMatrixEntry(3, 2, CRdotN);
  230.     }

  231.     /**
  232.      * Get the object [4, 4] in covariance matrix (with index starting at 1).
  233.      * @return the object [4, 4] in covariance matrix (in m²/s²)
  234.      */
  235.     public double getCrdotrdot() {
  236.         return covarianceMatrix.getEntry(3, 3);
  237.     }

  238.     /**
  239.      * Set the object [4, 4] in covariance matrix (with index starting at 1).
  240.      * @param CRdotRdot = object [4, 4] in covariance matrix (in m²/s²)
  241.      */
  242.     public void setCrdotrdot(final double CRdotRdot) {
  243.         refuseFurtherComments();
  244.         setCovarianceMatrixEntry(3, 3, CRdotRdot);
  245.     }

  246.     /**
  247.      * Get the object [5, 1] in covariance matrix (with index starting at 1).
  248.      * @return the object [5, 1] in covariance matrix (in m²/s)
  249.      */
  250.     public double getCtdotr() {
  251.         return covarianceMatrix.getEntry(4, 0);
  252.     }

  253.     /**
  254.      * Set the object [5,1] in covariance matrix (with index starting at 1).
  255.      * @param CTdotR = object [5,1] in covariance matrix (in m²/s)
  256.      */
  257.     public void setCtdotr(final double CTdotR) {
  258.         refuseFurtherComments();
  259.         setCovarianceMatrixEntry(4, 0, CTdotR);
  260.     }

  261.     /**
  262.      * Get the object [5,2] in covariance matrix (with index starting at 1).
  263.      * @return the object [5,2] in covariance matrix (in m²/s)
  264.      */
  265.     public double getCtdott() {
  266.         return covarianceMatrix.getEntry(4, 1);
  267.     }

  268.     /**
  269.      * Set the object [5,2] in covariance matrix (with index starting at 1).
  270.      * @param CTdotT = object [5,2] in covariance matrix (in m²/s)
  271.      */
  272.     public void setCtdott(final double CTdotT) {
  273.         refuseFurtherComments();
  274.         setCovarianceMatrixEntry(4, 1, CTdotT);
  275.     }

  276.     /**
  277.      * Get the object [5,3] in covariance matrix (with index starting at 1).
  278.      * @return the object [5,3] in covariance matrix (in m²/s)
  279.      */
  280.     public double getCtdotn() {
  281.         return covarianceMatrix.getEntry(4, 2);
  282.     }

  283.     /**
  284.      * Set the object [5,3] in covariance matrix (with index starting at 1).
  285.      * @param CTdotN = object [5,3] in covariance matrix (in m²/s)
  286.      */
  287.     public void setCtdotn(final double CTdotN) {
  288.         refuseFurtherComments();
  289.         setCovarianceMatrixEntry(4, 2, CTdotN);
  290.     }

  291.     /**
  292.      * Get the object [5,4] in covariance matrix (with index starting at 1).
  293.      * @return the object [5,4] in covariance matrix (in m²/s²)
  294.      */
  295.     public double getCtdotrdot() {
  296.         return covarianceMatrix.getEntry(4, 3);
  297.     }

  298.     /**
  299.      * Set the object [5,4] in covariance matrix (with index starting at 1).
  300.      * @param CTdotRdot = object [5,4] in covariance matrix (in m²/s²)
  301.      */
  302.     public void setCtdotrdot(final double CTdotRdot) {
  303.         refuseFurtherComments();
  304.         setCovarianceMatrixEntry(4, 3, CTdotRdot);
  305.     }

  306.     /**
  307.      * Get the object [5,5] in covariance matrix (with index starting at 1).
  308.      * @return the object [5,5] in covariance matrix (in m²/s²)
  309.      */
  310.     public double getCtdottdot() {
  311.         return covarianceMatrix.getEntry(4, 4);
  312.     }

  313.     /**
  314.      * Set the object [5,5] in covariance matrix (with index starting at 1).
  315.      * @param CTdotTdot = object [5,5] in covariance matrix (in m²/s²)
  316.      */
  317.     public void setCtdottdot(final double CTdotTdot) {
  318.         refuseFurtherComments();
  319.         setCovarianceMatrixEntry(4, 4, CTdotTdot);
  320.     }

  321.     /**
  322.      * Get the object [6,1] in covariance matrix (with index starting at 1).
  323.      * @return the object [6,1] in covariance matrix (in m²/s)
  324.      */
  325.     public double getCndotr() {
  326.         return covarianceMatrix.getEntry(5, 0);
  327.     }

  328.     /**
  329.      * Set the object [6,1] in covariance matrix (with index starting at 1).
  330.      * @param CNdotR = object [6,1] in covariance matrix (in m²/s)
  331.      */
  332.     public void setCndotr(final double CNdotR) {
  333.         refuseFurtherComments();
  334.         setCovarianceMatrixEntry(5, 0, CNdotR);
  335.     }

  336.     /**
  337.      * Get the object [6,2] in covariance matrix (with index starting at 1).
  338.      * @return the object [6,2] in covariance matrix (in m²/s)
  339.      */
  340.     public double getCndott() {
  341.         return covarianceMatrix.getEntry(5, 1);
  342.     }

  343.     /**
  344.      * Set the object [6,2] in covariance matrix (with index starting at 1).
  345.      * @param CNdotT = object [6,2] in covariance matrix (in m²/s)
  346.      */
  347.     public void setCndott(final double CNdotT) {
  348.         refuseFurtherComments();
  349.         setCovarianceMatrixEntry(5, 1, CNdotT);
  350.     }

  351.     /**
  352.      * Get the object [6,3] in covariance matrix (with index starting at 1).
  353.      * @return the object [6,3] in covariance matrix (in m²/s)
  354.      */
  355.     public double getCndotn() {
  356.         return covarianceMatrix.getEntry(5, 2);
  357.     }

  358.     /**
  359.      * Set the object [6,3] in covariance matrix (with index starting at 1).
  360.      * @param CNdotN = object [6,3] in covariance matrix (in m²/s)
  361.      */
  362.     public void setCndotn(final double CNdotN) {
  363.         refuseFurtherComments();
  364.         setCovarianceMatrixEntry(5, 2, CNdotN);
  365.     }

  366.     /**
  367.      * Get the object [6,4] in covariance matrix (with index starting at 1).
  368.      * @return the object [6,4] in covariance matrix (in m²/s²)
  369.      */
  370.     public double getCndotrdot() {
  371.         return covarianceMatrix.getEntry(5, 3);
  372.     }

  373.     /**
  374.      * Set the object [6,4] in covariance matrix (with index starting at 1).
  375.      * @param CNdotRdot = object [6,4] in covariance matrix (in m²/s²)
  376.      */
  377.     public void setCndotrdot(final double CNdotRdot) {
  378.         refuseFurtherComments();
  379.         setCovarianceMatrixEntry(5, 3, CNdotRdot);
  380.     }

  381.     /**
  382.      * Get the object [6,5] in covariance matrix (with index starting at 1).
  383.      * @return the object [6,5] in covariance matrix (in m²/s²)
  384.      */
  385.     public double getCndottdot() {
  386.         return covarianceMatrix.getEntry(5, 4);
  387.     }

  388.     /**
  389.      * Set the object [6,5] in covariance matrix (with index starting at 1).
  390.      * @param CNdotTdot = object [6,5] in covariance matrix (in m²/s²)
  391.      */
  392.     public void setCndottdot(final double CNdotTdot) {
  393.         refuseFurtherComments();
  394.         setCovarianceMatrixEntry(5, 4, CNdotTdot);
  395.     }

  396.     /**
  397.      * Get the object [6,6] in covariance matrix (with index starting at 1).
  398.      * @return the object [6,6] in covariance matrix (in m²/s²)
  399.      */
  400.     public double getCndotndot() {
  401.         return covarianceMatrix.getEntry(5, 5);
  402.     }

  403.     /**
  404.      * Set the object [6,6] in covariance matrix (with index starting at 1).
  405.      * @param CNdotNdot = object [6,6] in covariance matrix (in m²/s²)
  406.      */
  407.     public void setCndotndot(final double CNdotNdot) {
  408.         refuseFurtherComments();
  409.         setCovarianceMatrixEntry(5, 5, CNdotNdot);
  410.     }

  411.     /**
  412.      * Get the object [7,1] in covariance matrix (with index starting at 1).
  413.      * @return the object [7,1] in covariance matrix (in m³/kg)
  414.      */
  415.     public double getCdrgr() {
  416.         return covarianceMatrix.getEntry(6, 0);
  417.     }

  418.     /**
  419.      * Set the object [7,1] in covariance matrix (with index starting at 1).
  420.      * @param CDRGR = object [7,1] in covariance matrix (in m³/kg)
  421.      */
  422.     public void setCdrgr(final double CDRGR) {
  423.         refuseFurtherComments();
  424.         setCovarianceMatrixEntry(6, 0, CDRGR);
  425.     }

  426.     /**
  427.      * Get the object [7,2] in covariance matrix.
  428.      * @return the object [7,2] in covariance matrix (in m³/kg)
  429.      */
  430.     public double getCdrgt() {
  431.         return covarianceMatrix.getEntry(6, 1);
  432.     }

  433.     /**
  434.      * Set the object [7,2] in covariance matrix (with index starting at 1).
  435.      * @param CDRGT = object [7,2] in covariance matrix (in m³/kg)
  436.      */
  437.     public void setCdrgt(final double CDRGT) {
  438.         refuseFurtherComments();
  439.         setCovarianceMatrixEntry(6, 1, CDRGT);
  440.     }

  441.     /**
  442.      * Get the object [7,3] in covariance matrix (with index starting at 1).
  443.      * @return the object [7,3] in covariance matrix (in m³/kg)
  444.      */
  445.     public double getCdrgn() {
  446.         return covarianceMatrix.getEntry(6, 2);
  447.     }

  448.     /**
  449.      * Set the object [7,3] in covariance matrix (with index starting at 1).
  450.      * @param CDRGN = object [7,3] in covariance matrix (in m³/kg)
  451.      */
  452.     public void setCdrgn(final double CDRGN) {
  453.         refuseFurtherComments();
  454.         setCovarianceMatrixEntry(6, 2, CDRGN);
  455.     }

  456.     /**
  457.      * Get the object [7,4] in covariance matrix (with index starting at 1).
  458.      * @return the object [7,4] in covariance matrix (in m³/(kg.s))
  459.      */
  460.     public double getCdrgrdot() {
  461.         return covarianceMatrix.getEntry(6, 3);
  462.     }

  463.     /**
  464.      * Set the object [7,4] in covariance matrix (with index starting at 1).
  465.      * @param CDRGRdot = object [7,4] in covariance matrix (in m³/(kg.s))
  466.      */
  467.     public void setCdrgrdot(final double CDRGRdot) {
  468.         refuseFurtherComments();
  469.         setCovarianceMatrixEntry(6, 3, CDRGRdot);
  470.     }

  471.     /**
  472.      * Get the object [7,5] in covariance matrix (with index starting at 1).
  473.      * @return the object [7,5] in covariance matrix (in m³/(kg.s))
  474.      */
  475.     public double getCdrgtdot() {
  476.         return covarianceMatrix.getEntry(6, 4);
  477.     }

  478.     /**
  479.      * Set the object [7,5] in covariance matrix (with index starting at 1).
  480.      * @param CDRGTdot = object [7,5] in covariance matrix (in m³/(kg.s))
  481.      */
  482.     public void setCdrgtdot(final double CDRGTdot) {
  483.         refuseFurtherComments();
  484.         setCovarianceMatrixEntry(6, 4, CDRGTdot);
  485.     }

  486.     /**
  487.      * Get the object [7,6] in covariance matrix (with index starting at 1).
  488.      * @return the object [7,6] in covariance matrix (in m³/(kg.s))
  489.      */
  490.     public double getCdrgndot() {
  491.         return covarianceMatrix.getEntry(6, 5);
  492.     }

  493.     /**
  494.      * Set the object [7,6] in covariance matrix (with index starting at 1).
  495.      * @param CDRGNdot = object [7,6] in covariance matrix (in m³/(kg.s))
  496.      */
  497.     public void setCdrgndot(final double CDRGNdot) {
  498.         refuseFurtherComments();
  499.         setCovarianceMatrixEntry(6, 5, CDRGNdot);
  500.     }

  501.     /**
  502.      * Get the object [7,7] in covariance matrix (with index starting at 1).
  503.      * @return the object [7,7] in covariance matrix (in m⁴/kg²)
  504.      */
  505.     public double getCdrgdrg() {
  506.         return covarianceMatrix.getEntry(6, 6);
  507.     }

  508.     /**
  509.      * Set the object [7,7] in covariance matrix (with index starting at 1).
  510.      * @param CDRGDRG = object [7,7] in covariance matrix (in m⁴/kg²)
  511.      */
  512.     public void setCdrgdrg(final double CDRGDRG) {
  513.         refuseFurtherComments();
  514.         setCovarianceMatrixEntry(6, 6, CDRGDRG);
  515.     }

  516.     /**
  517.      * Get the object [8,1] in covariance matrix (with index starting at 1).
  518.      * @return the object [8,1] in covariance matrix (in m³/kg)
  519.      */
  520.     public double getCsrpr() {
  521.         return covarianceMatrix.getEntry(7, 0);
  522.     }

  523.     /**
  524.      * Set the object [8,1] in covariance matrix (with index starting at 1).
  525.      * @param CSRPR = object [8,1] in covariance matrix (in m³/kg)
  526.      */
  527.     public void setCsrpr(final double CSRPR) {
  528.         refuseFurtherComments();
  529.         setCovarianceMatrixEntry(7, 0, CSRPR);
  530.     }

  531.     /**
  532.      * Get the object [8,2] in covariance matrix (with index starting at 1).
  533.      * @return the object [8,2] in covariance matrix (in m³/kg)
  534.      */
  535.     public double getCsrpt() {
  536.         return covarianceMatrix.getEntry(7, 1);
  537.     }

  538.     /**
  539.      * Set the object [8,2] in covariance matrix (with index starting at 1).
  540.      * @param CSRPT = object [8,2] in covariance matrix (in m³/kg)
  541.      */
  542.     public void setCsrpt(final double CSRPT) {
  543.         refuseFurtherComments();
  544.         setCovarianceMatrixEntry(7, 1, CSRPT);
  545.     }

  546.     /**
  547.      * Get the object [8,3] in covariance matrix (with index starting at 1).
  548.      * @return the object [8,3] in covariance matrix (in m³/kg)
  549.      */
  550.     public double getCsrpn() {
  551.         return covarianceMatrix.getEntry(7, 2);
  552.     }

  553.     /**
  554.      * Set the object [8,3] in covariance matrix (with index starting at 1).
  555.      * @param CSRPN = object [8,3] in covariance matrix (in m³/kg)
  556.      */
  557.     public void setCsrpn(final double CSRPN) {
  558.         refuseFurtherComments();
  559.         setCovarianceMatrixEntry(7, 2, CSRPN);
  560.     }

  561.     /**
  562.      * Get the object [8,4] in covariance matrix (with index starting at 1).
  563.      * @return the object [8,4] in covariance matrix (in m³/(kg.s))
  564.      */
  565.     public double getCsrprdot() {
  566.         return covarianceMatrix.getEntry(7, 3);
  567.     }

  568.     /**
  569.      * Set the object [8,4] in covariance matrix (with index starting at 1).
  570.      * @param CSRPRdot = object [8,4] in covariance matrix (in m³/(kg.s))
  571.      */
  572.     public void setCsrprdot(final double CSRPRdot) {
  573.         refuseFurtherComments();
  574.         setCovarianceMatrixEntry(7, 3, CSRPRdot);
  575.     }

  576.     /**
  577.      * Get the object [8,5] in covariance matrix (with index starting at 1).
  578.      * @return the object [8,5] in covariance matrix (in m³/(kg.s))
  579.      */
  580.     public double getCsrptdot() {
  581.         return covarianceMatrix.getEntry(7, 4);
  582.     }

  583.     /**
  584.      * Set the object [8,5] in covariance matrix (with index starting at 1).
  585.      * @param CSRPTdot = object [8,5] in covariance matrix (in m³/(kg.s))
  586.      */
  587.     public void setCsrptdot(final double CSRPTdot) {
  588.         refuseFurtherComments();
  589.         setCovarianceMatrixEntry(7, 4, CSRPTdot);
  590.     }

  591.     /**
  592.      * Get the object [8,6] in covariance matrix (with index starting at 1).
  593.      * @return the object [8,6] in covariance matrix (in m³/(kg.s))
  594.      */
  595.     public double getCsrpndot() {
  596.         return covarianceMatrix.getEntry(7, 5);
  597.     }

  598.     /**
  599.      * Set the object [8,6] in covariance matrix (with index starting at 1).
  600.      * @param CSRPNdot = object [8,6] in covariance matrix (in m³/(kg.s))
  601.      */
  602.     public void setCsrpndot(final double CSRPNdot) {
  603.         refuseFurtherComments();
  604.         setCovarianceMatrixEntry(7, 5, CSRPNdot);
  605.     }

  606.     /**
  607.      * Get the object [8,7] in covariance matrix (with index starting at 1).
  608.      * @return the object [8,7] in covariance matrix (in m⁴/kg²)
  609.      */
  610.     public double getCsrpdrg() {
  611.         return covarianceMatrix.getEntry(7, 6);
  612.     }

  613.     /**
  614.      * Set the object [8,7] in covariance matrix (with index starting at 1).
  615.      * @param CSRPDRG = object [8,7] in covariance matrix (in m⁴/kg²)
  616.      */
  617.     public void setCsrpdrg(final double CSRPDRG) {
  618.         refuseFurtherComments();
  619.         setCovarianceMatrixEntry(7, 6, CSRPDRG);
  620.     }

  621.     /**
  622.      * Get the object [8,8] in covariance matrix (with index starting at 1).
  623.      * @return the object [8,8] in covariance matrix (in m⁴/kg²)
  624.      */
  625.     public double getCsrpsrp() {
  626.         return covarianceMatrix.getEntry(7, 7);
  627.     }

  628.     /**
  629.      * Set the object [8,8] in covariance matrix (with index starting at 1).
  630.      * @param CSRPSRP = object [8,8] in covariance matrix (in m⁴/kg²)
  631.      */
  632.     public void setCsrpsrp(final double CSRPSRP) {
  633.         refuseFurtherComments();
  634.         setCovarianceMatrixEntry(7, 7, CSRPSRP);
  635.     }

  636.     /**
  637.      * Get the object [9,1] in covariance matrix (with index starting at 1).
  638.      * @return the object [9,1] in covariance matrix (in m²/s²)
  639.      */
  640.     public double getCthrr() {
  641.         return covarianceMatrix.getEntry(8, 0);
  642.     }

  643.     /**
  644.      * Set the object [9,1] in covariance matrix (with index starting at 1).
  645.      * @param CTHRR = object [9,1] in covariance matrix (in m²/s²)
  646.      */
  647.     public void setCthrr(final double CTHRR) {
  648.         refuseFurtherComments();
  649.         setCovarianceMatrixEntry(8, 0, CTHRR);
  650.     }

  651.     /**
  652.      * Get the object [9,2] in covariance matrix (with index starting at 1).
  653.      * @return the object [9,2] in covariance matrix (in m²/s²)
  654.      */
  655.     public double getCthrt() {
  656.         return covarianceMatrix.getEntry(8, 1);
  657.     }

  658.     /**
  659.      * Set the object [9,2] in covariance matrix (with index starting at 1).
  660.      * @param CTHRT = object [9,2] in covariance matrix (in m²/s²)
  661.      */
  662.     public void setCthrt(final double CTHRT) {
  663.         refuseFurtherComments();
  664.         setCovarianceMatrixEntry(8, 1, CTHRT);
  665.     }

  666.     /**
  667.      * Get the object [9,3] in covariance matrix (with index starting at 1).
  668.      * @return the object [9,3] in covariance matrix (in m²/s²)
  669.      */
  670.     public double getCthrn() {
  671.         return covarianceMatrix.getEntry(8, 2);
  672.     }

  673.     /**
  674.      * Set the object [9,3] in covariance matrix (with index starting at 1).
  675.      * @param CTHRN = object [9,3] in covariance matrix (in m²/s²)
  676.      */
  677.     public void setCthrn(final double CTHRN) {
  678.         refuseFurtherComments();
  679.         setCovarianceMatrixEntry(8, 2, CTHRN);
  680.     }

  681.     /**
  682.      * Get the object [9,4] in covariance matrix (with index starting at 1).
  683.      * @return the object [9,4] in covariance matrix (in m²/s³)
  684.      */
  685.     public double getCthrrdot() {
  686.         return covarianceMatrix.getEntry(8, 3);
  687.     }

  688.     /**
  689.      * Set the object [9,4] in covariance matrix (with index starting at 1).
  690.      * @param CTHRRdot = object [9,4] in covariance matrix (in m²/s³)
  691.      */
  692.     public void setCthrrdot(final double CTHRRdot) {
  693.         refuseFurtherComments();
  694.         setCovarianceMatrixEntry(8, 3, CTHRRdot);
  695.     }

  696.     /**
  697.      * Get the object [9,5] in covariance matrix (with index starting at 1).
  698.      * @return the object [9,5] in covariance matrix (in m²/s³)
  699.      */
  700.     public double getCthrtdot() {
  701.         return covarianceMatrix.getEntry(8, 4);
  702.     }

  703.     /**
  704.      * Set the object [9,5] in covariance matrix (with index starting at 1).
  705.      * @param CTHRTdot = object [9,5] in covariance matrix (in m²/s³)
  706.      */
  707.     public void setCthrtdot(final double CTHRTdot) {
  708.         refuseFurtherComments();
  709.         setCovarianceMatrixEntry(8, 4, CTHRTdot);
  710.     }

  711.     /**
  712.      * Get the object [9,6] in covariance matrix (with index starting at 1).
  713.      * @return the object [9,6] in covariance matrix (in m²/s³)
  714.      */
  715.     public double getCthrndot() {
  716.         return covarianceMatrix.getEntry(8, 5);
  717.     }

  718.     /**
  719.      * Set the object [9,6] in covariance matrix (with index starting at 1).
  720.      * @param CTHRNdot = object [9,6] in covariance matrix (in m²/s³)
  721.      */
  722.     public void setCthrndot(final double CTHRNdot) {
  723.         refuseFurtherComments();
  724.         setCovarianceMatrixEntry(8, 5, CTHRNdot);
  725.     }

  726.     /**
  727.      * Get the object [9,7] in covariance matrix (with index starting at 1).
  728.      * @return the object [9,7] in covariance matrix (in m³/(kg.s²))
  729.      */
  730.     public double getCthrdrg() {
  731.         return covarianceMatrix.getEntry(8, 6);
  732.     }

  733.     /**
  734.      * Set the object [9,7] in covariance matrix (with index starting at 1).
  735.      * @param CTHRDRG = object [9,7] in covariance matrix (in m³/(kg.s²))
  736.      */
  737.     public void setCthrdrg(final double CTHRDRG) {
  738.         refuseFurtherComments();
  739.         setCovarianceMatrixEntry(8, 6, CTHRDRG);
  740.     }

  741.     /**
  742.      * Get the object [9,8] in covariance matrix (with index starting at 1).
  743.      * @return the object [9,8] in covariance matrix (in m³/(kg.s²))
  744.      */
  745.     public double getCthrsrp() {
  746.         return covarianceMatrix.getEntry(8, 7);
  747.     }

  748.     /**
  749.      * Set the object [9,8] in covariance matrix (with index starting at 1).
  750.      * @param CTHRSRP = object [9,8] in covariance matrix (in m³/(kg.s²))
  751.      */
  752.     public void setCthrsrp(final double CTHRSRP) {
  753.         refuseFurtherComments();
  754.         setCovarianceMatrixEntry(8, 7, CTHRSRP);
  755.     }

  756.     /**
  757.      * Get the object [9,9] in covariance matrix (with index starting at 1).
  758.      * @return the object [9,9] in covariance matrix (in m²/s⁴)
  759.      */
  760.     public double getCthrthr() {
  761.         return covarianceMatrix.getEntry(8, 8);
  762.     }

  763.     /**
  764.      * Set the object [9,9] in covariance matrix (with index starting at 1).
  765.      * @param CTHRTHR = object [9,9] in covariance matrix (in m²/s⁴)
  766.      */
  767.     public void setCthrthr(final double CTHRTHR) {
  768.         refuseFurtherComments();
  769.         setCovarianceMatrixEntry(8, 8, CTHRTHR);
  770.     }

  771. }