ViennaOneModel.java
- /* Copyright 2002-2024 CS GROUP
- * Licensed to CS GROUP (CS) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * CS licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.orekit.models.earth.troposphere;
- import org.hipparchus.CalculusFieldElement;
- import org.hipparchus.Field;
- import org.hipparchus.util.MathArrays;
- import org.orekit.annotation.DefaultDataContext;
- import org.orekit.bodies.FieldGeodeticPoint;
- import org.orekit.bodies.GeodeticPoint;
- import org.orekit.data.DataContext;
- import org.orekit.models.earth.weather.FieldPressureTemperatureHumidity;
- import org.orekit.time.AbsoluteDate;
- import org.orekit.time.FieldAbsoluteDate;
- import org.orekit.time.TimeScale;
- import org.orekit.utils.FieldTrackingCoordinates;
- import org.orekit.utils.TrackingCoordinates;
- /** The Vienna1 tropospheric delay model for radio techniques.
- * The Vienna model data are given with a time interval of 6 hours
- * as well as on a global 2.5° * 2.0° grid.
- *
- * This version considered the height correction for the hydrostatic part
- * developed by Niell, 1996.
- *
- * @see "Boehm, J., Werl, B., and Schuh, H., (2006),
- * Troposhere mapping functions for GPS and very long baseline
- * interferometry from European Centre for Medium-Range Weather
- * Forecasts operational analysis data, J. Geophy. Res., Vol. 111,
- * B02406, doi:10.1029/2005JB003629"
- *
- * @author Bryan Cazabonne
- * @deprecated as of 12.1, replaced by {@link ViennaOne}
- */
- @Deprecated
- public class ViennaOneModel extends ViennaOne implements DiscreteTroposphericModel, MappingFunction {
- /** Values of hydrostatic and wet delays as provided by the Vienna model. */
- private final double[] zenithDelay;
- /** Build a new instance.
- *
- * <p>This constructor uses the {@link DataContext#getDefault() default data context}.
- *
- * @param coefficientA The a coefficients for the computation of the wet and hydrostatic mapping functions.
- * @param zenithDelay Values of hydrostatic and wet delays
- * @see #ViennaOneModel(double[], double[], TimeScale)
- */
- @DefaultDataContext
- public ViennaOneModel(final double[] coefficientA, final double[] zenithDelay) {
- this(coefficientA, zenithDelay,
- DataContext.getDefault().getTimeScales().getUTC());
- }
- /**
- * Build a new instance.
- *
- * @param coefficientA The a coefficients for the computation of the wet and
- * hydrostatic mapping functions.
- * @param zenithDelay Values of hydrostatic and wet delays
- * @param utc UTC time scale.
- * @since 10.1
- */
- public ViennaOneModel(final double[] coefficientA,
- final double[] zenithDelay,
- final TimeScale utc) {
- super(new ConstantViennaAProvider(new ViennaACoefficients(coefficientA[0], coefficientA[1])),
- new ConstantAzimuthalGradientProvider(null),
- new ConstantTroposphericModel(new TroposphericDelay(zenithDelay[0], zenithDelay[1],
- zenithDelay[0], zenithDelay[1])),
- utc);
- this.zenithDelay = zenithDelay.clone();
- }
- /** {@inheritDoc} */
- @Override
- @Deprecated
- public double pathDelay(final double elevation, final GeodeticPoint point,
- final double[] parameters, final AbsoluteDate date) {
- return pathDelay(new TrackingCoordinates(0.0, elevation, 0.0),
- point, TroposphericModelUtils.STANDARD_ATMOSPHERE, parameters, date).
- getDelay();
- }
- /** {@inheritDoc} */
- @Override
- @Deprecated
- public <T extends CalculusFieldElement<T>> T pathDelay(final T elevation, final FieldGeodeticPoint<T> point,
- final T[] parameters, final FieldAbsoluteDate<T> date) {
- return pathDelay(new FieldTrackingCoordinates<>(date.getField().getZero(), elevation, date.getField().getZero()),
- point,
- new FieldPressureTemperatureHumidity<>(date.getField(), TroposphericModelUtils.STANDARD_ATMOSPHERE),
- parameters, date).
- getDelay();
- }
- /** This method allows the computation of the zenith hydrostatic and
- * zenith wet delay. The resulting element is an array having the following form:
- * <ul>
- * <li>T[0] = D<sub>hz</sub> → zenith hydrostatic delay
- * <li>T[1] = D<sub>wz</sub> → zenith wet delay
- * </ul>
- * @param point station location
- * @param parameters tropospheric model parameters
- * @param date current date
- * @return a two components array containing the zenith hydrostatic and wet delays.
- */
- public double[] computeZenithDelay(final GeodeticPoint point, final double[] parameters, final AbsoluteDate date) {
- return zenithDelay.clone();
- }
- /** This method allows the computation of the zenith hydrostatic and
- * zenith wet delay. The resulting element is an array having the following form:
- * <ul>
- * <li>T[0] = D<sub>hz</sub> → zenith hydrostatic delay
- * <li>T[1] = D<sub>wz</sub> → zenith wet delay
- * </ul>
- * @param <T> type of the elements
- * @param point station location
- * @param parameters tropospheric model parameters
- * @param date current date
- * @return a two components array containing the zenith hydrostatic and wet delays.
- */
- public <T extends CalculusFieldElement<T>> T[] computeZenithDelay(final FieldGeodeticPoint<T> point, final T[] parameters,
- final FieldAbsoluteDate<T> date) {
- final Field<T> field = date.getField();
- final T zero = field.getZero();
- final T[] delays = MathArrays.buildArray(field, 2);
- delays[0] = zero.newInstance(zenithDelay[0]);
- delays[1] = zero.newInstance(zenithDelay[1]);
- return delays;
- }
- /** {@inheritDoc} */
- @Override
- @Deprecated
- public double[] mappingFactors(final double elevation, final GeodeticPoint point,
- final AbsoluteDate date) {
- return mappingFactors(new TrackingCoordinates(0.0, elevation, 0.0),
- point,
- TroposphericModelUtils.STANDARD_ATMOSPHERE,
- date);
- }
- /** {@inheritDoc} */
- @Override
- @Deprecated
- public <T extends CalculusFieldElement<T>> T[] mappingFactors(final T elevation, final FieldGeodeticPoint<T> point,
- final FieldAbsoluteDate<T> date) {
- return mappingFactors(new FieldTrackingCoordinates<>(date.getField().getZero(), elevation, date.getField().getZero()),
- point,
- new FieldPressureTemperatureHumidity<>(date.getField(),
- TroposphericModelUtils.STANDARD_ATMOSPHERE),
- date);
- }
- }