ShootingBoundaryOutput.java

/* Copyright 2022-2024 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;

import org.orekit.control.indirect.shooting.propagation.ShootingPropagationSettings;
import org.orekit.propagation.SpacecraftState;

/**
 * Data container for two-point boundary output of indirect shooting methods.
 *
 * @author Romain Serra
 * @since 12.2
 * @see AbstractIndirectShooting
 */
public class ShootingBoundaryOutput {

    /** Initial propagation state. */
    private final SpacecraftState initialState;

    /** Terminal propagation state. */
    private final SpacecraftState terminalState;

    /** Propagation settings. */
    private final ShootingPropagationSettings shootingPropagationSettings;

    /** Convergence flag. */
    private final boolean converged;

    /** Iteration count. */
    private final int iterationCount;

    /**
     * Constructor.
     * @param converged convergence flag
     * @param iterationCount iteration number
     * @param initialState initial state
     * @param terminalState terminal state
     * @param shootingPropagationSettings propagation settings
     */
    public ShootingBoundaryOutput(final boolean converged, final int iterationCount,
                                  final SpacecraftState initialState,
                                  final ShootingPropagationSettings shootingPropagationSettings,
                                  final SpacecraftState terminalState) {
        this.converged = converged;
        this.iterationCount = iterationCount;
        this.initialState = initialState;
        this.terminalState = terminalState;
        this.shootingPropagationSettings = shootingPropagationSettings;
    }

    /**
     * Getter for convergence flag.
     * @return convergence flag
     */
    public boolean isConverged() {
        return converged;
    }

    /**
     * Getter for the iteration number.
     * @return count
     */
    public int getIterationCount() {
        return iterationCount;
    }

    /**
     * Getter for the initial state.
     * @return initial state
     */
    public SpacecraftState getInitialState() {
        return initialState;
    }

    /**
     * Getter for the terminal state.
     * @return terminal state
     */
    public SpacecraftState getTerminalState() {
        return terminalState;
    }

    /**
     * Getter for the shooting propagation settings.
     * @return propagation settings
     */
    public ShootingPropagationSettings getShootingPropagationSettings() {
        return shootingPropagationSettings;
    }
}