<commit_before>/*    Copyright (c) 2010-2017, Delft University of Technology
 *    All rigths reserved
 *
 *    This file is part of the Tudat. Redistribution and use in source and
 *    binary forms, with or without modification, are permitted exclusively
 *    under the terms of the Modified BSD license. You should have received
 *    a copy of the license with this file. If not, please or visit:
 *    http://tudat.tudelft.nl/LICENSE.
 */

#ifndef TUDAT_PROPAGATION_PATCHED_CONIC_FULL
#define TUDAT_PROPAGATION_PATCHED_CONIC_FULL

#include "Tudat/SimulationSetup/tudatSimulationHeader.h"
#include "Tudat/Astrodynamics/TrajectoryDesign/trajectory.h"

namespace tudat
{

namespace propagators
{

//! Function to setup a body map corresponding to the assumptions of a patched conics trajectory,
//! using default ephemerides for the central and transfer bodies.
/*!
 * Function to setup a body map for the patched conics trajectory. The body map contains the central body, the transfer
 * bodies and the body to be propagated. The positions of the central and transfer bodies are directly retrieved from ephemerides.
 * \param nameCentralBody Name of the central body.
 * \param nameBodyToPropagate Name of the body to be propagated.
 * \param nameTransferBodies Vector containing the names of the transfer bodies.
 * \return Body map for the patched conics trajectory.
 */
simulation_setup::NamedBodyMap setupBodyMapFromEphemeridesForPatchedConicsTrajectory(
        const std::string& nameCentralBody,
        const std::string& nameBodyToPropagate,
        const std::vector< std::string >& nameTransferBodies );


//! Function to setup a body map corresponding to the assumptions of the patched conics trajectory,
//! the ephemerides of the transfer bodies being provided as inputs.
/*!
 * Function to setup a body map for the patched conics trajectory. The body map contains the central body, the transfer
 * bodies and the body to be propagated. Default ephemeris is used for the central body but the ephemerides of the transfer
 * bodies need to be provided as inputs.
 * \param nameCentralBody Name of the central body.
 * \param nameBodyToPropagate Name of the body to be propagated.
 * \param nameTransferBodies Vector containing the names of the transfer bodies.
 * \param ephemerisVectorTransferBodies Vector containing the ephemeris pointers of the different transfer bodies.
 * \param gravitationalParametersTransferBodies Vector containing the gravitational parameters of the transfer bodies [m^3 s^-2].
 * \return Body map for the patched conics trajectory.
 */
simulation_setup::NamedBodyMap setupBodyMapFromUserDefinedEphemeridesForPatchedConicsTrajectory(const std::string& nameCentralBody,
        const std::string& nameBodyToPropagate,
        const std::vector< std::string >& nameTransferBodies,
        const std::vector<ephemerides::EphemerisPointer> &ephemerisVectorTransferBodies,
        const std::vector<double>& gravitationalParametersTransferBodies);


//! Function to directly setup a vector of acceleration maps for a patched conics trajectory.
/*!
 * Function to directly setup a vector of acceleration maps for a patched conics trajectory. For each leg, only the central body
 * exerts a point-mass gravity acceleration on the body to be propagated.
 * \param numberOfLegs Number of legs of the patched conics trajectory.
 * \param nameCentralBody Name of the central body.
 * \param nameBodyToPropagate Name of the body to be propagated.
 * \param bodyMap Body map for the Lambert targeter.
 * \return Acceleration map for the Lambert targeter.
 */
std::vector < basic_astrodynamics::AccelerationMap > setupAccelerationMapPatchedConicsTrajectory(
        const double numberOfLegs,
        const std::string& nameCentralBody,
        const std::string& nameBodyToPropagate,
        const simulation_setup::NamedBodyMap& bodyMap );


//! Function to create the trajectory from the body map.
/*!
 * Function to create the trajectory from the body map.
 * \param bodyMap Body map from which the trajectory is to be defined.
 * \param transferBodyOrder Vector containing the names of the transfer bodies involved in the trajectory.
 * \param centralBody Name of the central body of the patched conics trajectory.
 * \param transferLegTypes Vector containing the leg types.
 * \param trajectoryIndependentVariables Vector containing all the defining variables for the whole trajectory.
 * \param minimumPericenterRadii Vector containing the minimum distance between the spacecraft and the body.<commit_msg>Small correction in comments.<commit_after>/*    Copyright (c) 2010-2017, Delft University of Technology
 *    All rigths reserved
 *
 *    This file is part of the Tudat. Redistribution and use in source and
 *    binary forms, with or without modification, are permitted exclusively
 *    under the terms of the Modified BSD license. You should have received
 *    a copy of the license with this file. If not, please or visit:
 *    http://tudat.tudelft.nl/LICENSE.
 */

#ifndef TUDAT_PROPAGATION_PATCHED_CONIC_FULL
#define TUDAT_PROPAGATION_PATCHED_CONIC_FULL

#include "Tudat/SimulationSetup/tudatSimulationHeader.h"
#include "Tudat/Astrodynamics/TrajectoryDesign/trajectory.h"

namespace tudat
{

namespace propagators
{

//! Function to setup a body map corresponding to the assumptions of a patched conics trajectory,
//! using default ephemerides for the central and transfer bodies.
/*!
 * Function to setup a body map for the patched conics trajectory. The body map contains the central body, the transfer
 * bodies and the body to be propagated. The positions of the central and transfer bodies are directly retrieved from ephemerides.
 * \param nameCentralBody Name of the central body.
 * \param nameBodyToPropagate Name of the body to be propagated.
 * \param nameTransferBodies Vector containing the names of the transfer bodies.
 * \return Body map for the patched conics trajectory.
 */
simulation_setup::NamedBodyMap setupBodyMapFromEphemeridesForPatchedConicsTrajectory(
        const std::string& nameCentralBody,
        const std::string& nameBodyToPropagate,
        const std::vector< std::string >& nameTransferBodies );


//! Function to setup a body map corresponding to the assumptions of the patched conics trajectory,
//! the ephemerides of the transfer bodies being provided as inputs.
/*!
 * Function to setup a body map for the patched conics trajectory. The body map contains the central body, the transfer
 * bodies and the body to be propagated. Default ephemeris is used for the central body but the ephemerides of the transfer
 * bodies need to be provided as inputs.
 * \param nameCentralBody Name of the central body.
 * \param nameBodyToPropagate Name of the body to be propagated.
 * \param nameTransferBodies Vector containing the names of the transfer bodies.
 * \param ephemerisVectorTransferBodies Vector containing the ephemeris pointers of the different transfer bodies.
 * \param gravitationalParametersTransferBodies Vector containing the gravitational parameters of the transfer bodies [m^3 s^-2].
 * \return Body map for the patched conics trajectory.
 */
simulation_setup::NamedBodyMap setupBodyMapFromUserDefinedEphemeridesForPatchedConicsTrajectory(const std::string& nameCentralBody,
        const std::string& nameBodyToPropagate,
        const std::vector< std::string >& nameTransferBodies,
        const std::vector<ephemerides::EphemerisPointer> &ephemerisVectorTransferBodies,
        const std::vector<double>& gravitationalParametersTransferBodies);


//! Function to directly setup a vector of acceleration maps for a patched conics trajectory.
/*!
 * Function to directly setup a vector of acceleration maps for a patched conics trajectory. For each leg, only the central body
 * exerts a point-mass gravity acceleration on the body to be propagated.
 * \param numberOfLegs Number of legs of the patched conics trajectory.
 * \param nameCentralBody Name of the central body.
 * \param nameBodyToPropagate Name of the body to be propagated.
 * \param bodyMap Body map for the patched conics trajectory.
 * \return Acceleration map for the patched conics trajectory.
 */
std::vector < basic_astrodynamics::AccelerationMap > setupAccelerationMapPatchedConicsTrajectory(
        const double numberOfLegs,
        const std::string& nameCentralBody,
        const std::string& nameBodyToPropagate,
        const simulation_setup::NamedBodyMap& bodyMap );


//! Function to create the trajectory from the body map.
/*!
 * Function to create the trajectory from the body map.
 * \param bodyMap Body map from which the trajectory is to be defined.
 * \param transferBodyOrder Vector containing the names of the transfer bodies involved in the trajectory.
 * \param centralBody Name of the central body of the patched conics trajectory.
 * \param transferLegTypes Vector containing the leg types.
 * \param trajectoryIndependentVariables Vector containing all the defining variables for the whole trajectory.
 * \param minimumPericenterRadii Vector containing the minimum distance between the spacecraft and the body.
{'fraction_non_alphanumeric': 0.05604299188418513, 'fraction_numerical': 0.0021934634788330775, 'mean_word_length': 4.457211250748055, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5713410', 'n_tokens_mistral': 2425, 'n_tokens_neox': 2250, 'n_words': 1044}