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 19 import org.hipparchus.linear.MatrixUtils; 20 import org.hipparchus.linear.RealMatrix; 21 import org.orekit.files.ccsds.section.CommentsContainer; 22 23 /** 24 * Container for RTN covariance matrix data. 25 * <p> 26 * Beware that the Orekit getters and setters all rely on SI units. The parsers 27 * and writers take care of converting these SI units into CCSDS mandatory units. 28 * The {@link org.orekit.utils.units.Unit Unit} class provides useful 29 * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and 30 * {@link org.orekit.utils.units.Unit#toSI(double) toSI} methods in case the callers 31 * already use CCSDS units instead of the API SI units. The general-purpose 32 * {@link org.orekit.utils.units.Unit Unit} class (without an 's') and the 33 * CCSDS-specific {@link org.orekit.files.ccsds.definitions.Units Units} class 34 * (with an 's') also provide some predefined units. These predefined units and the 35 * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and 36 * {@link org.orekit.utils.units.Unit#toSI(double) toSI} conversion methods are indeed 37 * what the parsers and writers use for the conversions. 38 * </p> 39 * <p> 40 * This class has a RealMatrix as attribute which can be access with 41 * {@code getRTNCovariaxMatrix} method. Beware that there are thus two 42 * ways to modify the RTN covariance : {@code setC…} ({@code setCrr}, 43 * {@code setCtr}…) which should be prioritized and 44 * {@code getRTNCovariaxMatrix.setEntry(row, col, value)}. 45 * </p> 46 * <p> 47 * The RTN Covariance Matrix is provided in the 9×9 Lower Triangular Form. All parameters 48 * of the 6×6 position/velocity submatrix are mandatory. The remaining elements will return 49 * {code NaN} if not provided. 50 * </p> 51 * @author Melina Vanel 52 * @since 11.2 53 */ 54 public class RTNCovariance extends CommentsContainer { 55 56 /** RTN covariance matrix. */ 57 private final RealMatrix covarianceMatrix; 58 59 /** Simple constructor. To update matrix value there are 2 ways to modify the RTN 60 * covariance : setC... ( setCrr, setCtr ...) which should be prioritized and 61 * getRTNCovariaxMatrix.setEntry(row, col, value). 62 * <p> The RTN Covariance Matrix is provided in the 9×9 Lower Triangular Form. All parameters of the 6×6 position/velocity submatrix 63 * are mandatory. The remaining elements will return NaN if not provided. </p> 64 */ 65 public RTNCovariance() { 66 covarianceMatrix = MatrixUtils.createRealMatrix(9, 9); 67 for (int i = 0; i < covarianceMatrix.getRowDimension(); ++i) { 68 for (int j = 0; j <= i; ++j) { 69 covarianceMatrix.setEntry(i, j, Double.NaN); 70 } 71 } 72 73 } 74 75 /** {@inheritDoc} */ 76 @Override 77 public void validate(final double version) { 78 super.validate(version); 79 // We only check values that are mandatory in a cdm file 80 checkNotNaN(getCrr(), RTNCovarianceKey.CR_R.name()); 81 checkNotNaN(getCtr(), RTNCovarianceKey.CT_R.name()); 82 checkNotNaN(getCtt(), RTNCovarianceKey.CT_T.name()); 83 checkNotNaN(getCnr(), RTNCovarianceKey.CN_R.name()); 84 checkNotNaN(getCnt(), RTNCovarianceKey.CN_T.name()); 85 checkNotNaN(getCnn(), RTNCovarianceKey.CN_N.name()); 86 checkNotNaN(getCrdotr(), RTNCovarianceKey.CRDOT_R.name()); 87 checkNotNaN(getCrdott(), RTNCovarianceKey.CRDOT_T.name()); 88 checkNotNaN(getCrdotn(), RTNCovarianceKey.CRDOT_N.name()); 89 checkNotNaN(getCrdotrdot(), RTNCovarianceKey.CRDOT_RDOT.name()); 90 checkNotNaN(getCtdotr(), RTNCovarianceKey.CTDOT_R.name()); 91 checkNotNaN(getCtdott(), RTNCovarianceKey.CTDOT_T.name()); 92 checkNotNaN(getCtdotn(), RTNCovarianceKey.CTDOT_N.name()); 93 checkNotNaN(getCtdotrdot(), RTNCovarianceKey.CTDOT_RDOT.name()); 94 checkNotNaN(getCtdottdot(), RTNCovarianceKey.CTDOT_TDOT.name()); 95 checkNotNaN(getCndotr(), RTNCovarianceKey.CNDOT_R.name()); 96 checkNotNaN(getCndott(), RTNCovarianceKey.CNDOT_T.name()); 97 checkNotNaN(getCndotn(), RTNCovarianceKey.CNDOT_N.name()); 98 checkNotNaN(getCndotrdot(), RTNCovarianceKey.CNDOT_RDOT.name()); 99 checkNotNaN(getCndottdot(), RTNCovarianceKey.CNDOT_TDOT.name()); 100 checkNotNaN(getCndotndot(), RTNCovarianceKey.CNDOT_NDOT.name()); 101 } 102 103 /** Set an entry in the RTN covariance matrix. 104 * <p> 105 * Both m(j, k) and m(k, j) are set. 106 * </p> 107 * @param j row index (must be between 0 and 5 (inclusive) 108 * @param k column index (must be between 0 and 5 (inclusive) 109 * @param entry value of the matrix entry 110 */ 111 public void setCovarianceMatrixEntry(final int j, final int k, final double entry) { 112 covarianceMatrix.setEntry(j, k, entry); 113 covarianceMatrix.setEntry(k, j, entry); 114 } 115 116 /** 117 * Get the RTN covariance matrix. 118 * <p> The RTN Covariance Matrix is provided in the 9×9 Lower Triangular Form. All parameters of the 6×6 position/velocity submatrix 119 * are mandatory. The remaining elements will return NaN if not provided. </p> 120 * @return the RTN covariance matrix 121 */ 122 public RealMatrix getRTNCovarianceMatrix() { 123 return covarianceMatrix; 124 } 125 126 /** 127 * Get the object [1,1] in covariance matrix (with index starting at 1). 128 * @return the object [1,1] in covariance matrix (in m²) 129 */ 130 public double getCrr() { 131 return covarianceMatrix.getEntry(0, 0); 132 } 133 134 /** 135 * Set the object [1,1] in covariance matrix (with index starting at 1). 136 * @param CRR = object [1,1] in covariance matrix (in m²) 137 */ 138 public void setCrr(final double CRR) { 139 refuseFurtherComments(); 140 setCovarianceMatrixEntry(0, 0, CRR); 141 } 142 143 /** 144 * Get the object [2,1] in covariance matrix (with index starting at 1). 145 * @return the object [2,1] in covariance matrix (in m²) 146 */ 147 public double getCtr() { 148 return covarianceMatrix.getEntry(1, 0); 149 } 150 151 /** 152 * Set the object [2,1] in covariance matrix (with index starting at 1). 153 * @param CTR = object [2,1] in covariance matrix (in m²) 154 */ 155 public void setCtr(final double CTR) { 156 refuseFurtherComments(); 157 setCovarianceMatrixEntry(1, 0, CTR); 158 } 159 160 /** 161 * Get the object [2,2] in covariance matrix (with index starting at 1). 162 * @return the object [2,2] in covariance matrix (in m²) 163 */ 164 public double getCtt() { 165 return covarianceMatrix.getEntry(1, 1); 166 } 167 168 /** 169 * Set the object [2,2] in covariance matrix (with index starting at 1). 170 * @param CTT = object [2,2] in covariance matrix (in m²) 171 */ 172 public void setCtt(final double CTT) { 173 refuseFurtherComments(); 174 setCovarianceMatrixEntry(1, 1, CTT); 175 } 176 177 /** 178 * Get the object [3,1] in covariance matrix (with index starting at 1). 179 * @return the object [3,1] in covariance matrix (in m²) 180 */ 181 public double getCnr() { 182 return covarianceMatrix.getEntry(2, 0); 183 } 184 185 /** 186 * Set the object [3,1] in covariance matrix (with index starting at 1). 187 * @param CNR = object [3,1] in covariance matrix (in m²) 188 */ 189 public void setCnr(final double CNR) { 190 refuseFurtherComments(); 191 setCovarianceMatrixEntry(2, 0, CNR); 192 } 193 194 /** 195 * Get the object [3,2] in covariance matrix (with index starting at 1). 196 * @return the object [3,2] in covariance matrix (in m²) 197 */ 198 public double getCnt() { 199 return covarianceMatrix.getEntry(2, 1); 200 } 201 202 /** 203 * Set the object [3,2] in covariance matrix (with index starting at 1). 204 * @param CNT = object [3,2] in covariance matrix (in m²) 205 */ 206 public void setCnt(final double CNT) { 207 refuseFurtherComments(); 208 setCovarianceMatrixEntry(2, 1, CNT); 209 } 210 211 /** 212 * Get the object [3,3] in covariance matrix (with index starting at 1). 213 * @return the object [3,3] in covariance matrix (in m²) 214 */ 215 public double getCnn() { 216 return covarianceMatrix.getEntry(2, 2); 217 } 218 219 /** 220 * Set the object [3,3] in covariance matrix (with index starting at 1). 221 * @param CNN = object [3,3] in covariance matrix (in m²) 222 */ 223 public void setCnn(final double CNN) { 224 refuseFurtherComments(); 225 setCovarianceMatrixEntry(2, 2, CNN); 226 } 227 228 /** 229 * Get the object [4,1] in covariance matrix (with index starting at 1). 230 * @return the object [4,1] in covariance matrix (in m²/s) 231 */ 232 public double getCrdotr() { 233 return covarianceMatrix.getEntry(3, 0); 234 } 235 236 /** 237 * Set the object [4,1] in covariance matrix (with index starting at 1). 238 * @param CRdotR = object [4,1] in covariance matrix (in m²/s) 239 */ 240 public void setCrdotr(final double CRdotR) { 241 refuseFurtherComments(); 242 setCovarianceMatrixEntry(3, 0, CRdotR); 243 } 244 245 /** 246 * Get the object [4,2] in covariance matrix (with index starting at 1). 247 * @return the object [4,2] in covariance matrix (in m²/s) 248 */ 249 public double getCrdott() { 250 return covarianceMatrix.getEntry(3, 1); 251 } 252 253 /** 254 * Set the object [4, 2] in covariance matrix (with index starting at 1). 255 * @param CRdotT = object [4, 2] in covariance matrix (in m²/s) 256 */ 257 public void setCrdott(final double CRdotT) { 258 refuseFurtherComments(); 259 setCovarianceMatrixEntry(3, 1, CRdotT); 260 } 261 262 /** 263 * Get the object [4, 3] in covariance matrix (with index starting at 1) . 264 * @return the object [4, 3] in covariance matrix (in m²/s) 265 */ 266 public double getCrdotn() { 267 return covarianceMatrix.getEntry(3, 2); 268 } 269 270 /** 271 * Set the object [4, 3] in covariance matrix (with index starting at 1). 272 * @param CRdotN = object [4,3] in covariance matrix (in m²/s) 273 */ 274 public void setCrdotn(final double CRdotN) { 275 refuseFurtherComments(); 276 setCovarianceMatrixEntry(3, 2, CRdotN); 277 } 278 279 /** 280 * Get the object [4, 4] in covariance matrix (with index starting at 1). 281 * @return the object [4, 4] in covariance matrix (in m²/s²) 282 */ 283 public double getCrdotrdot() { 284 return covarianceMatrix.getEntry(3, 3); 285 } 286 287 /** 288 * Set the object [4, 4] in covariance matrix (with index starting at 1). 289 * @param CRdotRdot = object [4, 4] in covariance matrix (in m²/s²) 290 */ 291 public void setCrdotrdot(final double CRdotRdot) { 292 refuseFurtherComments(); 293 setCovarianceMatrixEntry(3, 3, CRdotRdot); 294 } 295 296 /** 297 * Get the object [5, 1] in covariance matrix (with index starting at 1). 298 * @return the object [5, 1] in covariance matrix (in m²/s) 299 */ 300 public double getCtdotr() { 301 return covarianceMatrix.getEntry(4, 0); 302 } 303 304 /** 305 * Set the object [5,1] in covariance matrix (with index starting at 1). 306 * @param CTdotR = object [5,1] in covariance matrix (in m²/s) 307 */ 308 public void setCtdotr(final double CTdotR) { 309 refuseFurtherComments(); 310 setCovarianceMatrixEntry(4, 0, CTdotR); 311 } 312 313 /** 314 * Get the object [5,2] in covariance matrix (with index starting at 1). 315 * @return the object [5,2] in covariance matrix (in m²/s) 316 */ 317 public double getCtdott() { 318 return covarianceMatrix.getEntry(4, 1); 319 } 320 321 /** 322 * Set the object [5,2] in covariance matrix (with index starting at 1). 323 * @param CTdotT = object [5,2] in covariance matrix (in m²/s) 324 */ 325 public void setCtdott(final double CTdotT) { 326 refuseFurtherComments(); 327 setCovarianceMatrixEntry(4, 1, CTdotT); 328 } 329 330 /** 331 * Get the object [5,3] in covariance matrix (with index starting at 1). 332 * @return the object [5,3] in covariance matrix (in m²/s) 333 */ 334 public double getCtdotn() { 335 return covarianceMatrix.getEntry(4, 2); 336 } 337 338 /** 339 * Set the object [5,3] in covariance matrix (with index starting at 1). 340 * @param CTdotN = object [5,3] in covariance matrix (in m²/s) 341 */ 342 public void setCtdotn(final double CTdotN) { 343 refuseFurtherComments(); 344 setCovarianceMatrixEntry(4, 2, CTdotN); 345 } 346 347 /** 348 * Get the object [5,4] in covariance matrix (with index starting at 1). 349 * @return the object [5,4] in covariance matrix (in m²/s²) 350 */ 351 public double getCtdotrdot() { 352 return covarianceMatrix.getEntry(4, 3); 353 } 354 355 /** 356 * Set the object [5,4] in covariance matrix (with index starting at 1). 357 * @param CTdotRdot = object [5,4] in covariance matrix (in m²/s²) 358 */ 359 public void setCtdotrdot(final double CTdotRdot) { 360 refuseFurtherComments(); 361 setCovarianceMatrixEntry(4, 3, CTdotRdot); 362 } 363 364 /** 365 * Get the object [5,5] in covariance matrix (with index starting at 1). 366 * @return the object [5,5] in covariance matrix (in m²/s²) 367 */ 368 public double getCtdottdot() { 369 return covarianceMatrix.getEntry(4, 4); 370 } 371 372 /** 373 * Set the object [5,5] in covariance matrix (with index starting at 1). 374 * @param CTdotTdot = object [5,5] in covariance matrix (in m²/s²) 375 */ 376 public void setCtdottdot(final double CTdotTdot) { 377 refuseFurtherComments(); 378 setCovarianceMatrixEntry(4, 4, CTdotTdot); 379 } 380 381 /** 382 * Get the object [6,1] in covariance matrix (with index starting at 1). 383 * @return the object [6,1] in covariance matrix (in m²/s) 384 */ 385 public double getCndotr() { 386 return covarianceMatrix.getEntry(5, 0); 387 } 388 389 /** 390 * Set the object [6,1] in covariance matrix (with index starting at 1). 391 * @param CNdotR = object [6,1] in covariance matrix (in m²/s) 392 */ 393 public void setCndotr(final double CNdotR) { 394 refuseFurtherComments(); 395 setCovarianceMatrixEntry(5, 0, CNdotR); 396 } 397 398 /** 399 * Get the object [6,2] in covariance matrix (with index starting at 1). 400 * @return the object [6,2] in covariance matrix (in m²/s) 401 */ 402 public double getCndott() { 403 return covarianceMatrix.getEntry(5, 1); 404 } 405 406 /** 407 * Set the object [6,2] in covariance matrix (with index starting at 1). 408 * @param CNdotT = object [6,2] in covariance matrix (in m²/s) 409 */ 410 public void setCndott(final double CNdotT) { 411 refuseFurtherComments(); 412 setCovarianceMatrixEntry(5, 1, CNdotT); 413 } 414 415 /** 416 * Get the object [6,3] in covariance matrix (with index starting at 1). 417 * @return the object [6,3] in covariance matrix (in m²/s) 418 */ 419 public double getCndotn() { 420 return covarianceMatrix.getEntry(5, 2); 421 } 422 423 /** 424 * Set the object [6,3] in covariance matrix (with index starting at 1). 425 * @param CNdotN = object [6,3] in covariance matrix (in m²/s) 426 */ 427 public void setCndotn(final double CNdotN) { 428 refuseFurtherComments(); 429 setCovarianceMatrixEntry(5, 2, CNdotN); 430 } 431 432 /** 433 * Get the object [6,4] in covariance matrix (with index starting at 1). 434 * @return the object [6,4] in covariance matrix (in m²/s²) 435 */ 436 public double getCndotrdot() { 437 return covarianceMatrix.getEntry(5, 3); 438 } 439 440 /** 441 * Set the object [6,4] in covariance matrix (with index starting at 1). 442 * @param CNdotRdot = object [6,4] in covariance matrix (in m²/s²) 443 */ 444 public void setCndotrdot(final double CNdotRdot) { 445 refuseFurtherComments(); 446 setCovarianceMatrixEntry(5, 3, CNdotRdot); 447 } 448 449 /** 450 * Get the object [6,5] in covariance matrix (with index starting at 1). 451 * @return the object [6,5] in covariance matrix (in m²/s²) 452 */ 453 public double getCndottdot() { 454 return covarianceMatrix.getEntry(5, 4); 455 } 456 457 /** 458 * Set the object [6,5] in covariance matrix (with index starting at 1). 459 * @param CNdotTdot = object [6,5] in covariance matrix (in m²/s²) 460 */ 461 public void setCndottdot(final double CNdotTdot) { 462 refuseFurtherComments(); 463 setCovarianceMatrixEntry(5, 4, CNdotTdot); 464 } 465 466 /** 467 * Get the object [6,6] in covariance matrix (with index starting at 1). 468 * @return the object [6,6] in covariance matrix (in m²/s²) 469 */ 470 public double getCndotndot() { 471 return covarianceMatrix.getEntry(5, 5); 472 } 473 474 /** 475 * Set the object [6,6] in covariance matrix (with index starting at 1). 476 * @param CNdotNdot = object [6,6] in covariance matrix (in m²/s²) 477 */ 478 public void setCndotndot(final double CNdotNdot) { 479 refuseFurtherComments(); 480 setCovarianceMatrixEntry(5, 5, CNdotNdot); 481 } 482 483 /** 484 * Get the object [7,1] in covariance matrix (with index starting at 1). 485 * @return the object [7,1] in covariance matrix (in m³/kg) 486 */ 487 public double getCdrgr() { 488 return covarianceMatrix.getEntry(6, 0); 489 } 490 491 /** 492 * Set the object [7,1] in covariance matrix (with index starting at 1). 493 * @param CDRGR = object [7,1] in covariance matrix (in m³/kg) 494 */ 495 public void setCdrgr(final double CDRGR) { 496 refuseFurtherComments(); 497 setCovarianceMatrixEntry(6, 0, CDRGR); 498 } 499 500 /** 501 * Get the object [7,2] in covariance matrix. 502 * @return the object [7,2] in covariance matrix (in m³/kg) 503 */ 504 public double getCdrgt() { 505 return covarianceMatrix.getEntry(6, 1); 506 } 507 508 /** 509 * Set the object [7,2] in covariance matrix (with index starting at 1). 510 * @param CDRGT = object [7,2] in covariance matrix (in m³/kg) 511 */ 512 public void setCdrgt(final double CDRGT) { 513 refuseFurtherComments(); 514 setCovarianceMatrixEntry(6, 1, CDRGT); 515 } 516 517 /** 518 * Get the object [7,3] in covariance matrix (with index starting at 1). 519 * @return the object [7,3] in covariance matrix (in m³/kg) 520 */ 521 public double getCdrgn() { 522 return covarianceMatrix.getEntry(6, 2); 523 } 524 525 /** 526 * Set the object [7,3] in covariance matrix (with index starting at 1). 527 * @param CDRGN = object [7,3] in covariance matrix (in m³/kg) 528 */ 529 public void setCdrgn(final double CDRGN) { 530 refuseFurtherComments(); 531 setCovarianceMatrixEntry(6, 2, CDRGN); 532 } 533 534 /** 535 * Get the object [7,4] in covariance matrix (with index starting at 1). 536 * @return the object [7,4] in covariance matrix (in m³/(kg.s)) 537 */ 538 public double getCdrgrdot() { 539 return covarianceMatrix.getEntry(6, 3); 540 } 541 542 /** 543 * Set the object [7,4] in covariance matrix (with index starting at 1). 544 * @param CDRGRdot = object [7,4] in covariance matrix (in m³/(kg.s)) 545 */ 546 public void setCdrgrdot(final double CDRGRdot) { 547 refuseFurtherComments(); 548 setCovarianceMatrixEntry(6, 3, CDRGRdot); 549 } 550 551 /** 552 * Get the object [7,5] in covariance matrix (with index starting at 1). 553 * @return the object [7,5] in covariance matrix (in m³/(kg.s)) 554 */ 555 public double getCdrgtdot() { 556 return covarianceMatrix.getEntry(6, 4); 557 } 558 559 /** 560 * Set the object [7,5] in covariance matrix (with index starting at 1). 561 * @param CDRGTdot = object [7,5] in covariance matrix (in m³/(kg.s)) 562 */ 563 public void setCdrgtdot(final double CDRGTdot) { 564 refuseFurtherComments(); 565 setCovarianceMatrixEntry(6, 4, CDRGTdot); 566 } 567 568 /** 569 * Get the object [7,6] in covariance matrix (with index starting at 1). 570 * @return the object [7,6] in covariance matrix (in m³/(kg.s)) 571 */ 572 public double getCdrgndot() { 573 return covarianceMatrix.getEntry(6, 5); 574 } 575 576 /** 577 * Set the object [7,6] in covariance matrix (with index starting at 1). 578 * @param CDRGNdot = object [7,6] in covariance matrix (in m³/(kg.s)) 579 */ 580 public void setCdrgndot(final double CDRGNdot) { 581 refuseFurtherComments(); 582 setCovarianceMatrixEntry(6, 5, CDRGNdot); 583 } 584 585 /** 586 * Get the object [7,7] in covariance matrix (with index starting at 1). 587 * @return the object [7,7] in covariance matrix (in m⁴/kg²) 588 */ 589 public double getCdrgdrg() { 590 return covarianceMatrix.getEntry(6, 6); 591 } 592 593 /** 594 * Set the object [7,7] in covariance matrix (with index starting at 1). 595 * @param CDRGDRG = object [7,7] in covariance matrix (in m⁴/kg²) 596 */ 597 public void setCdrgdrg(final double CDRGDRG) { 598 refuseFurtherComments(); 599 setCovarianceMatrixEntry(6, 6, CDRGDRG); 600 } 601 602 /** 603 * Get the object [8,1] in covariance matrix (with index starting at 1). 604 * @return the object [8,1] in covariance matrix (in m³/kg) 605 */ 606 public double getCsrpr() { 607 return covarianceMatrix.getEntry(7, 0); 608 } 609 610 /** 611 * Set the object [8,1] in covariance matrix (with index starting at 1). 612 * @param CSRPR = object [8,1] in covariance matrix (in m³/kg) 613 */ 614 public void setCsrpr(final double CSRPR) { 615 refuseFurtherComments(); 616 setCovarianceMatrixEntry(7, 0, CSRPR); 617 } 618 619 /** 620 * Get the object [8,2] in covariance matrix (with index starting at 1). 621 * @return the object [8,2] in covariance matrix (in m³/kg) 622 */ 623 public double getCsrpt() { 624 return covarianceMatrix.getEntry(7, 1); 625 } 626 627 /** 628 * Set the object [8,2] in covariance matrix (with index starting at 1). 629 * @param CSRPT = object [8,2] in covariance matrix (in m³/kg) 630 */ 631 public void setCsrpt(final double CSRPT) { 632 refuseFurtherComments(); 633 setCovarianceMatrixEntry(7, 1, CSRPT); 634 } 635 636 /** 637 * Get the object [8,3] in covariance matrix (with index starting at 1). 638 * @return the object [8,3] in covariance matrix (in m³/kg) 639 */ 640 public double getCsrpn() { 641 return covarianceMatrix.getEntry(7, 2); 642 } 643 644 /** 645 * Set the object [8,3] in covariance matrix (with index starting at 1). 646 * @param CSRPN = object [8,3] in covariance matrix (in m³/kg) 647 */ 648 public void setCsrpn(final double CSRPN) { 649 refuseFurtherComments(); 650 setCovarianceMatrixEntry(7, 2, CSRPN); 651 } 652 653 /** 654 * Get the object [8,4] in covariance matrix (with index starting at 1). 655 * @return the object [8,4] in covariance matrix (in m³/(kg.s)) 656 */ 657 public double getCsrprdot() { 658 return covarianceMatrix.getEntry(7, 3); 659 } 660 661 /** 662 * Set the object [8,4] in covariance matrix (with index starting at 1). 663 * @param CSRPRdot = object [8,4] in covariance matrix (in m³/(kg.s)) 664 */ 665 public void setCsrprdot(final double CSRPRdot) { 666 refuseFurtherComments(); 667 setCovarianceMatrixEntry(7, 3, CSRPRdot); 668 } 669 670 /** 671 * Get the object [8,5] in covariance matrix (with index starting at 1). 672 * @return the object [8,5] in covariance matrix (in m³/(kg.s)) 673 */ 674 public double getCsrptdot() { 675 return covarianceMatrix.getEntry(7, 4); 676 } 677 678 /** 679 * Set the object [8,5] in covariance matrix (with index starting at 1). 680 * @param CSRPTdot = object [8,5] in covariance matrix (in m³/(kg.s)) 681 */ 682 public void setCsrptdot(final double CSRPTdot) { 683 refuseFurtherComments(); 684 setCovarianceMatrixEntry(7, 4, CSRPTdot); 685 } 686 687 /** 688 * Get the object [8,6] in covariance matrix (with index starting at 1). 689 * @return the object [8,6] in covariance matrix (in m³/(kg.s)) 690 */ 691 public double getCsrpndot() { 692 return covarianceMatrix.getEntry(7, 5); 693 } 694 695 /** 696 * Set the object [8,6] in covariance matrix (with index starting at 1). 697 * @param CSRPNdot = object [8,6] in covariance matrix (in m³/(kg.s)) 698 */ 699 public void setCsrpndot(final double CSRPNdot) { 700 refuseFurtherComments(); 701 setCovarianceMatrixEntry(7, 5, CSRPNdot); 702 } 703 704 /** 705 * Get the object [8,7] in covariance matrix (with index starting at 1). 706 * @return the object [8,7] in covariance matrix (in m⁴/kg²) 707 */ 708 public double getCsrpdrg() { 709 return covarianceMatrix.getEntry(7, 6); 710 } 711 712 /** 713 * Set the object [8,7] in covariance matrix (with index starting at 1). 714 * @param CSRPDRG = object [8,7] in covariance matrix (in m⁴/kg²) 715 */ 716 public void setCsrpdrg(final double CSRPDRG) { 717 refuseFurtherComments(); 718 setCovarianceMatrixEntry(7, 6, CSRPDRG); 719 } 720 721 /** 722 * Get the object [8,8] in covariance matrix (with index starting at 1). 723 * @return the object [8,8] in covariance matrix (in m⁴/kg²) 724 */ 725 public double getCsrpsrp() { 726 return covarianceMatrix.getEntry(7, 7); 727 } 728 729 /** 730 * Set the object [8,8] in covariance matrix (with index starting at 1). 731 * @param CSRPSRP = object [8,8] in covariance matrix (in m⁴/kg²) 732 */ 733 public void setCsrpsrp(final double CSRPSRP) { 734 refuseFurtherComments(); 735 setCovarianceMatrixEntry(7, 7, CSRPSRP); 736 } 737 738 /** 739 * Get the object [9,1] in covariance matrix (with index starting at 1). 740 * @return the object [9,1] in covariance matrix (in m²/s²) 741 */ 742 public double getCthrr() { 743 return covarianceMatrix.getEntry(8, 0); 744 } 745 746 /** 747 * Set the object [9,1] in covariance matrix (with index starting at 1). 748 * @param CTHRR = object [9,1] in covariance matrix (in m²/s²) 749 */ 750 public void setCthrr(final double CTHRR) { 751 refuseFurtherComments(); 752 setCovarianceMatrixEntry(8, 0, CTHRR); 753 } 754 755 /** 756 * Get the object [9,2] in covariance matrix (with index starting at 1). 757 * @return the object [9,2] in covariance matrix (in m²/s²) 758 */ 759 public double getCthrt() { 760 return covarianceMatrix.getEntry(8, 1); 761 } 762 763 /** 764 * Set the object [9,2] in covariance matrix (with index starting at 1). 765 * @param CTHRT = object [9,2] in covariance matrix (in m²/s²) 766 */ 767 public void setCthrt(final double CTHRT) { 768 refuseFurtherComments(); 769 setCovarianceMatrixEntry(8, 1, CTHRT); 770 } 771 772 /** 773 * Get the object [9,3] in covariance matrix (with index starting at 1). 774 * @return the object [9,3] in covariance matrix (in m²/s²) 775 */ 776 public double getCthrn() { 777 return covarianceMatrix.getEntry(8, 2); 778 } 779 780 /** 781 * Set the object [9,3] in covariance matrix (with index starting at 1). 782 * @param CTHRN = object [9,3] in covariance matrix (in m²/s²) 783 */ 784 public void setCthrn(final double CTHRN) { 785 refuseFurtherComments(); 786 setCovarianceMatrixEntry(8, 2, CTHRN); 787 } 788 789 /** 790 * Get the object [9,4] in covariance matrix (with index starting at 1). 791 * @return the object [9,4] in covariance matrix (in m²/s³) 792 */ 793 public double getCthrrdot() { 794 return covarianceMatrix.getEntry(8, 3); 795 } 796 797 /** 798 * Set the object [9,4] in covariance matrix (with index starting at 1). 799 * @param CTHRRdot = object [9,4] in covariance matrix (in m²/s³) 800 */ 801 public void setCthrrdot(final double CTHRRdot) { 802 refuseFurtherComments(); 803 setCovarianceMatrixEntry(8, 3, CTHRRdot); 804 } 805 806 /** 807 * Get the object [9,5] in covariance matrix (with index starting at 1). 808 * @return the object [9,5] in covariance matrix (in m²/s³) 809 */ 810 public double getCthrtdot() { 811 return covarianceMatrix.getEntry(8, 4); 812 } 813 814 /** 815 * Set the object [9,5] in covariance matrix (with index starting at 1). 816 * @param CTHRTdot = object [9,5] in covariance matrix (in m²/s³) 817 */ 818 public void setCthrtdot(final double CTHRTdot) { 819 refuseFurtherComments(); 820 setCovarianceMatrixEntry(8, 4, CTHRTdot); 821 } 822 823 /** 824 * Get the object [9,6] in covariance matrix (with index starting at 1). 825 * @return the object [9,6] in covariance matrix (in m²/s³) 826 */ 827 public double getCthrndot() { 828 return covarianceMatrix.getEntry(8, 5); 829 } 830 831 /** 832 * Set the object [9,6] in covariance matrix (with index starting at 1). 833 * @param CTHRNdot = object [9,6] in covariance matrix (in m²/s³) 834 */ 835 public void setCthrndot(final double CTHRNdot) { 836 refuseFurtherComments(); 837 setCovarianceMatrixEntry(8, 5, CTHRNdot); 838 } 839 840 /** 841 * Get the object [9,7] in covariance matrix (with index starting at 1). 842 * @return the object [9,7] in covariance matrix (in m³/(kg.s²)) 843 */ 844 public double getCthrdrg() { 845 return covarianceMatrix.getEntry(8, 6); 846 } 847 848 /** 849 * Set the object [9,7] in covariance matrix (with index starting at 1). 850 * @param CTHRDRG = object [9,7] in covariance matrix (in m³/(kg.s²)) 851 */ 852 public void setCthrdrg(final double CTHRDRG) { 853 refuseFurtherComments(); 854 setCovarianceMatrixEntry(8, 6, CTHRDRG); 855 } 856 857 /** 858 * Get the object [9,8] in covariance matrix (with index starting at 1). 859 * @return the object [9,8] in covariance matrix (in m³/(kg.s²)) 860 */ 861 public double getCthrsrp() { 862 return covarianceMatrix.getEntry(8, 7); 863 } 864 865 /** 866 * Set the object [9,8] in covariance matrix (with index starting at 1). 867 * @param CTHRSRP = object [9,8] in covariance matrix (in m³/(kg.s²)) 868 */ 869 public void setCthrsrp(final double CTHRSRP) { 870 refuseFurtherComments(); 871 setCovarianceMatrixEntry(8, 7, CTHRSRP); 872 } 873 874 /** 875 * Get the object [9,9] in covariance matrix (with index starting at 1). 876 * @return the object [9,9] in covariance matrix (in m²/s⁴) 877 */ 878 public double getCthrthr() { 879 return covarianceMatrix.getEntry(8, 8); 880 } 881 882 /** 883 * Set the object [9,9] in covariance matrix (with index starting at 1). 884 * @param CTHRTHR = object [9,9] in covariance matrix (in m²/s⁴) 885 */ 886 public void setCthrthr(final double CTHRTHR) { 887 refuseFurtherComments(); 888 setCovarianceMatrixEntry(8, 8, CTHRTHR); 889 } 890 891 }