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.errors.OrekitException; 22 import org.orekit.errors.OrekitMessages; 23 import org.orekit.files.ccsds.section.CommentsContainer; 24 25 /** 26 * Container for XYZ covariance matrix data. 27 * <p> 28 * Beware that the Orekit getters and setters all rely on SI units. The parsers 29 * and writers take care of converting these SI units into CCSDS mandatory units. 30 * The {@link org.orekit.utils.units.Unit Unit} class provides useful 31 * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and 32 * {@link org.orekit.utils.units.Unit#toSI(double) toSI} methods in case the callers 33 * already use CCSDS units instead of the API SI units. The general-purpose 34 * {@link org.orekit.utils.units.Unit Unit} class (without an 's') and the 35 * CCSDS-specific {@link org.orekit.files.ccsds.definitions.Units Units} class 36 * (with an 's') also provide some predefined units. These predefined units and the 37 * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and 38 * {@link org.orekit.utils.units.Unit#toSI(double) toSI} conversion methods are indeed 39 * what the parsers and writers use for the conversions. 40 * </p> 41 * <p> 42 * This class as a RealMatrix as attribute which can be access with 43 * {@code getXYZCovariaxMatrix} method. Beware that there are thus two ways to modify 44 * the XYZ covariance : {@code setC…} ({@code setCxx}, {@code setCyx}…) which should be 45 * prioritized and {@code getXYZCovariaxMatrix.setEntry(row, col, value)}. 46 * </p> 47 * <p> 48 * The XYZ Covariance Matrix is only provided if {@link CdmMetadataKey#ALT_COV_TYPE} is 49 * {@link AltCovarianceType#XYZ}, otherwise its terms will return {@code NaN}. 50 * </p> 51 * <p> 52 * When available, the matrix is given in the 9×9 Lower Triangular Form. All parameters 53 * of the 6×6 position/velocity submatrix are mandatory. The remaining elements will 54 * return {@code NaN} if not provided. 55 * </p> 56 */ 57 public class XYZCovariance extends CommentsContainer { 58 59 /** XYZ covariance matrix. */ 60 private final RealMatrix covarianceMatrix; 61 62 /** Flag indicating whether the alternate covariance type set in the CDM Object metadata section is XYZ. */ 63 private final boolean covXYZset; 64 65 /** Simple constructor. To update matrix value there are 2 ways to modify the XYZ 66 * covariance : setC... ( setCxx, setCyx ...) which should be prioritized and 67 * getXYZCovariaxMatrix.setEntry(row, col, value). 68 * <p> The XYZ Covariance Matrix is only provided if {@link CdmMetadataKey#ALT_COV_TYPE} is {@link AltCovarianceType#XYZ}, otherwise 69 * its terms will return NaN. </p> 70 * <p> When available, the matrix is given in the 9×9 Lower Triangular Form. All parameters of the 6×6 position/velocity submatrix 71 * are mandatory. The remaining elements will return NaN if not provided.</p> 72 * @param covXYZset Flag indicating whether the alternate covariance type set in the CDM Object metadata section is XYZ. 73 */ 74 public XYZCovariance(final boolean covXYZset) { 75 this.covXYZset = covXYZset; 76 covarianceMatrix = MatrixUtils.createRealMatrix(9, 9); 77 for (int i = 0; i < covarianceMatrix.getRowDimension(); ++i) { 78 for (int j = 0; j <= i; ++j) { 79 covarianceMatrix.setEntry(i, j, Double.NaN); 80 } 81 } 82 83 } 84 85 /** {@inheritDoc} */ 86 @Override 87 public void validate(final double version) { 88 super.validate(version); 89 90 // Conditional on ALT_COV_TYPE = XYZ 91 if (!isCovXYZset()) { 92 throw new OrekitException(OrekitMessages.CCSDS_DATE_INVALID_PREAMBLE_FIELD, CdmMetadataKey.ALT_COV_TYPE); 93 } 94 95 // We only check values that are mandatory in a cdm file 96 checkNotNaN(getCxx(), XYZCovarianceKey.CX_X.name()); 97 checkNotNaN(getCyx(), XYZCovarianceKey.CY_X.name()); 98 checkNotNaN(getCyy(), XYZCovarianceKey.CY_Y.name()); 99 checkNotNaN(getCzx(), XYZCovarianceKey.CZ_X.name()); 100 checkNotNaN(getCzy(), XYZCovarianceKey.CZ_Y.name()); 101 checkNotNaN(getCzz(), XYZCovarianceKey.CZ_Z.name()); 102 checkNotNaN(getCxdotx(), XYZCovarianceKey.CXDOT_X.name()); 103 checkNotNaN(getCxdoty(), XYZCovarianceKey.CXDOT_Y.name()); 104 checkNotNaN(getCxdotz(), XYZCovarianceKey.CXDOT_Z.name()); 105 checkNotNaN(getCxdotxdot(), XYZCovarianceKey.CXDOT_XDOT.name()); 106 checkNotNaN(getCydotx(), XYZCovarianceKey.CYDOT_X.name()); 107 checkNotNaN(getCydoty(), XYZCovarianceKey.CYDOT_Y.name()); 108 checkNotNaN(getCydotz(), XYZCovarianceKey.CYDOT_Z.name()); 109 checkNotNaN(getCydotxdot(), XYZCovarianceKey.CYDOT_XDOT.name()); 110 checkNotNaN(getCydotydot(), XYZCovarianceKey.CYDOT_YDOT.name()); 111 checkNotNaN(getCzdotx(), XYZCovarianceKey.CZDOT_X.name()); 112 checkNotNaN(getCzdoty(), XYZCovarianceKey.CZDOT_Y.name()); 113 checkNotNaN(getCzdotz(), XYZCovarianceKey.CZDOT_Z.name()); 114 checkNotNaN(getCzdotxdot(), XYZCovarianceKey.CZDOT_XDOT.name()); 115 checkNotNaN(getCzdotydot(), XYZCovarianceKey.CZDOT_YDOT.name()); 116 checkNotNaN(getCzdotzdot(), XYZCovarianceKey.CZDOT_ZDOT.name()); 117 } 118 119 /** Set an entry in the XYZ covariance matrix. 120 * <p> 121 * Both m(j, k) and m(k, j) are set. 122 * </p> 123 * @param j row index (must be between 0 and 5 (inclusive) 124 * @param k column index (must be between 0 and 5 (inclusive) 125 * @param entry value of the matrix entry 126 */ 127 public void setCovarianceMatrixEntry(final int j, final int k, final double entry) { 128 covarianceMatrix.setEntry(j, k, entry); 129 covarianceMatrix.setEntry(k, j, entry); 130 } 131 132 /** 133 * Get the XYZ covariance matrix. 134 * <p> The XYZ Covariance Matrix is only provided if {@link CdmMetadataKey#ALT_COV_TYPE} is {@link AltCovarianceType#XYZ}, otherwise 135 * its terms will return NaN. </p> 136 * <p> When available, the matrix is given in the 9×9 Lower Triangular Form. All parameters of the 6×6 position/velocity submatrix 137 * are mandatory. The remaining elements will return NaN if not provided.</p> 138 * @return the XYZ covariance matrix 139 */ 140 public RealMatrix getXYZCovarianceMatrix() { 141 return covarianceMatrix; 142 } 143 144 /** 145 * Get the object [1,1] in covariance matrix (with index starting at 1). 146 * @return the object [1,1] in covariance matrix (in m²) 147 */ 148 public double getCxx() { 149 return covarianceMatrix.getEntry(0, 0); 150 } 151 152 /** 153 * Set the object [1,1] in covariance matrix (with index starting at 1). 154 * @param CXX = object [1,1] in covariance matrix (in m²) 155 */ 156 public void setCxx(final double CXX) { 157 refuseFurtherComments(); 158 159 // Conditional on ALT_COV_TYPE = XYZ 160 if (!isCovXYZset()) { 161 throw new OrekitException(OrekitMessages.CCSDS_DATE_INVALID_PREAMBLE_FIELD, CdmMetadataKey.ALT_COV_TYPE); 162 } 163 164 setCovarianceMatrixEntry(0, 0, CXX); 165 } 166 167 /** 168 * Get the object [2,1] in covariance matrix (with index starting at 1). 169 * @return the object [2,1] in covariance matrix (in m²) 170 */ 171 public double getCyx() { 172 return covarianceMatrix.getEntry(1, 0); 173 } 174 175 /** 176 * Set the object [2,1] in covariance matrix (with index starting at 1). 177 * @param CYX = object [2,1] in covariance matrix (in m²) 178 */ 179 public void setCyx(final double CYX) { 180 refuseFurtherComments(); 181 setCovarianceMatrixEntry(1, 0, CYX); 182 } 183 184 /** 185 * Get the object [2,2] in covariance matrix (with index starting at 1). 186 * @return the object [2,2] in covariance matrix (in m²) 187 */ 188 public double getCyy() { 189 return covarianceMatrix.getEntry(1, 1); 190 } 191 192 /** 193 * Set the object [2,2] in covariance matrix (with index starting at 1). 194 * @param CYY = object [2,2] in covariance matrix (in m²) 195 */ 196 public void setCyy(final double CYY) { 197 refuseFurtherComments(); 198 setCovarianceMatrixEntry(1, 1, CYY); 199 } 200 201 /** 202 * Get the object [3,1] in covariance matrix (with index starting at 1). 203 * @return the object [3,1] in covariance matrix (in m²) 204 */ 205 public double getCzx() { 206 return covarianceMatrix.getEntry(2, 0); 207 } 208 209 /** 210 * Set the object [3,1] in covariance matrix (with index starting at 1). 211 * @param CZX = object [3,1] in covariance matrix (in m²) 212 */ 213 public void setCzx(final double CZX) { 214 refuseFurtherComments(); 215 setCovarianceMatrixEntry(2, 0, CZX); 216 } 217 218 /** 219 * Get the object [3,2] in covariance matrix (with index starting at 1). 220 * @return the object [3,2] in covariance matrix (in m²) 221 */ 222 public double getCzy() { 223 return covarianceMatrix.getEntry(2, 1); 224 } 225 226 /** 227 * Set the object [3,2] in covariance matrix (with index starting at 1). 228 * @param CZY = object [3,2] in covariance matrix (in m²) 229 */ 230 public void setCzy(final double CZY) { 231 refuseFurtherComments(); 232 setCovarianceMatrixEntry(2, 1, CZY); 233 } 234 235 /** 236 * Get the object [3,3] in covariance matrix (with index starting at 1). 237 * @return the object [3,3] in covariance matrix (in m²) 238 */ 239 public double getCzz() { 240 return covarianceMatrix.getEntry(2, 2); 241 } 242 243 /** 244 * Set the object [3,3] in covariance matrix (with index starting at 1). 245 * @param CZZ = object [3,3] in covariance matrix (in m²) 246 */ 247 public void setCzz(final double CZZ) { 248 refuseFurtherComments(); 249 setCovarianceMatrixEntry(2, 2, CZZ); 250 } 251 252 /** 253 * Get the object [4,1] in covariance matrix (with index starting at 1). 254 * @return the object [4,1] in covariance matrix (in m²/s) 255 */ 256 public double getCxdotx() { 257 return covarianceMatrix.getEntry(3, 0); 258 } 259 260 /** 261 * Set the object [4,1] in covariance matrix (with index starting at 1). 262 * @param CXdotX = object [4,1] in covariance matrix (in m²/s) 263 */ 264 public void setCxdotx(final double CXdotX) { 265 refuseFurtherComments(); 266 setCovarianceMatrixEntry(3, 0, CXdotX); 267 } 268 269 /** 270 * Get the object [4,2] in covariance matrix (with index starting at 1). 271 * @return the object [4,2] in covariance matrix (in m²/s) 272 */ 273 public double getCxdoty() { 274 return covarianceMatrix.getEntry(3, 1); 275 } 276 277 /** 278 * Set the object [4, 2] in covariance matrix (with index starting at 1). 279 * @param CXdotY = object [4, 2] in covariance matrix (in m²/s) 280 */ 281 public void setCxdoty(final double CXdotY) { 282 refuseFurtherComments(); 283 setCovarianceMatrixEntry(3, 1, CXdotY); 284 } 285 286 /** 287 * Get the object [4, 3] in covariance matrix (with index starting at 1) . 288 * @return the object [4, 3] in covariance matrix (in m²/s) 289 */ 290 public double getCxdotz() { 291 return covarianceMatrix.getEntry(3, 2); 292 } 293 294 /** 295 * Set the object [4, 3] in covariance matrix (with index starting at 1). 296 * @param CXdotZ = object [4,3] in covariance matrix (in m²/s) 297 */ 298 public void setCxdotz(final double CXdotZ) { 299 refuseFurtherComments(); 300 setCovarianceMatrixEntry(3, 2, CXdotZ); 301 } 302 303 /** 304 * Get the object [4, 4] in covariance matrix (with index starting at 1). 305 * @return the object [4, 4] in covariance matrix (in m²/s²) 306 */ 307 public double getCxdotxdot() { 308 return covarianceMatrix.getEntry(3, 3); 309 } 310 311 /** 312 * Set the object [4, 4] in covariance matrix (with index starting at 1). 313 * @param CXdotXdot = object [4, 4] in covariance matrix (in m²/s²) 314 */ 315 public void setCxdotxdot(final double CXdotXdot) { 316 refuseFurtherComments(); 317 setCovarianceMatrixEntry(3, 3, CXdotXdot); 318 } 319 320 /** 321 * Get the object [5, 1] in covariance matrix (with index starting at 1). 322 * @return the object [5, 1] in covariance matrix (in m²/s) 323 */ 324 public double getCydotx() { 325 return covarianceMatrix.getEntry(4, 0); 326 } 327 328 /** 329 * Set the object [5,1] in covariance matrix (with index starting at 1). 330 * @param CYdotX = object [5,1] in covariance matrix (in m²/s) 331 */ 332 public void setCydotx(final double CYdotX) { 333 refuseFurtherComments(); 334 setCovarianceMatrixEntry(4, 0, CYdotX); 335 } 336 337 /** 338 * Get the object [5,2] in covariance matrix (with index starting at 1). 339 * @return the object [5,2] in covariance matrix (in m²/s) 340 */ 341 public double getCydoty() { 342 return covarianceMatrix.getEntry(4, 1); 343 } 344 345 /** 346 * Set the object [5,2] in covariance matrix (with index starting at 1). 347 * @param CYdotY = object [5,2] in covariance matrix (in m²/s) 348 */ 349 public void setCydoty(final double CYdotY) { 350 refuseFurtherComments(); 351 setCovarianceMatrixEntry(4, 1, CYdotY); 352 } 353 354 /** 355 * Get the object [5,3] in covariance matrix (with index starting at 1). 356 * @return the object [5,3] in covariance matrix (in m²/s) 357 */ 358 public double getCydotz() { 359 return covarianceMatrix.getEntry(4, 2); 360 } 361 362 /** 363 * Set the object [5,3] in covariance matrix (with index starting at 1). 364 * @param CYdotZ = object [5,3] in covariance matrix (in m²/s) 365 */ 366 public void setCydotz(final double CYdotZ) { 367 refuseFurtherComments(); 368 setCovarianceMatrixEntry(4, 2, CYdotZ); 369 } 370 371 /** 372 * Get the object [5,4] in covariance matrix (with index starting at 1). 373 * @return the object [5,4] in covariance matrix (in m²/s²) 374 */ 375 public double getCydotxdot() { 376 return covarianceMatrix.getEntry(4, 3); 377 } 378 379 /** 380 * Set the object [5,4] in covariance matrix (with index starting at 1). 381 * @param CYdotXdot = object [5,4] in covariance matrix (in m²/s²) 382 */ 383 public void setCydotxdot(final double CYdotXdot) { 384 refuseFurtherComments(); 385 setCovarianceMatrixEntry(4, 3, CYdotXdot); 386 } 387 388 /** 389 * Get the object [5,5] in covariance matrix (with index starting at 1). 390 * @return the object [5,5] in covariance matrix (in m²/s²) 391 */ 392 public double getCydotydot() { 393 return covarianceMatrix.getEntry(4, 4); 394 } 395 396 /** 397 * Set the object [5,5] in covariance matrix (with index starting at 1). 398 * @param CYdotYdot = object [5,5] in covariance matrix (in m²/s²) 399 */ 400 public void setCydotydot(final double CYdotYdot) { 401 refuseFurtherComments(); 402 setCovarianceMatrixEntry(4, 4, CYdotYdot); 403 } 404 405 /** 406 * Get the object [6,1] in covariance matrix (with index starting at 1). 407 * @return the object [6,1] in covariance matrix (in m²/s) 408 */ 409 public double getCzdotx() { 410 return covarianceMatrix.getEntry(5, 0); 411 } 412 413 /** 414 * Set the object [6,1] in covariance matrix (with index starting at 1). 415 * @param CZdotX = object [6,1] in covariance matrix (in m²/s) 416 */ 417 public void setCzdotx(final double CZdotX) { 418 refuseFurtherComments(); 419 setCovarianceMatrixEntry(5, 0, CZdotX); 420 } 421 422 /** 423 * Get the object [6,2] in covariance matrix (with index starting at 1). 424 * @return the object [6,2] in covariance matrix (in m²/s) 425 */ 426 public double getCzdoty() { 427 return covarianceMatrix.getEntry(5, 1); 428 } 429 430 /** 431 * Set the object [6,2] in covariance matrix (with index starting at 1). 432 * @param CZdotY = object [6,2] in covariance matrix (in m²/s) 433 */ 434 public void setCzdoty(final double CZdotY) { 435 refuseFurtherComments(); 436 setCovarianceMatrixEntry(5, 1, CZdotY); 437 } 438 439 /** 440 * Get the object [6,3] in covariance matrix (with index starting at 1). 441 * @return the object [6,3] in covariance matrix (in m²/s) 442 */ 443 public double getCzdotz() { 444 return covarianceMatrix.getEntry(5, 2); 445 } 446 447 /** 448 * Set the object [6,3] in covariance matrix (with index starting at 1). 449 * @param CZdotZ = object [6,3] in covariance matrix (in m²/s) 450 */ 451 public void setCzdotz(final double CZdotZ) { 452 refuseFurtherComments(); 453 setCovarianceMatrixEntry(5, 2, CZdotZ); 454 } 455 456 /** 457 * Get the object [6,4] in covariance matrix (with index starting at 1). 458 * @return the object [6,4] in covariance matrix (in m²/s²) 459 */ 460 public double getCzdotxdot() { 461 return covarianceMatrix.getEntry(5, 3); 462 } 463 464 /** 465 * Set the object [6,4] in covariance matrix (with index starting at 1). 466 * @param CZdotXdot = object [6,4] in covariance matrix (in m²/s²) 467 */ 468 public void setCzdotxdot(final double CZdotXdot) { 469 refuseFurtherComments(); 470 setCovarianceMatrixEntry(5, 3, CZdotXdot); 471 } 472 473 /** 474 * Get the object [6,5] in covariance matrix (with index starting at 1). 475 * @return the object [6,5] in covariance matrix (in m²/s²) 476 */ 477 public double getCzdotydot() { 478 return covarianceMatrix.getEntry(5, 4); 479 } 480 481 /** 482 * Set the object [6,5] in covariance matrix (with index starting at 1). 483 * @param CZdotYdot = object [6,5] in covariance matrix (in m²/s²) 484 */ 485 public void setCzdotydot(final double CZdotYdot) { 486 refuseFurtherComments(); 487 setCovarianceMatrixEntry(5, 4, CZdotYdot); 488 } 489 490 /** 491 * Get the object [6,6] in covariance matrix (with index starting at 1). 492 * @return the object [6,6] in covariance matrix (in m²/s²) 493 */ 494 public double getCzdotzdot() { 495 return covarianceMatrix.getEntry(5, 5); 496 } 497 498 /** 499 * Set the object [6,6] in covariance matrix (with index starting at 1). 500 * @param CZdotZdot = object [6,6] in covariance matrix (in m²/s²) 501 */ 502 public void setCzdotzdot(final double CZdotZdot) { 503 refuseFurtherComments(); 504 setCovarianceMatrixEntry(5, 5, CZdotZdot); 505 } 506 507 /** 508 * Get the object [7,1] in covariance matrix (with index starting at 1). 509 * @return the object [7,1] in covariance matrix (in m³/kg) 510 */ 511 public double getCdrgx() { 512 return covarianceMatrix.getEntry(6, 0); 513 } 514 515 /** 516 * Set the object [7,1] in covariance matrix (with index starting at 1). 517 * @param CDRGX = object [7,1] in covariance matrix (in m³/kg) 518 */ 519 public void setCdrgx(final double CDRGX) { 520 refuseFurtherComments(); 521 setCovarianceMatrixEntry(6, 0, CDRGX); 522 } 523 524 /** 525 * Get the object [7,2] in covariance matrix. 526 * @return the object [7,2] in covariance matrix (in m³/kg) 527 */ 528 public double getCdrgy() { 529 return covarianceMatrix.getEntry(6, 1); 530 } 531 532 /** 533 * Set the object [7,2] in covariance matrix (with index starting at 1). 534 * @param CDRGY = object [7,2] in covariance matrix (in m³/kg) 535 */ 536 public void setCdrgy(final double CDRGY) { 537 refuseFurtherComments(); 538 setCovarianceMatrixEntry(6, 1, CDRGY); 539 } 540 541 /** 542 * Get the object [7,3] in covariance matrix (with index starting at 1). 543 * @return the object [7,3] in covariance matrix (in m³/kg) 544 */ 545 public double getCdrgz() { 546 return covarianceMatrix.getEntry(6, 2); 547 } 548 549 /** 550 * Set the object [7,3] in covariance matrix (with index starting at 1). 551 * @param CDRGZ = object [7,3] in covariance matrix (in m³/kg) 552 */ 553 public void setCdrgz(final double CDRGZ) { 554 refuseFurtherComments(); 555 setCovarianceMatrixEntry(6, 2, CDRGZ); 556 } 557 558 /** 559 * Get the object [7,4] in covariance matrix (with index starting at 1). 560 * @return the object [7,4] in covariance matrix (in m³/(kg.s)) 561 */ 562 public double getCdrgxdot() { 563 return covarianceMatrix.getEntry(6, 3); 564 } 565 566 /** 567 * Set the object [7,4] in covariance matrix (with index starting at 1). 568 * @param CDRGXdot = object [7,4] in covariance matrix (in m³/(kg.s)) 569 */ 570 public void setCdrgxdot(final double CDRGXdot) { 571 refuseFurtherComments(); 572 setCovarianceMatrixEntry(6, 3, CDRGXdot); 573 } 574 575 /** 576 * Get the object [7,5] in covariance matrix (with index starting at 1). 577 * @return the object [7,5] in covariance matrix (in m³/(kg.s)) 578 */ 579 public double getCdrgydot() { 580 return covarianceMatrix.getEntry(6, 4); 581 } 582 583 /** 584 * Set the object [7,5] in covariance matrix (with index starting at 1). 585 * @param CDRGYdot = object [7,5] in covariance matrix (in m³/(kg.s)) 586 */ 587 public void setCdrgydot(final double CDRGYdot) { 588 refuseFurtherComments(); 589 setCovarianceMatrixEntry(6, 4, CDRGYdot); 590 } 591 592 /** 593 * Get the object [7,6] in covariance matrix (with index starting at 1). 594 * @return the object [7,6] in covariance matrix (in m³/(kg.s)) 595 */ 596 public double getCdrgzdot() { 597 return covarianceMatrix.getEntry(6, 5); 598 } 599 600 /** 601 * Set the object [7,6] in covariance matrix (with index starting at 1). 602 * @param CDRGZdot = object [7,6] in covariance matrix (in m³/(kg.s)) 603 */ 604 public void setCdrgzdot(final double CDRGZdot) { 605 refuseFurtherComments(); 606 setCovarianceMatrixEntry(6, 5, CDRGZdot); 607 } 608 609 /** 610 * Get the object [7,7] in covariance matrix (with index starting at 1). 611 * @return the object [7,7] in covariance matrix (in m⁴/kg²) 612 */ 613 public double getCdrgdrg() { 614 return covarianceMatrix.getEntry(6, 6); 615 } 616 617 /** 618 * Set the object [7,7] in covariance matrix (with index starting at 1). 619 * @param CDRGDRG = object [7,7] in covariance matrix (in m⁴/kg²) 620 */ 621 public void setCdrgdrg(final double CDRGDRG) { 622 refuseFurtherComments(); 623 setCovarianceMatrixEntry(6, 6, CDRGDRG); 624 } 625 626 /** 627 * Get the object [8,1] in covariance matrix (with index starting at 1). 628 * @return the object [8,1] in covariance matrix (in m³/kg) 629 */ 630 public double getCsrpx() { 631 return covarianceMatrix.getEntry(7, 0); 632 } 633 634 /** 635 * Set the object [8,1] in covariance matrix (with index starting at 1). 636 * @param CSRPX = object [8,1] in covariance matrix (in m³/kg) 637 */ 638 public void setCsrpx(final double CSRPX) { 639 refuseFurtherComments(); 640 setCovarianceMatrixEntry(7, 0, CSRPX); 641 } 642 643 /** 644 * Get the object [8,2] in covariance matrix (with index starting at 1). 645 * @return the object [8,2] in covariance matrix (in m³/kg) 646 */ 647 public double getCsrpy() { 648 return covarianceMatrix.getEntry(7, 1); 649 } 650 651 /** 652 * Set the object [8,2] in covariance matrix (with index starting at 1). 653 * @param CSRPY = object [8,2] in covariance matrix (in m³/kg) 654 */ 655 public void setCsrpy(final double CSRPY) { 656 refuseFurtherComments(); 657 setCovarianceMatrixEntry(7, 1, CSRPY); 658 } 659 660 /** 661 * Get the object [8,3] in covariance matrix (with index starting at 1). 662 * @return the object [8,3] in covariance matrix (in m³/kg) 663 */ 664 public double getCsrpz() { 665 return covarianceMatrix.getEntry(7, 2); 666 } 667 668 /** 669 * Set the object [8,3] in covariance matrix (with index starting at 1). 670 * @param CSRPZ = object [8,3] in covariance matrix (in m³/kg) 671 */ 672 public void setCsrpz(final double CSRPZ) { 673 refuseFurtherComments(); 674 setCovarianceMatrixEntry(7, 2, CSRPZ); 675 } 676 677 /** 678 * Get the object [8,4] in covariance matrix (with index starting at 1). 679 * @return the object [8,4] in covariance matrix (in m³/(kg.s)) 680 */ 681 public double getCsrpxdot() { 682 return covarianceMatrix.getEntry(7, 3); 683 } 684 685 /** 686 * Set the object [8,4] in covariance matrix (with index starting at 1). 687 * @param CSRPXdot = object [8,4] in covariance matrix (in m³/(kg.s)) 688 */ 689 public void setCsrpxdot(final double CSRPXdot) { 690 refuseFurtherComments(); 691 setCovarianceMatrixEntry(7, 3, CSRPXdot); 692 } 693 694 /** 695 * Get the object [8,5] in covariance matrix (with index starting at 1). 696 * @return the object [8,5] in covariance matrix (in m³/(kg.s)) 697 */ 698 public double getCsrpydot() { 699 return covarianceMatrix.getEntry(7, 4); 700 } 701 702 /** 703 * Set the object [8,5] in covariance matrix (with index starting at 1). 704 * @param CSRPYdot = object [8,5] in covariance matrix (in m³/(kg.s)) 705 */ 706 public void setCsrpydot(final double CSRPYdot) { 707 refuseFurtherComments(); 708 setCovarianceMatrixEntry(7, 4, CSRPYdot); 709 } 710 711 /** 712 * Get the object [8,6] in covariance matrix (with index starting at 1). 713 * @return the object [8,6] in covariance matrix (in m³/(kg.s)) 714 */ 715 public double getCsrpzdot() { 716 return covarianceMatrix.getEntry(7, 5); 717 } 718 719 /** 720 * Set the object [8,6] in covariance matrix (with index starting at 1). 721 * @param CSRPZdot = object [8,6] in covariance matrix (in m³/(kg.s)) 722 */ 723 public void setCsrpzdot(final double CSRPZdot) { 724 refuseFurtherComments(); 725 setCovarianceMatrixEntry(7, 5, CSRPZdot); 726 } 727 728 /** 729 * Get the object [8,7] in covariance matrix (with index starting at 1). 730 * @return the object [8,7] in covariance matrix (in m⁴/kg²) 731 */ 732 public double getCsrpdrg() { 733 return covarianceMatrix.getEntry(7, 6); 734 } 735 736 /** 737 * Set the object [8,7] in covariance matrix (with index starting at 1). 738 * @param CSRPDRG = object [8,7] in covariance matrix (in m⁴/kg²) 739 */ 740 public void setCsrpdrg(final double CSRPDRG) { 741 refuseFurtherComments(); 742 setCovarianceMatrixEntry(7, 6, CSRPDRG); 743 } 744 745 /** 746 * Get the object [8,8] in covariance matrix (with index starting at 1). 747 * @return the object [8,8] in covariance matrix (in m⁴/kg²) 748 */ 749 public double getCsrpsrp() { 750 return covarianceMatrix.getEntry(7, 7); 751 } 752 753 /** 754 * Set the object [8,8] in covariance matrix (with index starting at 1). 755 * @param CSRPSRP = object [8,8] in covariance matrix (in m⁴/kg²) 756 */ 757 public void setCsrpsrp(final double CSRPSRP) { 758 refuseFurtherComments(); 759 setCovarianceMatrixEntry(7, 7, CSRPSRP); 760 } 761 762 /** 763 * Get the object [9,1] in covariance matrix (with index starting at 1). 764 * @return the object [9,1] in covariance matrix (in m²/s²) 765 */ 766 public double getCthrx() { 767 return covarianceMatrix.getEntry(8, 0); 768 } 769 770 /** 771 * Set the object [9,1] in covariance matrix (with index starting at 1). 772 * @param CTHRX = object [9,1] in covariance matrix (in m²/s²) 773 */ 774 public void setCthrx(final double CTHRX) { 775 refuseFurtherComments(); 776 setCovarianceMatrixEntry(8, 0, CTHRX); 777 } 778 779 /** 780 * Get the object [9,2] in covariance matrix (with index starting at 1). 781 * @return the object [9,2] in covariance matrix (in m²/s²) 782 */ 783 public double getCthry() { 784 return covarianceMatrix.getEntry(8, 1); 785 } 786 787 /** 788 * Set the object [9,2] in covariance matrix (with index starting at 1). 789 * @param CTHRY = object [9,2] in covariance matrix (in m²/s²) 790 */ 791 public void setCthry(final double CTHRY) { 792 refuseFurtherComments(); 793 setCovarianceMatrixEntry(8, 1, CTHRY); 794 } 795 796 /** 797 * Get the object [9,3] in covariance matrix (with index starting at 1). 798 * @return the object [9,3] in covariance matrix (in m²/s²) 799 */ 800 public double getCthrz() { 801 return covarianceMatrix.getEntry(8, 2); 802 } 803 804 /** 805 * Set the object [9,3] in covariance matrix (with index starting at 1). 806 * @param CTHRZ = object [9,3] in covariance matrix (in m²/s²) 807 */ 808 public void setCthrz(final double CTHRZ) { 809 refuseFurtherComments(); 810 setCovarianceMatrixEntry(8, 2, CTHRZ); 811 } 812 813 /** 814 * Get the object [9,4] in covariance matrix (with index starting at 1). 815 * @return the object [9,4] in covariance matrix (in m²/s³) 816 */ 817 public double getCthrxdot() { 818 return covarianceMatrix.getEntry(8, 3); 819 } 820 821 /** 822 * Set the object [9,4] in covariance matrix (with index starting at 1). 823 * @param CTHRXdot = object [9,4] in covariance matrix (in m²/s³) 824 */ 825 public void setCthrxdot(final double CTHRXdot) { 826 refuseFurtherComments(); 827 setCovarianceMatrixEntry(8, 3, CTHRXdot); 828 } 829 830 /** 831 * Get the object [9,5] in covariance matrix (with index starting at 1). 832 * @return the object [9,5] in covariance matrix (in m²/s³) 833 */ 834 public double getCthrydot() { 835 return covarianceMatrix.getEntry(8, 4); 836 } 837 838 /** 839 * Set the object [9,5] in covariance matrix (with index starting at 1). 840 * @param CTHRYdot = object [9,5] in covariance matrix (in m²/s³) 841 */ 842 public void setCthrydot(final double CTHRYdot) { 843 refuseFurtherComments(); 844 setCovarianceMatrixEntry(8, 4, CTHRYdot); 845 } 846 847 /** 848 * Get the object [9,6] in covariance matrix (with index starting at 1). 849 * @return the object [9,6] in covariance matrix (in m²/s³) 850 */ 851 public double getCthrzdot() { 852 return covarianceMatrix.getEntry(8, 5); 853 } 854 855 /** 856 * Set the object [9,6] in covariance matrix (with index starting at 1). 857 * @param CTHRZdot = object [9,6] in covariance matrix (in m²/s³) 858 */ 859 public void setCthrzdot(final double CTHRZdot) { 860 refuseFurtherComments(); 861 setCovarianceMatrixEntry(8, 5, CTHRZdot); 862 } 863 864 /** 865 * Get the object [9,7] in covariance matrix (with index starting at 1). 866 * @return the object [9,7] in covariance matrix (in m³/(kg.s²)) 867 */ 868 public double getCthrdrg() { 869 return covarianceMatrix.getEntry(8, 6); 870 } 871 872 /** 873 * Set the object [9,7] in covariance matrix (with index starting at 1). 874 * @param CTHRDRG = object [9,7] in covariance matrix (in m³/(kg.s²)) 875 */ 876 public void setCthrdrg(final double CTHRDRG) { 877 refuseFurtherComments(); 878 setCovarianceMatrixEntry(8, 6, CTHRDRG); 879 } 880 881 /** 882 * Get the object [9,8] in covariance matrix (with index starting at 1). 883 * @return the object [9,8] in covariance matrix (in m³/(kg.s²)) 884 */ 885 public double getCthrsrp() { 886 return covarianceMatrix.getEntry(8, 7); 887 } 888 889 /** 890 * Set the object [9,8] in covariance matrix (with index starting at 1). 891 * @param CTHRSRP = object [9,8] in covariance matrix (in m³/(kg.s²)) 892 */ 893 public void setCthrsrp(final double CTHRSRP) { 894 refuseFurtherComments(); 895 setCovarianceMatrixEntry(8, 7, CTHRSRP); 896 } 897 898 /** 899 * Get the object [9,9] in covariance matrix (with index starting at 1). 900 * @return the object [9,9] in covariance matrix (in m²/s⁴) 901 */ 902 public double getCthrthr() { 903 return covarianceMatrix.getEntry(8, 8); 904 } 905 906 /** 907 * Set the object [9,9] in covariance matrix (with index starting at 1). 908 * @param CTHRTHR = object [9,9] in covariance matrix (in m²/s⁴) 909 */ 910 public void setCthrthr(final double CTHRTHR) { 911 refuseFurtherComments(); 912 setCovarianceMatrixEntry(8, 8, CTHRTHR); 913 } 914 915 /** Get the flag indicating whether the alternate covariance type set in the CDM Object metadata section is XYZ. 916 * @return the covXYZset 917 */ 918 public boolean isCovXYZset() { 919 return covXYZset; 920 } 921 }