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 }