1   /* Copyright 2022-2025 Luc Maisonobe
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.rinex.navigation;
18  
19  /** Container for Klobuchar ionospheric corrections.
20   * @author Luc Maisonobe
21   * @since 14.0
22   */
23  public class KlobucharIonosphericCorrection extends IonosphericCorrection {
24  
25      /** The 4 Klobuchar coefficients of a cubic equation representing the amplitude of the vertical delay. */
26      private final double[] klobucharAlpha;
27  
28      /** The 4 coefficients of a cubic equation representing the period of the model. */
29      private final double[] klobucharBeta;
30  
31      /**
32       * Constructor.
33       * @param type           ionospheric correction type
34       * @param timeMark       time mark (A: 00h-01h, B: 01h-02h…, X: 23h-24h)
35       * @param klobucharAlpha the α ionospheric parameters to set
36       * @param klobucharBeta  the β ionospheric parameters to set
37       */
38      public KlobucharIonosphericCorrection(final IonosphericCorrectionType type, final char timeMark,
39                                            final double[] klobucharAlpha, final double[] klobucharBeta) {
40          super(type, timeMark);
41          this.klobucharAlpha = klobucharAlpha.clone();
42          this.klobucharBeta  = klobucharBeta.clone();
43      }
44  
45      /**
46       * Get the α ionospheric parameters.
47       * <p>
48       * They are used to initialize the {@link org.orekit.models.earth.ionosphere.KlobucharIonoModel}.
49       * </p>
50       * @return the α ionospheric parameters or null if not initialized
51       */
52      public double[] getKlobucharAlpha() {
53          return klobucharAlpha.clone();
54      }
55  
56      /**
57       * Get the β ionospheric parameters.
58       * <p>
59       * They are used to initialize the {@link org.orekit.models.earth.ionosphere.KlobucharIonoModel}.
60       * </p>
61       * @return the β ionospheric parameters or null if not initialized
62       */
63      public double[] getKlobucharBeta() {
64          return klobucharBeta.clone();
65      }
66  
67  }