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 }