Program Listing for File SingleTidalTermBody.h

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

#ifndef __SINGLE_TIDAL_TERM_BODY_H
#define __SINGLE_TIDAL_TERM_BODY_H

#include "../../Star/SaturatingSkumanichWindBody.h"
#include "SingleTidalTermZone.h"

namespace Evolve {

    class SingleTidalTermBody : public Star::SaturatingSkumanichWindBody {
    private:
        SingleTidalTermZone __zone;
    public:
        SingleTidalTermBody(
            double wind_strength,

            double saturation_frequency,

            int orbital_frequency_multiplier,

            int spin_frequency_multiplier,

            double phase_lag,

            const std::valarray<double> &mass_coefficients,

            const std::valarray<double> &radius_coefficients,

            const std::valarray<double> &inertia_coefficients
        ) :
            SaturatingSkumanichWindBody(wind_strength,
                                        saturation_frequency),
            __zone(orbital_frequency_multiplier,
                   spin_frequency_multiplier,
                   phase_lag,
                   mass_coefficients,
                   radius_coefficients,
                   inertia_coefficients)
        {}

        unsigned number_zones() const {return 1;}

        const DissipatingZone &zone(
            unsigned
#ifndef NDEBUG
            zone_index
#endif
        ) const
        {
            assert(zone_index == 0);
            return __zone;
        }

        DissipatingZone &zone(
            unsigned
#ifndef NDEBUG
            zone_index
#endif
        )
        {
            assert(zone_index == 0);
            return __zone;
        }

        Eigen::Vector3d angular_momentum_coupling(
            unsigned,
            Dissipation::QuantityEntry =Dissipation::NO_DERIV,
            bool =false
        ) const
        {assert(false);}
    };//End SingleTidalTermBody class.

}//End Evolve namespace.

#endif