1   /* Copyright 2022-2025 Thales Alenia Space
2    * Licensed to CS Communication & Systèmes (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.troposphere;
18  
19  import org.hipparchus.util.Binary64Field;
20  import org.hipparchus.util.FastMath;
21  import org.junit.jupiter.api.Test;
22  import org.orekit.models.earth.weather.PressureTemperatureHumidityProvider;
23  import org.orekit.utils.TrackingCoordinates;
24  
25  
26  public class CanonicalSaastamoinenModelTest extends AbstractPathDelayTest<CanonicalSaastamoinenModel> {
27  
28      @Override
29      protected CanonicalSaastamoinenModel buildTroposphericModel(final PressureTemperatureHumidityProvider provider) {
30          return new CanonicalSaastamoinenModel(provider);
31      }
32  
33      @Test
34      @Override
35      public void testDelay() {
36          doTestDelay(defaultDate, defaultPoint,
37                      new TrackingCoordinates(FastMath.toRadians(192), FastMath.toRadians(5), 1.4e6),
38                      TroposphericModelUtils.STANDARD_ATMOSPHERE_PROVIDER,
39                      2.30697, 0.115797, 26.46948, -2.20852, 24.26096);
40      }
41  
42      @Test
43      @Override
44      public void testFieldDelay() {
45          doTestDelay(Binary64Field.getInstance(),
46                      defaultDate, defaultPoint,
47                      new TrackingCoordinates(FastMath.toRadians(192), FastMath.toRadians(5), 1.4e6),
48                      TroposphericModelUtils.STANDARD_ATMOSPHERE_PROVIDER,
49                      2.30697, 0.115797, 26.46948, -2.20852, 24.26096);
50      }
51  
52      @Override
53      @Test
54      public void testFixedHeight() {
55          doTestFixedHeight(TroposphericModelUtils.STANDARD_ATMOSPHERE_PROVIDER);
56      }
57  
58      @Override
59      @Test
60      public void testFieldFixedHeight() {
61          doTestFieldFixedHeight(Binary64Field.getInstance(),
62                                 TroposphericModelUtils.STANDARD_ATMOSPHERE_PROVIDER);
63      }
64  
65      @Override
66      @Test
67      public void testFixedElevation() {
68          doTestFixedElevation(TroposphericModelUtils.STANDARD_ATMOSPHERE_PROVIDER);
69      }
70  
71      @Override
72      @Test
73      public void testFieldFixedElevation() {
74          doTestFieldFixedElevation(Binary64Field.getInstance(),
75                                    TroposphericModelUtils.STANDARD_ATMOSPHERE_PROVIDER);
76      }
77  
78      @Test
79      public void testDelayHighElevation() {
80          doTestDelay(defaultDate, defaultPoint,
81                      new TrackingCoordinates(FastMath.toRadians(192), FastMath.toRadians(60), 1.4e6),
82                      TroposphericModelUtils.STANDARD_ATMOSPHERE_PROVIDER,
83                      2.30697, 0.115797, 2.66386, 0.13280, 2.79666);
84      }
85  
86      @Test
87      public void testFieldDelayHighElevation() {
88          doTestDelay(Binary64Field.getInstance(),
89                      defaultDate, defaultPoint,
90                      new TrackingCoordinates(FastMath.toRadians(192), FastMath.toRadians(60), 1.4e6),
91                      TroposphericModelUtils.STANDARD_ATMOSPHERE_PROVIDER,
92                      2.30697, 0.115797, 2.66386, 0.13280, 2.79666);
93      }
94  
95  }