ShootingPropagationSettings.java
- /* Copyright 2022-2025 Romain Serra
- * 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.control.indirect.shooting.propagation;
- import org.orekit.annotation.DefaultDataContext;
- import org.orekit.attitudes.AttitudeProvider;
- import org.orekit.attitudes.AttitudeProviderModifier;
- import org.orekit.attitudes.FrameAlignedProvider;
- import org.orekit.forces.ForceModel;
- import org.orekit.frames.Frame;
- import org.orekit.frames.FramesFactory;
- import java.util.List;
- /**
- * Defines propagation settings for indirect shooting methods.
- * The provided list of {@link ForceModel} should have their counterpart in the provided adjoint equations encapsulated in {@link AdjointDynamicsProvider}.
- * Note that in case of orbit-based propagation (with a central body), the Newtonian term still needs to be passed explicitly (with its adjoint equivalent).
- *
- * @author Romain Serra
- * @since 12.2
- * @see org.orekit.propagation.numerical.NumericalPropagator
- * @see org.orekit.propagation.numerical.FieldNumericalPropagator
- */
- public class ShootingPropagationSettings {
- /** Force models. */
- private final List<ForceModel> forceModels;
- /** Adjoint dynamics. */
- private final AdjointDynamicsProvider adjointDynamicsProvider;
- /** Attitude provider. */
- private final AttitudeProvider attitudeProvider;
- /** Propagation frame. */
- private final Frame propagationFrame;
- /** Integration settings. */
- private final ShootingIntegrationSettings integrationSettings;
- /**
- * Simple constructor with default frame and attitude provider.
- * @param forceModels forces for numerical propagation
- * @param adjointDynamicsProvider adjoint derivatives provider
- * @param integrationSettings integration settings
- */
- @DefaultDataContext
- public ShootingPropagationSettings(final List<ForceModel> forceModels,
- final AdjointDynamicsProvider adjointDynamicsProvider,
- final ShootingIntegrationSettings integrationSettings) {
- this(forceModels, adjointDynamicsProvider, FramesFactory.getGCRF(), integrationSettings,
- AttitudeProviderModifier.getFrozenAttitudeProvider(new FrameAlignedProvider(FramesFactory.getGCRF())));
- }
- /**
- * Constructor.
- * @param forceModels forces for numerical propagation
- * @param propagationFrame frame used as reference frame in equations of motion by integrator
- * @param adjointDynamicsProvider adjoint derivatives provider
- * @param integrationSettings integration settings
- * @param attitudeProvider attitude provider
- */
- public ShootingPropagationSettings(final List<ForceModel> forceModels,
- final AdjointDynamicsProvider adjointDynamicsProvider,
- final Frame propagationFrame,
- final ShootingIntegrationSettings integrationSettings,
- final AttitudeProvider attitudeProvider) {
- this.forceModels = forceModels;
- this.adjointDynamicsProvider = adjointDynamicsProvider;
- this.propagationFrame = propagationFrame;
- this.integrationSettings = integrationSettings;
- this.attitudeProvider = attitudeProvider;
- }
- /**
- * Getter for adjoint dynamics provider.
- * @return adjoint dynamics
- */
- public AdjointDynamicsProvider getAdjointDynamicsProvider() {
- return adjointDynamicsProvider;
- }
- /**
- * Getter for the force models.
- * @return forces
- */
- public List<ForceModel> getForceModels() {
- return forceModels;
- }
- /**
- * Getter for the attitude provider.
- * @return attitude provider.
- */
- public AttitudeProvider getAttitudeProvider() {
- return attitudeProvider;
- }
- /**
- * Getter for the propagation frame.
- * @return propagation frame
- */
- public Frame getPropagationFrame() {
- return propagationFrame;
- }
- /**
- * Getter for the integration settings.
- * @return integration settings
- */
- public ShootingIntegrationSettings getIntegrationSettings() {
- return integrationSettings;
- }
- }