RTNCovariance.java

  1. /* Copyright 2002-2025 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.
  23.  * <p>
  24.  * Beware that the Orekit getters and setters all rely on SI units. The parsers
  25.  * and writers take care of converting these SI units into CCSDS mandatory units.
  26.  * The {@link org.orekit.utils.units.Unit Unit} class provides useful
  27.  * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and
  28.  * {@link org.orekit.utils.units.Unit#toSI(double) toSI} methods in case the callers
  29.  * already use CCSDS units instead of the API SI units. The general-purpose
  30.  * {@link org.orekit.utils.units.Unit Unit} class (without an 's') and the
  31.  * CCSDS-specific {@link org.orekit.files.ccsds.definitions.Units Units} class
  32.  * (with an 's') also provide some predefined units. These predefined units and the
  33.  * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and
  34.  * {@link org.orekit.utils.units.Unit#toSI(double) toSI} conversion methods are indeed
  35.  * what the parsers and writers use for the conversions.
  36.  * </p>
  37.  * <p>
  38.  * This class has a RealMatrix as attribute which can be access with
  39.  * {@code getRTNCovariaxMatrix} method. Beware that there are thus two
  40.  * ways to modify the RTN covariance : {@code setC…} ({@code setCrr},
  41.  * {@code setCtr}…) which should be prioritized and
  42.  * {@code getRTNCovariaxMatrix.setEntry(row, col, value)}.
  43.  * </p>
  44.  * <p>
  45.  * The RTN Covariance Matrix is provided in the 9×9 Lower Triangular Form. All parameters
  46.  * of the 6×6 position/velocity submatrix are mandatory. The remaining elements will return
  47.  * {code NaN} if not provided.
  48.  * </p>
  49.  * @author Melina Vanel
  50.  * @since 11.2
  51.  */
  52. public class RTNCovariance extends CommentsContainer {

  53.     /** RTN covariance matrix. */
  54.     private final RealMatrix covarianceMatrix;

  55.     /** Simple constructor. To update matrix value there are 2 ways to modify the RTN
  56.      * covariance : setC... ( setCrr, setCtr ...) which should be prioritized and
  57.      * getRTNCovariaxMatrix.setEntry(row, col, value).
  58.      * <p> The RTN Covariance Matrix is provided in the 9×9 Lower Triangular Form. All parameters of the 6×6 position/velocity submatrix
  59.      * are mandatory. The remaining elements will return NaN if not provided. </p>
  60.      */
  61.     public RTNCovariance() {
  62.         covarianceMatrix = MatrixUtils.createRealMatrix(9, 9);
  63.         for (int i = 0; i < covarianceMatrix.getRowDimension(); ++i) {
  64.             for (int j = 0; j <= i; ++j) {
  65.                 covarianceMatrix.setEntry(i, j, Double.NaN);
  66.             }
  67.         }

  68.     }

  69.     /** {@inheritDoc} */
  70.     @Override
  71.     public void validate(final double version) {
  72.         super.validate(version);
  73.         // We only check values that are mandatory in a cdm file
  74.         checkNotNaN(getCrr(),              RTNCovarianceKey.CR_R.name());
  75.         checkNotNaN(getCtr(),              RTNCovarianceKey.CT_R.name());
  76.         checkNotNaN(getCtt(),              RTNCovarianceKey.CT_T.name());
  77.         checkNotNaN(getCnr(),              RTNCovarianceKey.CN_R.name());
  78.         checkNotNaN(getCnt(),              RTNCovarianceKey.CN_T.name());
  79.         checkNotNaN(getCnn(),              RTNCovarianceKey.CN_N.name());
  80.         checkNotNaN(getCrdotr(),           RTNCovarianceKey.CRDOT_R.name());
  81.         checkNotNaN(getCrdott(),           RTNCovarianceKey.CRDOT_T.name());
  82.         checkNotNaN(getCrdotn(),           RTNCovarianceKey.CRDOT_N.name());
  83.         checkNotNaN(getCrdotrdot(),        RTNCovarianceKey.CRDOT_RDOT.name());
  84.         checkNotNaN(getCtdotr(),           RTNCovarianceKey.CTDOT_R.name());
  85.         checkNotNaN(getCtdott(),           RTNCovarianceKey.CTDOT_T.name());
  86.         checkNotNaN(getCtdotn(),           RTNCovarianceKey.CTDOT_N.name());
  87.         checkNotNaN(getCtdotrdot(),        RTNCovarianceKey.CTDOT_RDOT.name());
  88.         checkNotNaN(getCtdottdot(),        RTNCovarianceKey.CTDOT_TDOT.name());
  89.         checkNotNaN(getCndotr(),           RTNCovarianceKey.CNDOT_R.name());
  90.         checkNotNaN(getCndott(),           RTNCovarianceKey.CNDOT_T.name());
  91.         checkNotNaN(getCndotn(),           RTNCovarianceKey.CNDOT_N.name());
  92.         checkNotNaN(getCndotrdot(),        RTNCovarianceKey.CNDOT_RDOT.name());
  93.         checkNotNaN(getCndottdot(),        RTNCovarianceKey.CNDOT_TDOT.name());
  94.         checkNotNaN(getCndotndot(),        RTNCovarianceKey.CNDOT_NDOT.name());
  95.     }

  96.     /** Set an entry in the RTN covariance matrix.
  97.      * <p>
  98.      * Both m(j, k) and m(k, j) are set.
  99.      * </p>
  100.      * @param j row index (must be between 0 and 5 (inclusive)
  101.      * @param k column index (must be between 0 and 5 (inclusive)
  102.      * @param entry value of the matrix entry
  103.      */
  104.     public void setCovarianceMatrixEntry(final int j, final int k, final double entry) {
  105.         covarianceMatrix.setEntry(j, k, entry);
  106.         covarianceMatrix.setEntry(k, j, entry);
  107.     }

  108.     /**
  109.      * Get the RTN covariance matrix.
  110.      * <p> The RTN Covariance Matrix is provided in the 9×9 Lower Triangular Form. All parameters of the 6×6 position/velocity submatrix
  111.      * are mandatory. The remaining elements will return NaN if not provided. </p>
  112.      * @return the RTN covariance matrix
  113.      */
  114.     public RealMatrix getRTNCovarianceMatrix() {
  115.         return covarianceMatrix;
  116.     }

  117.     /**
  118.      * Get the object [1,1] in covariance matrix (with index starting at 1).
  119.      * @return the object [1,1] in covariance matrix (in m²)
  120.      */
  121.     public double getCrr() {
  122.         return covarianceMatrix.getEntry(0, 0);
  123.     }

  124.     /**
  125.      * Set the object [1,1] in covariance matrix (with index starting at 1).
  126.      * @param CRR = object [1,1] in covariance matrix (in m²)
  127.      */
  128.     public void setCrr(final double CRR) {
  129.         refuseFurtherComments();
  130.         setCovarianceMatrixEntry(0, 0, CRR);
  131.     }

  132.     /**
  133.      * Get the object [2,1] in covariance matrix (with index starting at 1).
  134.      * @return the object [2,1] in covariance matrix (in m²)
  135.      */
  136.     public double getCtr() {
  137.         return covarianceMatrix.getEntry(1, 0);
  138.     }

  139.     /**
  140.      * Set the object [2,1] in covariance matrix (with index starting at 1).
  141.      * @param CTR = object [2,1] in covariance matrix (in m²)
  142.      */
  143.     public void setCtr(final double CTR) {
  144.         refuseFurtherComments();
  145.         setCovarianceMatrixEntry(1, 0, CTR);
  146.     }

  147.     /**
  148.      * Get the object [2,2] in covariance matrix (with index starting at 1).
  149.      * @return the object [2,2] in covariance matrix (in m²)
  150.      */
  151.     public double getCtt() {
  152.         return covarianceMatrix.getEntry(1, 1);
  153.     }

  154.     /**
  155.      * Set the object [2,2] in covariance matrix (with index starting at 1).
  156.      * @param CTT = object [2,2] in covariance matrix (in m²)
  157.      */
  158.     public void setCtt(final double CTT) {
  159.         refuseFurtherComments();
  160.         setCovarianceMatrixEntry(1, 1, CTT);
  161.     }

  162.     /**
  163.      * Get the object [3,1] in covariance matrix (with index starting at 1).
  164.      * @return the object [3,1] in covariance matrix (in m²)
  165.      */
  166.     public double getCnr() {
  167.         return covarianceMatrix.getEntry(2, 0);
  168.     }

  169.     /**
  170.      * Set the object [3,1] in covariance matrix (with index starting at 1).
  171.      * @param CNR = object [3,1] in covariance matrix (in m²)
  172.      */
  173.     public void setCnr(final double CNR) {
  174.         refuseFurtherComments();
  175.         setCovarianceMatrixEntry(2, 0, CNR);
  176.     }

  177.     /**
  178.      * Get the object [3,2] in covariance matrix (with index starting at 1).
  179.      * @return the object [3,2] in covariance matrix (in m²)
  180.      */
  181.     public double getCnt() {
  182.         return covarianceMatrix.getEntry(2, 1);
  183.     }

  184.     /**
  185.      * Set the object [3,2] in covariance matrix (with index starting at 1).
  186.      * @param CNT = object [3,2] in covariance matrix (in m²)
  187.      */
  188.     public void setCnt(final double CNT) {
  189.         refuseFurtherComments();
  190.         setCovarianceMatrixEntry(2, 1, CNT);
  191.     }

  192.     /**
  193.      * Get the object [3,3] in covariance matrix (with index starting at 1).
  194.      * @return the object [3,3] in covariance matrix (in m²)
  195.      */
  196.     public double getCnn() {
  197.         return covarianceMatrix.getEntry(2, 2);
  198.     }

  199.     /**
  200.      * Set the object [3,3] in covariance matrix (with index starting at 1).
  201.      * @param CNN = object [3,3] in covariance matrix (in m²)
  202.      */
  203.     public void setCnn(final double CNN) {
  204.         refuseFurtherComments();
  205.         setCovarianceMatrixEntry(2, 2, CNN);
  206.     }

  207.     /**
  208.      * Get the object [4,1] in covariance matrix (with index starting at 1).
  209.      * @return the object [4,1] in covariance matrix (in m²/s)
  210.      */
  211.     public double getCrdotr() {
  212.         return covarianceMatrix.getEntry(3, 0);
  213.     }

  214.     /**
  215.      * Set the object [4,1] in covariance matrix (with index starting at 1).
  216.      * @param CRdotR = object [4,1] in covariance matrix (in m²/s)
  217.      */
  218.     public void setCrdotr(final double CRdotR) {
  219.         refuseFurtherComments();
  220.         setCovarianceMatrixEntry(3, 0, CRdotR);
  221.     }

  222.     /**
  223.      * Get the object [4,2] in covariance matrix (with index starting at 1).
  224.      * @return the object [4,2] in covariance matrix (in m²/s)
  225.      */
  226.     public double getCrdott() {
  227.         return covarianceMatrix.getEntry(3, 1);
  228.     }

  229.     /**
  230.      * Set the object [4, 2] in covariance matrix (with index starting at 1).
  231.      * @param CRdotT = object [4, 2] in covariance matrix (in m²/s)
  232.      */
  233.     public void setCrdott(final double CRdotT) {
  234.         refuseFurtherComments();
  235.         setCovarianceMatrixEntry(3, 1, CRdotT);
  236.     }

  237.     /**
  238.      * Get the object [4, 3] in covariance matrix (with index starting at 1) .
  239.      * @return the object [4, 3] in covariance matrix (in m²/s)
  240.      */
  241.     public double getCrdotn() {
  242.         return covarianceMatrix.getEntry(3, 2);
  243.     }

  244.     /**
  245.      * Set the object [4, 3] in covariance matrix (with index starting at 1).
  246.      * @param CRdotN = object [4,3] in covariance matrix (in m²/s)
  247.      */
  248.     public void setCrdotn(final double CRdotN) {
  249.         refuseFurtherComments();
  250.         setCovarianceMatrixEntry(3, 2, CRdotN);
  251.     }

  252.     /**
  253.      * Get the object [4, 4] in covariance matrix (with index starting at 1).
  254.      * @return the object [4, 4] in covariance matrix (in m²/s²)
  255.      */
  256.     public double getCrdotrdot() {
  257.         return covarianceMatrix.getEntry(3, 3);
  258.     }

  259.     /**
  260.      * Set the object [4, 4] in covariance matrix (with index starting at 1).
  261.      * @param CRdotRdot = object [4, 4] in covariance matrix (in m²/s²)
  262.      */
  263.     public void setCrdotrdot(final double CRdotRdot) {
  264.         refuseFurtherComments();
  265.         setCovarianceMatrixEntry(3, 3, CRdotRdot);
  266.     }

  267.     /**
  268.      * Get the object [5, 1] in covariance matrix (with index starting at 1).
  269.      * @return the object [5, 1] in covariance matrix (in m²/s)
  270.      */
  271.     public double getCtdotr() {
  272.         return covarianceMatrix.getEntry(4, 0);
  273.     }

  274.     /**
  275.      * Set the object [5,1] in covariance matrix (with index starting at 1).
  276.      * @param CTdotR = object [5,1] in covariance matrix (in m²/s)
  277.      */
  278.     public void setCtdotr(final double CTdotR) {
  279.         refuseFurtherComments();
  280.         setCovarianceMatrixEntry(4, 0, CTdotR);
  281.     }

  282.     /**
  283.      * Get the object [5,2] in covariance matrix (with index starting at 1).
  284.      * @return the object [5,2] in covariance matrix (in m²/s)
  285.      */
  286.     public double getCtdott() {
  287.         return covarianceMatrix.getEntry(4, 1);
  288.     }

  289.     /**
  290.      * Set the object [5,2] in covariance matrix (with index starting at 1).
  291.      * @param CTdotT = object [5,2] in covariance matrix (in m²/s)
  292.      */
  293.     public void setCtdott(final double CTdotT) {
  294.         refuseFurtherComments();
  295.         setCovarianceMatrixEntry(4, 1, CTdotT);
  296.     }

  297.     /**
  298.      * Get the object [5,3] in covariance matrix (with index starting at 1).
  299.      * @return the object [5,3] in covariance matrix (in m²/s)
  300.      */
  301.     public double getCtdotn() {
  302.         return covarianceMatrix.getEntry(4, 2);
  303.     }

  304.     /**
  305.      * Set the object [5,3] in covariance matrix (with index starting at 1).
  306.      * @param CTdotN = object [5,3] in covariance matrix (in m²/s)
  307.      */
  308.     public void setCtdotn(final double CTdotN) {
  309.         refuseFurtherComments();
  310.         setCovarianceMatrixEntry(4, 2, CTdotN);
  311.     }

  312.     /**
  313.      * Get the object [5,4] in covariance matrix (with index starting at 1).
  314.      * @return the object [5,4] in covariance matrix (in m²/s²)
  315.      */
  316.     public double getCtdotrdot() {
  317.         return covarianceMatrix.getEntry(4, 3);
  318.     }

  319.     /**
  320.      * Set the object [5,4] in covariance matrix (with index starting at 1).
  321.      * @param CTdotRdot = object [5,4] in covariance matrix (in m²/s²)
  322.      */
  323.     public void setCtdotrdot(final double CTdotRdot) {
  324.         refuseFurtherComments();
  325.         setCovarianceMatrixEntry(4, 3, CTdotRdot);
  326.     }

  327.     /**
  328.      * Get the object [5,5] in covariance matrix (with index starting at 1).
  329.      * @return the object [5,5] in covariance matrix (in m²/s²)
  330.      */
  331.     public double getCtdottdot() {
  332.         return covarianceMatrix.getEntry(4, 4);
  333.     }

  334.     /**
  335.      * Set the object [5,5] in covariance matrix (with index starting at 1).
  336.      * @param CTdotTdot = object [5,5] in covariance matrix (in m²/s²)
  337.      */
  338.     public void setCtdottdot(final double CTdotTdot) {
  339.         refuseFurtherComments();
  340.         setCovarianceMatrixEntry(4, 4, CTdotTdot);
  341.     }

  342.     /**
  343.      * Get the object [6,1] in covariance matrix (with index starting at 1).
  344.      * @return the object [6,1] in covariance matrix (in m²/s)
  345.      */
  346.     public double getCndotr() {
  347.         return covarianceMatrix.getEntry(5, 0);
  348.     }

  349.     /**
  350.      * Set the object [6,1] in covariance matrix (with index starting at 1).
  351.      * @param CNdotR = object [6,1] in covariance matrix (in m²/s)
  352.      */
  353.     public void setCndotr(final double CNdotR) {
  354.         refuseFurtherComments();
  355.         setCovarianceMatrixEntry(5, 0, CNdotR);
  356.     }

  357.     /**
  358.      * Get the object [6,2] in covariance matrix (with index starting at 1).
  359.      * @return the object [6,2] in covariance matrix (in m²/s)
  360.      */
  361.     public double getCndott() {
  362.         return covarianceMatrix.getEntry(5, 1);
  363.     }

  364.     /**
  365.      * Set the object [6,2] in covariance matrix (with index starting at 1).
  366.      * @param CNdotT = object [6,2] in covariance matrix (in m²/s)
  367.      */
  368.     public void setCndott(final double CNdotT) {
  369.         refuseFurtherComments();
  370.         setCovarianceMatrixEntry(5, 1, CNdotT);
  371.     }

  372.     /**
  373.      * Get the object [6,3] in covariance matrix (with index starting at 1).
  374.      * @return the object [6,3] in covariance matrix (in m²/s)
  375.      */
  376.     public double getCndotn() {
  377.         return covarianceMatrix.getEntry(5, 2);
  378.     }

  379.     /**
  380.      * Set the object [6,3] in covariance matrix (with index starting at 1).
  381.      * @param CNdotN = object [6,3] in covariance matrix (in m²/s)
  382.      */
  383.     public void setCndotn(final double CNdotN) {
  384.         refuseFurtherComments();
  385.         setCovarianceMatrixEntry(5, 2, CNdotN);
  386.     }

  387.     /**
  388.      * Get the object [6,4] in covariance matrix (with index starting at 1).
  389.      * @return the object [6,4] in covariance matrix (in m²/s²)
  390.      */
  391.     public double getCndotrdot() {
  392.         return covarianceMatrix.getEntry(5, 3);
  393.     }

  394.     /**
  395.      * Set the object [6,4] in covariance matrix (with index starting at 1).
  396.      * @param CNdotRdot = object [6,4] in covariance matrix (in m²/s²)
  397.      */
  398.     public void setCndotrdot(final double CNdotRdot) {
  399.         refuseFurtherComments();
  400.         setCovarianceMatrixEntry(5, 3, CNdotRdot);
  401.     }

  402.     /**
  403.      * Get the object [6,5] in covariance matrix (with index starting at 1).
  404.      * @return the object [6,5] in covariance matrix (in m²/s²)
  405.      */
  406.     public double getCndottdot() {
  407.         return covarianceMatrix.getEntry(5, 4);
  408.     }

  409.     /**
  410.      * Set the object [6,5] in covariance matrix (with index starting at 1).
  411.      * @param CNdotTdot = object [6,5] in covariance matrix (in m²/s²)
  412.      */
  413.     public void setCndottdot(final double CNdotTdot) {
  414.         refuseFurtherComments();
  415.         setCovarianceMatrixEntry(5, 4, CNdotTdot);
  416.     }

  417.     /**
  418.      * Get the object [6,6] in covariance matrix (with index starting at 1).
  419.      * @return the object [6,6] in covariance matrix (in m²/s²)
  420.      */
  421.     public double getCndotndot() {
  422.         return covarianceMatrix.getEntry(5, 5);
  423.     }

  424.     /**
  425.      * Set the object [6,6] in covariance matrix (with index starting at 1).
  426.      * @param CNdotNdot = object [6,6] in covariance matrix (in m²/s²)
  427.      */
  428.     public void setCndotndot(final double CNdotNdot) {
  429.         refuseFurtherComments();
  430.         setCovarianceMatrixEntry(5, 5, CNdotNdot);
  431.     }

  432.     /**
  433.      * Get the object [7,1] in covariance matrix (with index starting at 1).
  434.      * @return the object [7,1] in covariance matrix (in m³/kg)
  435.      */
  436.     public double getCdrgr() {
  437.         return covarianceMatrix.getEntry(6, 0);
  438.     }

  439.     /**
  440.      * Set the object [7,1] in covariance matrix (with index starting at 1).
  441.      * @param CDRGR = object [7,1] in covariance matrix (in m³/kg)
  442.      */
  443.     public void setCdrgr(final double CDRGR) {
  444.         refuseFurtherComments();
  445.         setCovarianceMatrixEntry(6, 0, CDRGR);
  446.     }

  447.     /**
  448.      * Get the object [7,2] in covariance matrix.
  449.      * @return the object [7,2] in covariance matrix (in m³/kg)
  450.      */
  451.     public double getCdrgt() {
  452.         return covarianceMatrix.getEntry(6, 1);
  453.     }

  454.     /**
  455.      * Set the object [7,2] in covariance matrix (with index starting at 1).
  456.      * @param CDRGT = object [7,2] in covariance matrix (in m³/kg)
  457.      */
  458.     public void setCdrgt(final double CDRGT) {
  459.         refuseFurtherComments();
  460.         setCovarianceMatrixEntry(6, 1, CDRGT);
  461.     }

  462.     /**
  463.      * Get the object [7,3] in covariance matrix (with index starting at 1).
  464.      * @return the object [7,3] in covariance matrix (in m³/kg)
  465.      */
  466.     public double getCdrgn() {
  467.         return covarianceMatrix.getEntry(6, 2);
  468.     }

  469.     /**
  470.      * Set the object [7,3] in covariance matrix (with index starting at 1).
  471.      * @param CDRGN = object [7,3] in covariance matrix (in m³/kg)
  472.      */
  473.     public void setCdrgn(final double CDRGN) {
  474.         refuseFurtherComments();
  475.         setCovarianceMatrixEntry(6, 2, CDRGN);
  476.     }

  477.     /**
  478.      * Get the object [7,4] in covariance matrix (with index starting at 1).
  479.      * @return the object [7,4] in covariance matrix (in m³/(kg.s))
  480.      */
  481.     public double getCdrgrdot() {
  482.         return covarianceMatrix.getEntry(6, 3);
  483.     }

  484.     /**
  485.      * Set the object [7,4] in covariance matrix (with index starting at 1).
  486.      * @param CDRGRdot = object [7,4] in covariance matrix (in m³/(kg.s))
  487.      */
  488.     public void setCdrgrdot(final double CDRGRdot) {
  489.         refuseFurtherComments();
  490.         setCovarianceMatrixEntry(6, 3, CDRGRdot);
  491.     }

  492.     /**
  493.      * Get the object [7,5] in covariance matrix (with index starting at 1).
  494.      * @return the object [7,5] in covariance matrix (in m³/(kg.s))
  495.      */
  496.     public double getCdrgtdot() {
  497.         return covarianceMatrix.getEntry(6, 4);
  498.     }

  499.     /**
  500.      * Set the object [7,5] in covariance matrix (with index starting at 1).
  501.      * @param CDRGTdot = object [7,5] in covariance matrix (in m³/(kg.s))
  502.      */
  503.     public void setCdrgtdot(final double CDRGTdot) {
  504.         refuseFurtherComments();
  505.         setCovarianceMatrixEntry(6, 4, CDRGTdot);
  506.     }

  507.     /**
  508.      * Get the object [7,6] in covariance matrix (with index starting at 1).
  509.      * @return the object [7,6] in covariance matrix (in m³/(kg.s))
  510.      */
  511.     public double getCdrgndot() {
  512.         return covarianceMatrix.getEntry(6, 5);
  513.     }

  514.     /**
  515.      * Set the object [7,6] in covariance matrix (with index starting at 1).
  516.      * @param CDRGNdot = object [7,6] in covariance matrix (in m³/(kg.s))
  517.      */
  518.     public void setCdrgndot(final double CDRGNdot) {
  519.         refuseFurtherComments();
  520.         setCovarianceMatrixEntry(6, 5, CDRGNdot);
  521.     }

  522.     /**
  523.      * Get the object [7,7] in covariance matrix (with index starting at 1).
  524.      * @return the object [7,7] in covariance matrix (in m⁴/kg²)
  525.      */
  526.     public double getCdrgdrg() {
  527.         return covarianceMatrix.getEntry(6, 6);
  528.     }

  529.     /**
  530.      * Set the object [7,7] in covariance matrix (with index starting at 1).
  531.      * @param CDRGDRG = object [7,7] in covariance matrix (in m⁴/kg²)
  532.      */
  533.     public void setCdrgdrg(final double CDRGDRG) {
  534.         refuseFurtherComments();
  535.         setCovarianceMatrixEntry(6, 6, CDRGDRG);
  536.     }

  537.     /**
  538.      * Get the object [8,1] in covariance matrix (with index starting at 1).
  539.      * @return the object [8,1] in covariance matrix (in m³/kg)
  540.      */
  541.     public double getCsrpr() {
  542.         return covarianceMatrix.getEntry(7, 0);
  543.     }

  544.     /**
  545.      * Set the object [8,1] in covariance matrix (with index starting at 1).
  546.      * @param CSRPR = object [8,1] in covariance matrix (in m³/kg)
  547.      */
  548.     public void setCsrpr(final double CSRPR) {
  549.         refuseFurtherComments();
  550.         setCovarianceMatrixEntry(7, 0, CSRPR);
  551.     }

  552.     /**
  553.      * Get the object [8,2] in covariance matrix (with index starting at 1).
  554.      * @return the object [8,2] in covariance matrix (in m³/kg)
  555.      */
  556.     public double getCsrpt() {
  557.         return covarianceMatrix.getEntry(7, 1);
  558.     }

  559.     /**
  560.      * Set the object [8,2] in covariance matrix (with index starting at 1).
  561.      * @param CSRPT = object [8,2] in covariance matrix (in m³/kg)
  562.      */
  563.     public void setCsrpt(final double CSRPT) {
  564.         refuseFurtherComments();
  565.         setCovarianceMatrixEntry(7, 1, CSRPT);
  566.     }

  567.     /**
  568.      * Get the object [8,3] in covariance matrix (with index starting at 1).
  569.      * @return the object [8,3] in covariance matrix (in m³/kg)
  570.      */
  571.     public double getCsrpn() {
  572.         return covarianceMatrix.getEntry(7, 2);
  573.     }

  574.     /**
  575.      * Set the object [8,3] in covariance matrix (with index starting at 1).
  576.      * @param CSRPN = object [8,3] in covariance matrix (in m³/kg)
  577.      */
  578.     public void setCsrpn(final double CSRPN) {
  579.         refuseFurtherComments();
  580.         setCovarianceMatrixEntry(7, 2, CSRPN);
  581.     }

  582.     /**
  583.      * Get the object [8,4] in covariance matrix (with index starting at 1).
  584.      * @return the object [8,4] in covariance matrix (in m³/(kg.s))
  585.      */
  586.     public double getCsrprdot() {
  587.         return covarianceMatrix.getEntry(7, 3);
  588.     }

  589.     /**
  590.      * Set the object [8,4] in covariance matrix (with index starting at 1).
  591.      * @param CSRPRdot = object [8,4] in covariance matrix (in m³/(kg.s))
  592.      */
  593.     public void setCsrprdot(final double CSRPRdot) {
  594.         refuseFurtherComments();
  595.         setCovarianceMatrixEntry(7, 3, CSRPRdot);
  596.     }

  597.     /**
  598.      * Get the object [8,5] in covariance matrix (with index starting at 1).
  599.      * @return the object [8,5] in covariance matrix (in m³/(kg.s))
  600.      */
  601.     public double getCsrptdot() {
  602.         return covarianceMatrix.getEntry(7, 4);
  603.     }

  604.     /**
  605.      * Set the object [8,5] in covariance matrix (with index starting at 1).
  606.      * @param CSRPTdot = object [8,5] in covariance matrix (in m³/(kg.s))
  607.      */
  608.     public void setCsrptdot(final double CSRPTdot) {
  609.         refuseFurtherComments();
  610.         setCovarianceMatrixEntry(7, 4, CSRPTdot);
  611.     }

  612.     /**
  613.      * Get the object [8,6] in covariance matrix (with index starting at 1).
  614.      * @return the object [8,6] in covariance matrix (in m³/(kg.s))
  615.      */
  616.     public double getCsrpndot() {
  617.         return covarianceMatrix.getEntry(7, 5);
  618.     }

  619.     /**
  620.      * Set the object [8,6] in covariance matrix (with index starting at 1).
  621.      * @param CSRPNdot = object [8,6] in covariance matrix (in m³/(kg.s))
  622.      */
  623.     public void setCsrpndot(final double CSRPNdot) {
  624.         refuseFurtherComments();
  625.         setCovarianceMatrixEntry(7, 5, CSRPNdot);
  626.     }

  627.     /**
  628.      * Get the object [8,7] in covariance matrix (with index starting at 1).
  629.      * @return the object [8,7] in covariance matrix (in m⁴/kg²)
  630.      */
  631.     public double getCsrpdrg() {
  632.         return covarianceMatrix.getEntry(7, 6);
  633.     }

  634.     /**
  635.      * Set the object [8,7] in covariance matrix (with index starting at 1).
  636.      * @param CSRPDRG = object [8,7] in covariance matrix (in m⁴/kg²)
  637.      */
  638.     public void setCsrpdrg(final double CSRPDRG) {
  639.         refuseFurtherComments();
  640.         setCovarianceMatrixEntry(7, 6, CSRPDRG);
  641.     }

  642.     /**
  643.      * Get the object [8,8] in covariance matrix (with index starting at 1).
  644.      * @return the object [8,8] in covariance matrix (in m⁴/kg²)
  645.      */
  646.     public double getCsrpsrp() {
  647.         return covarianceMatrix.getEntry(7, 7);
  648.     }

  649.     /**
  650.      * Set the object [8,8] in covariance matrix (with index starting at 1).
  651.      * @param CSRPSRP = object [8,8] in covariance matrix (in m⁴/kg²)
  652.      */
  653.     public void setCsrpsrp(final double CSRPSRP) {
  654.         refuseFurtherComments();
  655.         setCovarianceMatrixEntry(7, 7, CSRPSRP);
  656.     }

  657.     /**
  658.      * Get the object [9,1] in covariance matrix (with index starting at 1).
  659.      * @return the object [9,1] in covariance matrix (in m²/s²)
  660.      */
  661.     public double getCthrr() {
  662.         return covarianceMatrix.getEntry(8, 0);
  663.     }

  664.     /**
  665.      * Set the object [9,1] in covariance matrix (with index starting at 1).
  666.      * @param CTHRR = object [9,1] in covariance matrix (in m²/s²)
  667.      */
  668.     public void setCthrr(final double CTHRR) {
  669.         refuseFurtherComments();
  670.         setCovarianceMatrixEntry(8, 0, CTHRR);
  671.     }

  672.     /**
  673.      * Get the object [9,2] in covariance matrix (with index starting at 1).
  674.      * @return the object [9,2] in covariance matrix (in m²/s²)
  675.      */
  676.     public double getCthrt() {
  677.         return covarianceMatrix.getEntry(8, 1);
  678.     }

  679.     /**
  680.      * Set the object [9,2] in covariance matrix (with index starting at 1).
  681.      * @param CTHRT = object [9,2] in covariance matrix (in m²/s²)
  682.      */
  683.     public void setCthrt(final double CTHRT) {
  684.         refuseFurtherComments();
  685.         setCovarianceMatrixEntry(8, 1, CTHRT);
  686.     }

  687.     /**
  688.      * Get the object [9,3] in covariance matrix (with index starting at 1).
  689.      * @return the object [9,3] in covariance matrix (in m²/s²)
  690.      */
  691.     public double getCthrn() {
  692.         return covarianceMatrix.getEntry(8, 2);
  693.     }

  694.     /**
  695.      * Set the object [9,3] in covariance matrix (with index starting at 1).
  696.      * @param CTHRN = object [9,3] in covariance matrix (in m²/s²)
  697.      */
  698.     public void setCthrn(final double CTHRN) {
  699.         refuseFurtherComments();
  700.         setCovarianceMatrixEntry(8, 2, CTHRN);
  701.     }

  702.     /**
  703.      * Get the object [9,4] in covariance matrix (with index starting at 1).
  704.      * @return the object [9,4] in covariance matrix (in m²/s³)
  705.      */
  706.     public double getCthrrdot() {
  707.         return covarianceMatrix.getEntry(8, 3);
  708.     }

  709.     /**
  710.      * Set the object [9,4] in covariance matrix (with index starting at 1).
  711.      * @param CTHRRdot = object [9,4] in covariance matrix (in m²/s³)
  712.      */
  713.     public void setCthrrdot(final double CTHRRdot) {
  714.         refuseFurtherComments();
  715.         setCovarianceMatrixEntry(8, 3, CTHRRdot);
  716.     }

  717.     /**
  718.      * Get the object [9,5] in covariance matrix (with index starting at 1).
  719.      * @return the object [9,5] in covariance matrix (in m²/s³)
  720.      */
  721.     public double getCthrtdot() {
  722.         return covarianceMatrix.getEntry(8, 4);
  723.     }

  724.     /**
  725.      * Set the object [9,5] in covariance matrix (with index starting at 1).
  726.      * @param CTHRTdot = object [9,5] in covariance matrix (in m²/s³)
  727.      */
  728.     public void setCthrtdot(final double CTHRTdot) {
  729.         refuseFurtherComments();
  730.         setCovarianceMatrixEntry(8, 4, CTHRTdot);
  731.     }

  732.     /**
  733.      * Get the object [9,6] in covariance matrix (with index starting at 1).
  734.      * @return the object [9,6] in covariance matrix (in m²/s³)
  735.      */
  736.     public double getCthrndot() {
  737.         return covarianceMatrix.getEntry(8, 5);
  738.     }

  739.     /**
  740.      * Set the object [9,6] in covariance matrix (with index starting at 1).
  741.      * @param CTHRNdot = object [9,6] in covariance matrix (in m²/s³)
  742.      */
  743.     public void setCthrndot(final double CTHRNdot) {
  744.         refuseFurtherComments();
  745.         setCovarianceMatrixEntry(8, 5, CTHRNdot);
  746.     }

  747.     /**
  748.      * Get the object [9,7] in covariance matrix (with index starting at 1).
  749.      * @return the object [9,7] in covariance matrix (in m³/(kg.s²))
  750.      */
  751.     public double getCthrdrg() {
  752.         return covarianceMatrix.getEntry(8, 6);
  753.     }

  754.     /**
  755.      * Set the object [9,7] in covariance matrix (with index starting at 1).
  756.      * @param CTHRDRG = object [9,7] in covariance matrix (in m³/(kg.s²))
  757.      */
  758.     public void setCthrdrg(final double CTHRDRG) {
  759.         refuseFurtherComments();
  760.         setCovarianceMatrixEntry(8, 6, CTHRDRG);
  761.     }

  762.     /**
  763.      * Get the object [9,8] in covariance matrix (with index starting at 1).
  764.      * @return the object [9,8] in covariance matrix (in m³/(kg.s²))
  765.      */
  766.     public double getCthrsrp() {
  767.         return covarianceMatrix.getEntry(8, 7);
  768.     }

  769.     /**
  770.      * Set the object [9,8] in covariance matrix (with index starting at 1).
  771.      * @param CTHRSRP = object [9,8] in covariance matrix (in m³/(kg.s²))
  772.      */
  773.     public void setCthrsrp(final double CTHRSRP) {
  774.         refuseFurtherComments();
  775.         setCovarianceMatrixEntry(8, 7, CTHRSRP);
  776.     }

  777.     /**
  778.      * Get the object [9,9] in covariance matrix (with index starting at 1).
  779.      * @return the object [9,9] in covariance matrix (in m²/s⁴)
  780.      */
  781.     public double getCthrthr() {
  782.         return covarianceMatrix.getEntry(8, 8);
  783.     }

  784.     /**
  785.      * Set the object [9,9] in covariance matrix (with index starting at 1).
  786.      * @param CTHRTHR = object [9,9] in covariance matrix (in m²/s⁴)
  787.      */
  788.     public void setCthrthr(final double CTHRTHR) {
  789.         refuseFurtherComments();
  790.         setCovarianceMatrixEntry(8, 8, CTHRTHR);
  791.     }

  792. }