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.models.earth.atmosphere;
18  
19  import java.io.Serializable;
20  
21  import org.orekit.time.AbsoluteDate;
22  
23  
24  /** Container for solar activity data, compatible with DTM2000 Atmosphere model.
25   *
26   * This model needs mean and instantaneous solar flux and geomagnetic incides to
27   * compute the local density. Mean solar flux is (for the moment) represented by
28   * the F10.7 indices. Instantaneous flux can be set to the mean value if the
29   * data is not available. Geomagnetic acivity is represented by the Kp indice,
30   * which goes from 1 (very low activity) to 9 (high activity).
31   * <p>
32   * All needed solar activity data can be found on the <a
33   * href="https://www.noaa.gov/">
34   * NOAA (National Oceanic and Atmospheric
35   * Administration) website.</a>
36   *</p>
37   *
38   * @author Fabien Maussion
39   */
40  public interface DTM2000InputParameters extends Serializable {
41  
42      /** Gets the available data range minimum date.
43       * @return the minimum date.
44       */
45      AbsoluteDate getMinDate();
46  
47      /** Gets the available data range maximum date.
48       * @return the maximum date.
49       */
50      AbsoluteDate getMaxDate();
51  
52      /** Get the value of the instantaneous solar flux.
53       * @param date the current date
54       * @return the instantaneous solar flux
55       */
56      double getInstantFlux(AbsoluteDate date);
57  
58      /** Get the value of the mean solar flux.
59       * @param date the current date
60       * @return the mean solar flux
61       */
62      double getMeanFlux(AbsoluteDate date);
63  
64      /** Get the value of the 3 hours geomagnetic index.
65       * With a delay of 3 hours at pole to 6 hours at equator using:
66       * delay=6-abs(lat)*0.033 (lat in deg.)
67       * @param date the current date
68       * @return the 3H geomagnetic index
69       */
70      double getThreeHourlyKP(AbsoluteDate date);
71  
72      /** Get the last 24H mean geomagnetic index.
73       * @param date the current date
74       * @return the 24H geomagnetic index
75       */
76      double get24HoursKp(AbsoluteDate date);
77  
78  }