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.ionosphere;
18
19 import org.hipparchus.CalculusFieldElement;
20 import org.orekit.frames.TopocentricFrame;
21 import org.orekit.propagation.FieldSpacecraftState;
22 import org.orekit.propagation.SpacecraftState;
23 import org.orekit.utils.ParameterDriversProvider;
24
25 /** Defines a ionospheric model, used to calculate the path delay imposed to
26 * electro-magnetic signals between an orbital satellite and a ground station.
27 * <p>
28 * Since 10.0, this interface can be used for models that aspire to estimate
29 * ionospheric parameters.
30 * </p>
31 *
32 * @author Joris Olympio
33 * @author Bryan Cazabonne
34 * @since 7.1
35 */
36 public interface IonosphericModel extends ParameterDriversProvider {
37
38 /**
39 * Calculates the ionospheric path delay for the signal path from a ground
40 * station to a satellite.
41 * <p>
42 * This method is intended to be used for orbit determination issues.
43 * In that respect, if the elevation is below 0° the path delay will be equal to zero.
44 * </p><p>
45 * For individual use of the ionospheric model (i.e. not for orbit determination), another
46 * method signature can be implemented to compute the path delay for any elevation angle.
47 * </p>
48 * @param state spacecraft state
49 * @param baseFrame base frame associated with the station
50 * @param frequency frequency of the signal in Hz
51 * @param parameters ionospheric model parameters at state date
52 * @return the path delay due to the ionosphere in m
53 */
54 double pathDelay(SpacecraftState state, TopocentricFrame baseFrame, double frequency, double[] parameters);
55
56 /**
57 * Calculates the ionospheric path delay for the signal path from a ground
58 * station to a satellite.
59 * <p>
60 * This method is intended to be used for orbit determination issues.
61 * In that respect, if the elevation is below 0° the path delay will be equal to zero.
62 * </p><p>
63 * For individual use of the ionospheric model (i.e. not for orbit determination), another
64 * method signature can be implemented to compute the path delay for any elevation angle.
65 * </p>
66 * @param <T> type of the elements
67 * @param state spacecraft state
68 * @param baseFrame base frame associated with the station
69 * @param frequency frequency of the signal in Hz
70 * @param parameters ionospheric model parameters at state date
71 * @return the path delay due to the ionosphere in m
72 */
73 <T extends CalculusFieldElement<T>> T pathDelay(FieldSpacecraftState<T> state, TopocentricFrame baseFrame,
74 double frequency, T[] parameters);
75 }