Skip to content

File GeneralPerturbations.hpp

File List > astrea > astro > astro > state > orbital_data_formats > instances > GeneralPerturbations.hpp

Go to the documentation of this file

#pragma once

#include <iosfwd>
#include <optional>
#include <string>

#include <nlohmann/json.hpp>

namespace astrea {
namespace astro {

struct GeneralPerturbations { // TODO: Right now, units are implied, but they should be used if possible. At least look into

    GeneralPerturbations() = default;

    GeneralPerturbations(const nlohmann::json& data);

    ~GeneralPerturbations() = default;

    int DB_ID;                                    
    std::optional<double> APOAPSIS;               
    std::optional<long double> ARG_OF_PERICENTER; 
    std::optional<long double> BSTAR;             
    std::string CCSDS_OMM_VERS;                   
    std::string CENTER_NAME;                      
    std::optional<char> CLASSIFICATION_TYPE;      
    std::string COMMENT;                          
    std::optional<std::string> COUNTRY_CODE;      
    std::optional<std::string> CREATION_DATE;     
    std::optional<std::string> DECAY_DATE;        
    std::optional<long double> ECCENTRICITY;      
    std::optional<short> ELEMENT_SET_NO;          
    std::optional<short unsigned> EPHEMERIS_TYPE; 
    std::optional<std::string> EPOCH;             
    std::optional<long unsigned> FILE;            
    unsigned GP_ID;                               
    std::optional<long double> INCLINATION;       
    std::optional<std::string> LAUNCH_DATE;       
    std::optional<double> MEAN_ANOMALY;           
    std::string MEAN_ELEMENT_THEORY;              
    std::optional<long double> MEAN_MOTION;       
    std::optional<long double> MEAN_MOTION_DDOT;  
    std::optional<long double> MEAN_MOTION_DOT;   
    unsigned NORAD_CAT_ID;                        
    std::optional<std::string> OBJECT_ID;         
    std::optional<std::string> OBJECT_NAME;       
    std::optional<std::string> OBJECT_TYPE;       
    std::string ORIGINATOR;                       
    std::optional<double> PERIAPSIS;              
    std::optional<double> PERIOD;                 
    std::optional<long double> RA_OF_ASC_NODE;    
    std::optional<std::string> RCS_SIZE;          
    std::string REF_FRAME;                        
    std::optional<unsigned> REV_AT_EPOCH;         
    std::optional<double> SEMIMAJOR_AXIS;         
    std::optional<std::string> SITE;              
    std::string TIME_SYSTEM;                      
    std::optional<std::string> TLE_LINE0;         
    std::optional<std::string> TLE_LINE1;         
    std::optional<std::string> TLE_LINE2;         
};

std::ostream& operator<<(std::ostream& os, const GeneralPerturbations& gp);

} // namespace astro
} // namespace astrea