Program Listing for File DissipationQuantities.h

Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/Evolve/DissipationQuantities.h)

#ifndef __DISSIPATION_QUANTITIES_H
#define __DISSIPATION_QUANTITIES_H

#include "../Core/SharedLibraryExportMacros.h"
#include <ostream>
#include <cassert>

namespace Evolve {

    namespace Dissipation {

        enum LIB_LOCAL Quantity {
            POWER,

            TORQUEX,

            TORQUEY,

            TORQUEZ,

            SEMIMAJOR_DECAY,

            ORBIT_SPINUP,

            INCLINATION_DECAY,

            ECCENTRICITY_DECAY,

            NUM_QUANTITIES
        }; //End Quantity enumeration.

        enum LIB_LOCAL QuantityEntry {

            NO_DERIV,

            AGE,

            SPIN_FREQUENCY,

            ORBITAL_FREQUENCY,

            END_PHASE_LAG_DERIV,

            INCLINATION = END_PHASE_LAG_DERIV,

            ECCENTRICITY,

            END_DIMENSIONLESS_DERIV,

            PERIAPSIS = END_DIMENSIONLESS_DERIV,

            RADIUS,

            MOMENT_OF_INERTIA,

            SPIN_ANGMOM,

            SEMIMAJOR,

            NUM_DERIVATIVES,

            EXPANSION_ERROR = NUM_DERIVATIVES,

            NUM_ENTRIES
        }; //End QuantityEntries enumeration.

    } //End Dissipation namespace.

    LIB_LOCAL inline bool zone_specific(Dissipation::QuantityEntry entry)
    {
        return (entry == Dissipation::SPIN_FREQUENCY
                ||
                entry == Dissipation::INCLINATION
                ||
                entry == Dissipation::PERIAPSIS
                ||
                entry == Dissipation::MOMENT_OF_INERTIA
                ||
                entry == Dissipation::SPIN_ANGMOM);
    }

    LIB_LOCAL std::ostream &operator<<(std::ostream &os,
            const Dissipation::Quantity &quantity);

    LIB_LOCAL std::ostream &operator<<(std::ostream &os,
                                       Dissipation::QuantityEntry entry);

} //End Evolve namespace.

#endif