GlobalPressureTemperature.java

  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.weather;

  18. import org.hipparchus.util.FastMath;
  19. import org.hipparchus.util.SinCos;
  20. import org.orekit.annotation.DefaultDataContext;
  21. import org.orekit.bodies.GeodeticPoint;
  22. import org.orekit.data.DataContext;
  23. import org.orekit.models.earth.Geoid;
  24. import org.orekit.models.earth.troposphere.TroposphericModelUtils;
  25. import org.orekit.time.AbsoluteDate;
  26. import org.orekit.time.DateTimeComponents;
  27. import org.orekit.time.TimeScale;
  28. import org.orekit.utils.LegendrePolynomials;

  29. /** The Global Pressure and Temperature model.
  30.  * This model is an empirical model that provides the temperature and the pressure depending
  31.  * the latitude and the longitude of the station.
  32.  * <p>
  33.  * The Global Pressure and Temperature model is based on spherical harmonics up
  34.  * to degree and order of 9. The residual values ​​of this model can reach 20 hPa
  35.  * for pressure and 10 ° C for temperature. They are significant for higher latitudes and
  36.  * small near the equator (Böhm, 2007)
  37.  * </p>
  38.  *
  39.  * @see "J. Böhm, R. Heinkelmann, and H. Schuh (2007),
  40.  * Short Note: A global model of pressure and temperature for geodetic applications. J Geod,
  41.  * doi:10.1007/s00190-007-0135-3."
  42.  *
  43.  * @author Bryan Cazabonne
  44.  * @author Luc Maisonobe
  45.  * @since 12.1
  46.  */
  47. public class GlobalPressureTemperature {

  48.     /** Temperature gradient (°C/m). */
  49.     private static final double TEMPERATURE_GRADIENT = -6.5e-3;

  50.     /** Spherical harmonics degree. */
  51.     private static final int DEGREE = 9;

  52.     /** Spherical harmonics order. */
  53.     private static final int ORDER = 9;

  54.     /** Geoid used to compute the undulations. */
  55.     private final Geoid geoid;

  56.     /** UTC time scale. */
  57.     private final TimeScale utc;

  58.     /** Build a new instance.
  59.      *
  60.      * <p>This method uses the {@link DataContext#getDefault() default data context}.
  61.      *
  62.      * @param geoid level surface of the gravity potential of a body
  63.      * @see #GlobalPressureTemperature(Geoid, TimeScale)
  64.      */
  65.     @DefaultDataContext
  66.     public GlobalPressureTemperature(final Geoid geoid) {
  67.         this(geoid, DataContext.getDefault().getTimeScales().getUTC());
  68.     }

  69.     /** Build a new instance.
  70.      * @param geoid level surface of the gravity potential of a body
  71.      * @param utc UTC time scale.
  72.      */
  73.     public GlobalPressureTemperature(final Geoid geoid, final TimeScale utc) {
  74.         this.geoid = geoid;
  75.         this.utc   = utc;
  76.     }

  77.     /** Provide weather parameters.
  78.      * @param location location at which parameters are requested
  79.      * @param date date at which parameters are requested
  80.      * @return weather parameters
  81.      */
  82.     public PressureTemperature getWeatherParameters(final GeodeticPoint location, final AbsoluteDate date) {

  83.         // Day of year computation
  84.         final DateTimeComponents dtc = date.getComponents(utc);
  85.         final int dofyear = dtc.getDate().getDayOfYear();

  86.         // Reference day: 28 January 1980 (Niell, 1996)
  87.         final int t0 = 28;
  88.         final double coef = ((dofyear + 1 - t0) / 365.25) * 2 * FastMath.PI;
  89.         final double cosCoef = FastMath.cos(coef);

  90.         // Compute Legendre Polynomials Pnm(sin(phi))
  91.         final LegendrePolynomials p = new LegendrePolynomials(DEGREE, ORDER,
  92.                                                               FastMath.sin(location.getLatitude()));

  93.         // Corrected height
  94.         final double correctedheight = FastMath.max(0.0,
  95.                                                     location.getAltitude() - geoid.getUndulation(location.getLatitude(),
  96.                                                                                                  location.getLongitude(),
  97.                                                                                                  date));

  98.         // Eq. 4 (Ref)
  99.         double meanT0      = 0.0;
  100.         double amplitudeT0 = 0.0;
  101.         double meanP0      = 0.0;
  102.         double amplitudeP0 = 0.0;
  103.         final ABCoefficients abCoef = new ABCoefficients();
  104.         int j = 0;
  105.         for (int n = 0; n <= DEGREE; n++) {
  106.             for (int m = 0; m <= n; m++) {
  107.                 final SinCos sc = FastMath.sinCos(m * location.getLongitude());
  108.                 final double pCosmLambda = p.getPnm(n, m) * sc.cos();
  109.                 final double pSinmLambda = p.getPnm(n, m) * sc.sin();

  110.                 meanT0      = meanT0 +
  111.                                 (abCoef.getAnmTemperatureMean(j) * pCosmLambda + abCoef.getBnmTemperatureMean(j) * pSinmLambda);
  112.                 amplitudeT0 = amplitudeT0 +
  113.                                 (abCoef.getAnmTemperatureAmpl(j) * pCosmLambda + abCoef.getBnmTemperatureAmpl(j) * pSinmLambda);
  114.                 meanP0      = meanP0 +
  115.                                 (abCoef.getAnmPressureMean(j) * pCosmLambda + abCoef.getBnmPressureMean(j) * pSinmLambda);
  116.                 amplitudeP0 = amplitudeP0 +
  117.                                 (abCoef.getAnmPressureAmpl(j) * pCosmLambda + abCoef.getBnmPressureAmpl(j) * pSinmLambda);

  118.                 j = j + 1;
  119.             }
  120.         }

  121.         // Eq. 3 (Ref)
  122.         final double temp0 = meanT0 + amplitudeT0 * cosCoef;
  123.         final double pres0 = meanP0 + amplitudeP0 * cosCoef;

  124.         // Compute pressure and temperature Eq. 1 and 2 (Ref)
  125.         final double degrees = temp0 + TEMPERATURE_GRADIENT * correctedheight;
  126.         final double temperature = degrees + 273.15;
  127.         final double pressure    = pres0 * FastMath.pow(1.0 - correctedheight * 0.0000226, 5.225);

  128.         return new PressureTemperature(location.getAltitude(),
  129.                                        TroposphericModelUtils.HECTO_PASCAL.toSI(pressure),
  130.                                        temperature);

  131.     }

  132.     private static class ABCoefficients {

  133.         /** Mean A<sub>nm</sub> coefficients for the pressure. */
  134.         private static final double[] A_PRESSURE_MEAN = {
  135.             1.0108e+03,
  136.             8.4886e+00,
  137.             1.4799e+00,
  138.             -1.3897e+01,
  139.             3.7516e-03,
  140.             -1.4936e-01,
  141.             1.2232e+01,
  142.             -7.6615e-01,
  143.             -6.7699e-02,
  144.             8.1002e-03,
  145.             -1.5874e+01,
  146.             3.6614e-01,
  147.             -6.7807e-02,
  148.             -3.6309e-03,
  149.             5.9966e-04,
  150.             4.8163e+00,
  151.             -3.7363e-01,
  152.             -7.2071e-02,
  153.             1.9998e-03,
  154.             -6.2385e-04,
  155.             -3.7916e-04,
  156.             4.7609e+00,
  157.             -3.9534e-01,
  158.             8.6667e-03,
  159.             1.1569e-02,
  160.             1.1441e-03,
  161.             -1.4193e-04,
  162.             -8.5723e-05,
  163.             6.5008e-01,
  164.             -5.0889e-01,
  165.             -1.5754e-02,
  166.             -2.8305e-03,
  167.             5.7458e-04,
  168.             3.2577e-05,
  169.             -9.6052e-06,
  170.             -2.7974e-06,
  171.             1.3530e+00,
  172.             -2.7271e-01,
  173.             -3.0276e-04,
  174.             3.6286e-03,
  175.             -2.0398e-04,
  176.             1.5846e-05,
  177.             -7.7787e-06,
  178.             1.1210e-06,
  179.             9.9020e-08,
  180.             5.5046e-01,
  181.             -2.7312e-01,
  182.             3.2532e-03,
  183.             -2.4277e-03,
  184.             1.1596e-04,
  185.             2.6421e-07,
  186.             -1.3263e-06,
  187.             2.7322e-07,
  188.             1.4058e-07,
  189.             4.9414e-09
  190.         };

  191.         /** Mean B<sub>nm</sub> coefficients for the pressure. */
  192.         private static final double[] B_PRESSURE_MEAN = {
  193.             0.0000e+00,
  194.             0.0000e+00,
  195.             -1.2878e+00,
  196.             0.0000e+00,
  197.             7.0444e-01,
  198.             3.3222e-01,
  199.             0.0000e+00,
  200.             -2.9636e-01,
  201.             7.2248e-03,
  202.             7.9655e-03,
  203.             0.0000e+00,
  204.             1.0854e+00,
  205.             1.1145e-02,
  206.             -3.6513e-02,
  207.             3.1527e-03,
  208.             0.0000e+00,
  209.             -4.8434e-01,
  210.             5.2023e-02,
  211.             -1.3091e-02,
  212.             1.8515e-03,
  213.             1.5422e-04,
  214.             0.0000e+00,
  215.             6.8298e-01,
  216.             2.5261e-03,
  217.             -9.9703e-04,
  218.             -1.0829e-03,
  219.             +1.7688e-04,
  220.             -3.1418e-05,
  221.             +0.0000e+00,
  222.             -3.7018e-01,
  223.             4.3234e-02,
  224.             7.2559e-03,
  225.             3.1516e-04,
  226.             2.0024e-05,
  227.             -8.0581e-06,
  228.             -2.3653e-06,
  229.             0.0000e+00,
  230.             1.0298e-01,
  231.             -1.5086e-02,
  232.             5.6186e-03,
  233.             3.2613e-05,
  234.             4.0567e-05,
  235.             -1.3925e-06,
  236.             -3.6219e-07,
  237.             -2.0176e-08,
  238.             0.0000e+00,
  239.             -1.8364e-01,
  240.             1.8508e-02,
  241.             7.5016e-04,
  242.             -9.6139e-05,
  243.             -3.1995e-06,
  244.             1.3868e-07,
  245.             -1.9486e-07,
  246.             3.0165e-10,
  247.             -6.4376e-10
  248.         };

  249.         /** Amplitude A<sub>nm</sub> coefficients for the pressure. */
  250.         private static final double[] A_PRESSURE_AMPLITUDE = {
  251.             -1.0444e-01,
  252.             1.6618e-01,
  253.             -6.3974e-02,
  254.             1.0922e+00,
  255.             5.7472e-01,
  256.             -3.0277e-01,
  257.             -3.5087e+00,
  258.             7.1264e-03,
  259.             -1.4030e-01,
  260.             3.7050e-02,
  261.             4.0208e-01,
  262.             -3.0431e-01,
  263.             -1.3292e-01,
  264.             4.6746e-03,
  265.             -1.5902e-04,
  266.             2.8624e+00,
  267.             -3.9315e-01,
  268.             -6.4371e-02,
  269.             1.6444e-02,
  270.             -2.3403e-03,
  271.             4.2127e-05,
  272.             1.9945e+00,
  273.             -6.0907e-01,
  274.             -3.5386e-02,
  275.             -1.0910e-03,
  276.             -1.2799e-04,
  277.             4.0970e-05,
  278.             2.2131e-05,
  279.             -5.3292e-01,
  280.             -2.9765e-01,
  281.             -3.2877e-02,
  282.             1.7691e-03,
  283.             5.9692e-05,
  284.             3.1725e-05,
  285.             2.0741e-05,
  286.             -3.7622e-07,
  287.             2.6372e+00,
  288.             -3.1165e-01,
  289.             1.6439e-02,
  290.             2.1633e-04,
  291.             1.7485e-04,
  292.             2.1587e-05,
  293.             6.1064e-06,
  294.             -1.3755e-08,
  295.             -7.8748e-08,
  296.             -5.9152e-01,
  297.             -1.7676e-01,
  298.             8.1807e-03,
  299.             1.0445e-03,
  300.             2.3432e-04,
  301.             9.3421e-06,
  302.             2.8104e-06,
  303.             -1.5788e-07,
  304.             -3.0648e-08,
  305.             2.6421e-10
  306.         };

  307.         /** Amplitude B<sub>nm</sub> coefficients for the pressure. */
  308.         private static final double[] B_PRESSURE_AMPLITUDE = {
  309.             0.0000e+00,
  310.             0.0000e+00,
  311.             9.3340e-01,
  312.             0.0000e+00,
  313.             8.2346e-01,
  314.             2.2082e-01,
  315.             0.0000e+00,
  316.             9.6177e-01,
  317.             -1.5650e-02,
  318.             1.2708e-03,
  319.             0.0000e+00,
  320.             -3.9913e-01,
  321.             2.8020e-02,
  322.             2.8334e-02,
  323.             8.5980e-04,
  324.             0.0000e+00,
  325.             3.0545e-01,
  326.             -2.1691e-02,
  327.             6.4067e-04,
  328.             -3.6528e-05,
  329.             -1.1166e-04,
  330.             0.0000e+00,
  331.             -7.6974e-02,
  332.             -1.8986e-02,
  333.             +5.6896e-03,
  334.             -2.4159e-04,
  335.             -2.3033e-04,
  336.             -9.6783e-06,
  337.             0.0000e+00,
  338.             -1.0218e-01,
  339.             -1.3916e-02,
  340.             -4.1025e-03,
  341.             -5.1340e-05,
  342.             -7.0114e-05,
  343.             -3.3152e-07,
  344.             1.6901e-06,
  345.             0.0000e+00,
  346.             -1.2422e-02,
  347.             +2.5072e-03,
  348.             +1.1205e-03,
  349.             -1.3034e-04,
  350.             -2.3971e-05,
  351.             -2.6622e-06,
  352.             5.7852e-07,
  353.             4.5847e-08,
  354.             0.0000e+00,
  355.             4.4777e-02,
  356.             -3.0421e-03,
  357.             2.6062e-05,
  358.             -7.2421e-05,
  359.             1.9119e-06,
  360.             3.9236e-07,
  361.             2.2390e-07,
  362.             2.9765e-09,
  363.             -4.6452e-09
  364.         };

  365.         /** Mean A<sub>nm</sub> coefficients for the temperature. */
  366.         private static final double[] A_TEMPERATURE_MEAN = {
  367.             1.6257e+01,
  368.             2.1224e+00,
  369.             9.2569e-01,
  370.             -2.5974e+01,
  371.             1.4510e+00,
  372.             9.2468e-02,
  373.             -5.3192e-01,
  374.             2.1094e-01,
  375.             -6.9210e-02,
  376.             -3.4060e-02,
  377.             -4.6569e+00,
  378.             2.6385e-01,
  379.             -3.6093e-02,
  380.             1.0198e-02,
  381.             -1.8783e-03,
  382.             7.4983e-01,
  383.             1.1741e-01,
  384.             3.9940e-02,
  385.             5.1348e-03,
  386.             5.9111e-03,
  387.             8.6133e-06,
  388.             6.3057e-01,
  389.             1.5203e-01,
  390.             3.9702e-02,
  391.             4.6334e-03,
  392.             2.4406e-04,
  393.             1.5189e-04,
  394.             1.9581e-07,
  395.             5.4414e-01,
  396.             3.5722e-01,
  397.             5.2763e-02,
  398.             4.1147e-03,
  399.             -2.7239e-04,
  400.             -5.9957e-05,
  401.             1.6394e-06,
  402.             -7.3045e-07,
  403.             -2.9394e+00,
  404.             5.5579e-02,
  405.             1.8852e-02,
  406.             3.4272e-03,
  407.             -2.3193e-05,
  408.             -2.9349e-05,
  409.             3.6397e-07,
  410.             2.0490e-06,
  411.             -6.4719e-08,
  412.             -5.2225e-01,
  413.             2.0799e-01,
  414.             1.3477e-03,
  415.             3.1613e-04,
  416.             -2.2285e-04,
  417.             -1.8137e-05,
  418.             -1.5177e-07,
  419.             6.1343e-07,
  420.             7.8566e-08,
  421.             1.0749e-09
  422.         };

  423.         /** Mean B<sub>nm</sub> coefficients for the temperature. */
  424.         private static final double[] B_TEMPERATURE_MEAN = {
  425.             0.0000e+00,
  426.             0.0000e+00,
  427.             1.0210e+00,
  428.             0.0000e+00,
  429.             6.0194e-01,
  430.             1.2292e-01,
  431.             0.0000e+00,
  432.             -4.2184e-01,
  433.             1.8230e-01,
  434.             4.2329e-02,
  435.             0.0000e+00,
  436.             9.3312e-02,
  437.             9.5346e-02,
  438.             -1.9724e-03,
  439.             5.8776e-03,
  440.             0.0000e+00,
  441.             -2.0940e-01,
  442.             3.4199e-02,
  443.             -5.7672e-03,
  444.             -2.1590e-03,
  445.             5.6815e-04,
  446.             0.0000e+00,
  447.             2.2858e-01,
  448.             1.2283e-02,
  449.             -9.3679e-03,
  450.             -1.4233e-03,
  451.             -1.5962e-04,
  452.             4.0160e-05,
  453.             0.0000e+00,
  454.             3.6353e-02,
  455.             -9.4263e-04,
  456.             -3.6762e-03,
  457.             5.8608e-05,
  458.             -2.6391e-05,
  459.             3.2095e-06,
  460.             -1.1605e-06,
  461.             0.0000e+00,
  462.             1.6306e-01,
  463.             1.3293e-02,
  464.             -1.1395e-03,
  465.             5.1097e-05,
  466.             3.3977e-05,
  467.             7.6449e-06,
  468.             -1.7602e-07,
  469.             -7.6558e-08,
  470.             0.0000e+00,
  471.             -4.5415e-02,
  472.             -1.8027e-02,
  473.             3.6561e-04,
  474.             -1.1274e-04,
  475.             1.3047e-05,
  476.             2.0001e-06,
  477.             -1.5152e-07,
  478.             -2.7807e-08,
  479.             7.7491e-09
  480.         };

  481.         /** Amplitude A<sub>nm</sub> coefficients for the temperature. */
  482.         private static final double[] A_TEMPERATURE_AMPLITUDE = {
  483.             -1.8654e+00,
  484.             -9.0041e+00,
  485.             -1.2974e-01,
  486.             -3.6053e+00,
  487.             2.0284e-02,
  488.             2.1872e-01,
  489.             -1.3015e+00,
  490.             4.0355e-01,
  491.             2.2216e-01,
  492.             -4.0605e-03,
  493.             1.9623e+00,
  494.             4.2887e-01,
  495.             2.1437e-01,
  496.             -1.0061e-02,
  497.             -1.1368e-03,
  498.             -6.9235e-02,
  499.             5.6758e-01,
  500.             1.1917e-01,
  501.             -7.0765e-03,
  502.             3.0017e-04,
  503.             3.0601e-04,
  504.             1.6559e+00,
  505.             2.0722e-01,
  506.             6.0013e-02,
  507.             1.7023e-04,
  508.             -9.2424e-04,
  509.             1.1269e-05,
  510.             -6.9911e-06,
  511.             -2.0886e+00,
  512.             -6.7879e-02,
  513.             -8.5922e-04,
  514.             -1.6087e-03,
  515.             -4.5549e-05,
  516.             3.3178e-05,
  517.             -6.1715e-06,
  518.             -1.4446e-06,
  519.             -3.7210e-01,
  520.             1.5775e-01,
  521.             -1.7827e-03,
  522.             -4.4396e-04,
  523.             2.2844e-04,
  524.             -1.1215e-05,
  525.             -2.1120e-06,
  526.             -9.6421e-07,
  527.             -1.4170e-08,
  528.             7.8720e-01,
  529.             -4.4238e-02,
  530.             -1.5120e-03,
  531.             -9.4119e-04,
  532.             4.0645e-06,
  533.             -4.9253e-06,
  534.             -1.8656e-06,
  535.             -4.0736e-07,
  536.             -4.9594e-08,
  537.             1.6134e-09
  538.         };

  539.         /** Amplitude B<sub>nm</sub> coefficients for the temperature. */
  540.         private static final double[] B_TEMPERATURE_AMPLITUDE = {
  541.             0.0000e+00,
  542.             0.0000e+00,
  543.             -8.9895e-01,
  544.             0.0000e+00,
  545.             -1.0790e+00,
  546.             -1.2699e-01,
  547.             0.0000e+00,
  548.             -5.9033e-01,
  549.             3.4865e-02,
  550.             -3.2614e-02,
  551.             0.0000e+00,
  552.             -2.4310e-02,
  553.             1.5607e-02,
  554.             -2.9833e-02,
  555.             -5.9048e-03,
  556.             0.0000e+00,
  557.             2.8383e-01,
  558.             4.0509e-02,
  559.             -1.8834e-02,
  560.             -1.2654e-03,
  561.             -1.3794e-04,
  562.             0.0000e+00,
  563.             1.3306e-01,
  564.             3.4960e-02,
  565.             -3.6799e-03,
  566.             -3.5626e-04,
  567.             1.4814e-04,
  568.             3.7932e-06,
  569.             0.0000e+00,
  570.             2.0801e-01,
  571.             6.5640e-03,
  572.             -3.4893e-03,
  573.             -2.7395e-04,
  574.             7.4296e-05,
  575.             -7.9927e-06,
  576.             -1.0277e-06,
  577.             0.0000e+00,
  578.             3.6515e-02,
  579.             -7.4319e-03,
  580.             -6.2873e-04,
  581.             8.2461e-05,
  582.             3.1095e-05,
  583.             -5.3860e-07,
  584.             -1.2055e-07,
  585.             -1.1517e-07,
  586.             0.0000e+00,
  587.             3.1404e-02,
  588.             1.5580e-02,
  589.             -1.1428e-03,
  590.             3.3529e-05,
  591.             1.0387e-05,
  592.             -1.9378e-06,
  593.             -2.7327e-07,
  594.             7.5833e-09,
  595.             -9.2323e-09
  596.         };

  597.         /** Build a new instance. */
  598.         ABCoefficients() {

  599.         }

  600.         /** Get the value of the mean A<sub>nm</sub> pressure coefficient for the given index.
  601.          * @param index index
  602.          * @return the mean A<sub>nm</sub> pressure coefficient for the given index
  603.          */
  604.         public double getAnmPressureMean(final int index) {
  605.             return A_PRESSURE_MEAN[index];
  606.         }

  607.         /** Get the value of the mean B<sub>nm</sub> pressure coefficient for the given index.
  608.          * @param index index
  609.          * @return the mean B<sub>nm</sub> pressure coefficient for the given index
  610.          */
  611.         public double getBnmPressureMean(final int index) {
  612.             return B_PRESSURE_MEAN[index];
  613.         }

  614.         /** Get the value of the amplitude A<sub>nm</sub> pressure coefficient for the given index.
  615.          * @param index index
  616.          * @return the amplitude A<sub>nm</sub> pressure coefficient for the given index.
  617.          */
  618.         public double getAnmPressureAmpl(final int index) {
  619.             return A_PRESSURE_AMPLITUDE[index];
  620.         }

  621.         /** Get the value of the amplitude B<sub>nm</sub> pressure coefficient for the given index.
  622.          * @param index index
  623.          * @return the amplitude B<sub>nm</sub> pressure coefficient for the given index
  624.          */
  625.         public double getBnmPressureAmpl(final int index) {
  626.             return B_PRESSURE_AMPLITUDE[index];
  627.         }

  628.         /** Get the value of the mean A<sub>nm</sub> temperature coefficient for the given index.
  629.          * @param index index
  630.          * @return the mean A<sub>nm</sub> temperature coefficient for the given index
  631.          */
  632.         public double getAnmTemperatureMean(final int index) {
  633.             return A_TEMPERATURE_MEAN[index];
  634.         }

  635.         /** Get the value of the mean B<sub>nm</sub> temperature coefficient for the given index.
  636.          * @param index index
  637.          * @return the mean B<sub>nm</sub> temperature coefficient for the given index
  638.          */
  639.         public double getBnmTemperatureMean(final int index) {
  640.             return B_TEMPERATURE_MEAN[index];
  641.         }

  642.         /** Get the value of the amplitude A<sub>nm</sub> temperature coefficient for the given index.
  643.          * @param index index
  644.          * @return the amplitude A<sub>nm</sub> temperature coefficient for the given index.
  645.          */
  646.         public double getAnmTemperatureAmpl(final int index) {
  647.             return A_TEMPERATURE_AMPLITUDE[index];
  648.         }

  649.         /** Get the value of the amplitude B<sub>nm</sub> temperature coefficient for the given index.
  650.          * @param index index
  651.          * @return the amplitude B<sub>nm</sub> temperature coefficient for the given index
  652.          */
  653.         public double getBnmTemperatureAmpl(final int index) {
  654.             return B_TEMPERATURE_AMPLITUDE[index];
  655.         }
  656.     }

  657. }