1 /* Contributed in the public domain.
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.forces.gravity.potential;
18
19 import java.util.List;
20
21 import org.orekit.time.AbsoluteDate;
22
23 /**
24 * Defines methods for obtaining gravity fields.
25 *
26 * @author Evan Ward
27 * @author Fabien Maussion
28 * @author Pascal Parraud
29 * @author Luc Maisonobe
30 * @see GravityFieldFactory
31 * @since 10.1
32 */
33 public interface GravityFields {
34
35 /** Get a constant gravity field normalized coefficients provider
36 * frozen at a given epoch.
37 *
38 * @param degree maximal degree
39 * @param order maximal order
40 * @param freezingDate freezing epoch
41 * @return a gravity field coefficients provider containing already loaded data
42 * @since 12.0
43 * @see #getNormalizedProvider(int, int)
44 */
45 NormalizedSphericalHarmonicsProvider getConstantNormalizedProvider(int degree, int order,
46 AbsoluteDate freezingDate);
47
48 /** Get a gravity field normalized coefficients provider.
49 *
50 * @param degree maximal degree
51 * @param order maximal order
52 * @return a gravity field coefficients provider containing already loaded data
53 * @since 6.0
54 * @see #getConstantNormalizedProvider(int, int, AbsoluteDate)
55 */
56 NormalizedSphericalHarmonicsProvider getNormalizedProvider(int degree,
57 int order);
58
59 /** Get a constant gravity field unnormalized coefficients provider
60 * frozen at a given epoch.
61 *
62 * @param degree maximal degree
63 * @param order maximal order
64 * @param freezingDate freezing epoch
65 * @return a gravity field coefficients provider containing already loaded data
66 * @since 12.0
67 * @see #getUnnormalizedProvider(int, int)
68 */
69 UnnormalizedSphericalHarmonicsProvider getConstantUnnormalizedProvider(int degree, int order,
70 AbsoluteDate freezingDate);
71
72 /** Get a gravity field unnormalized coefficients provider.
73 *
74 * @param degree maximal degree
75 * @param order maximal order
76 * @return a gravity field coefficients provider containing already loaded data
77 * @since 6.0
78 * @see #getConstantUnnormalizedProvider(int, int, AbsoluteDate)
79 */
80 UnnormalizedSphericalHarmonicsProvider getUnnormalizedProvider(int degree,
81 int order);
82
83 /** Get the ocean tides waves.
84 *
85 * <p><span style="color:red">
86 * WARNING: as of 2013-11-17, there seem to be an inconsistency when loading
87 * one or the other file, for wave Sa (Doodson number 56.554) and P1 (Doodson
88 * number 163.555). The sign of the coefficients are different. We think the
89 * problem lies in the input files from IERS and not in the conversion (which
90 * works for all other waves), but cannot be sure. For this reason, ocean
91 * tides are still considered experimental at this date.
92 * </span></p>
93 * @param degree maximal degree
94 * @param order maximal order
95 * @return list of tides waves containing already loaded data
96 * @since 6.1
97 */
98 List<OceanTidesWave> getOceanTidesWaves(int degree, int order);
99 }