/* Copyright 2002-2017 CS Systèmes d'Information * Licensed to CS Systèmes d'Information (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.propagation.conversion; import org.orekit.errors.OrekitException; import org.orekit.frames.Frame; import org.orekit.orbits.OrbitType; import org.orekit.orbits.PositionAngle; import org.orekit.propagation.Propagator; import org.orekit.time.AbsoluteDate; import org.orekit.utils.ParameterDriversList; /** This interface is the top-level abstraction to build propagators for conversion. * @author Pascal Parraud * @since 6.0 */ public interface PropagatorBuilder { /** Build a propagator. * @param normalizedParameters normalized values for the selected parameters * @return an initialized propagator * @exception OrekitException if propagator cannot be build */ Propagator buildPropagator(double[] normalizedParameters) throws OrekitException; /** Get the current value of selected normalized parameters. * @return current value of selected normalized parameters */ double[] getSelectedNormalizedParameters(); /** Get the orbit type expected for the 6 first parameters in * {@link #buildPropagator(double[])}. * @return orbit type to use in {@link #buildPropagator(double[])} * @see #buildPropagator(double[]) * @see #getPositionAngle() * @since 7.1 */ OrbitType getOrbitType(); /** Get the position angle type expected for the 6 first parameters in * {@link #buildPropagator(double[])}. * @return position angle type to use in {@link #buildPropagator(double[])} * @see #buildPropagator(double[]) * @see #getOrbitType() * @since 7.1 */ PositionAngle getPositionAngle(); /** Get the date of the initial orbit. * @return date of the initial orbit */ AbsoluteDate getInitialOrbitDate(); /** Get the frame in which the orbit is propagated. * @return frame in which the orbit is propagated */ Frame getFrame(); /** Get the drivers for the configurable orbital parameters. * @return drivers for the configurable orbital parameters * @since 8.0 */ ParameterDriversList getOrbitalParametersDrivers(); /** Get the drivers for the configurable propagation parameters. * <p> * The parameters typically correspond to force models. * </p> * @return drivers for the configurable propagation parameters * @since 8.0 */ ParameterDriversList getPropagationParametersDrivers(); }