Program Listing for File EccentricOrbit.h

Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/unit_tests/testEvolve/EccentricOrbit.h)

#ifndef __UNIT_TESTS_ECCENTRIC_ORBIT_H
#define __UNIT_TESTS_ECCENTRIC_ORBIT_H

#include "../../Core/Common.h"
#include "../../Core/AstronomicalConstants.h"

#include "Eigen/Dense"

#include <gsl/gsl_errno.h>
#include <gsl/gsl_roots.h>

#include <iostream>
#include <iomanip>

namespace Evolve {
    class EccentricOrbit {
    private:
        double
            __primary_mass,

            __secondary_mass,

            __semimajor,

            __eccentricity;

        double reduced_mass() const;

    public:
        EccentricOrbit(
            double primary_mass=Core::NaN,

            double secondary_mass=Core::NaN,

            double semimajor=Core::NaN,

            double eccentricity=Core::NaN
        ) :
            __primary_mass(primary_mass),
            __secondary_mass(secondary_mass),
            __semimajor(semimajor),
            __eccentricity(eccentricity)
        {}

        double primary_mass() const {return __primary_mass;}

        double &primary_mass() {return __primary_mass;}

        double secondary_mass() const {return __secondary_mass;}

        double &secondary_mass() {return __secondary_mass;}

        double semimajor() const {return __semimajor;}

        double &semimajor() {return __semimajor;}

        double eccentricity() const {return __eccentricity;}

        double &eccentricity() {return __eccentricity;}

        double eccentric_anomaly(
            double orbital_phase
        ) const;

        Eigen::Vector3d secondary_position(
            double orbital_phase
        ) const;

        double orbital_angmom() const;

        double orbital_energy() const;

        double orbital_period() const;
    }; //End EccentricOrbit class
}//End Evolve namespace

#endif