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