PropagatorBuilder.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.propagation.conversion;
import java.util.List;
import org.orekit.estimation.leastsquares.AbstractBatchLSModel;
import org.orekit.estimation.leastsquares.ModelObserver;
import org.orekit.estimation.measurements.ObservedMeasurement;
import org.orekit.frames.Frame;
import org.orekit.orbits.Orbit;
import org.orekit.orbits.OrbitType;
import org.orekit.orbits.PositionAngleType;
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 {
/** Create a new instance identical to this one.
* @return new instance identical to this one
*/
PropagatorBuilder copy();
/** Build a propagator.
* @param normalizedParameters normalized values for the selected parameters
* @return an initialized propagator
*/
Propagator buildPropagator(double[] normalizedParameters);
/** Build a propagator from current value of selected normalized parameters.
* @return an initialized propagator
*/
default Propagator buildPropagator() {
return buildPropagator(getSelectedNormalizedParameters());
}
/** Build a new batch least squares model.
* @param builders builders to use for propagation
* @param measurements measurements
* @param estimatedMeasurementsParameters estimated measurements parameters
* @param observer observer to be notified at model calls
* @return a new model for the Batch Least Squares orbit determination
* @since 12.0
*/
AbstractBatchLSModel buildLeastSquaresModel(PropagatorBuilder[] builders,
List<ObservedMeasurement<?>> measurements,
ParameterDriversList estimatedMeasurementsParameters,
ModelObserver observer);
/** 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 #getPositionAngleType()
* @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
*/
PositionAngleType getPositionAngleType();
/** 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 central attraction coefficient (µ - m³/s²) value.
* @return the central attraction coefficient (µ - m³/s²) value
* @since 12.0
*/
double getMu();
/** Get the drivers for the configurable orbital parameters.
* Orbital drivers should have only 1 value estimated (1 span)
* @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();
/** Reset the orbit in the propagator builder.
* @param newOrbit New orbit to set in the propagator builder
* @since 12.0
*/
void resetOrbit(Orbit newOrbit);
}