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