Program Listing for File PlanetZone.h¶
↰ Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/Planet/PlanetZone.h)
#ifndef __LOCKED_PLANET_ZONE_H
#define __LOCKED_PLANET_ZONE_H
#include "../Core/SharedLibraryExportMacros.h"
#include "../Evolve/DissipatingZone.h"
#include "../Core/AstronomicalConstants.h"
#include "../Evolve/BrokenPowerlawPhaseLagZone.h"
namespace Planet {
class LIB_LOCAL PlanetZone :
virtual public Evolve::BrokenPowerlawPhaseLagZone {
private:
double
__mass,
__radius,
__moment_of_inertia_factor;
public:
PlanetZone(
double mass,
double radius,
double moment_of_inertia_factor
) :
__mass(mass),
__radius(radius),
__moment_of_inertia_factor(moment_of_inertia_factor)
{}
double love_coefficient(int,
int,
Evolve::Dissipation::QuantityEntry) const
{return 0;}
double moment_of_inertia(
int deriv_order=0
) const
{
return (
deriv_order==0
? __moment_of_inertia_factor * __mass * std::pow(__radius, 2)
: 0
);
}
double moment_of_inertia(double, int deriv_order=0) const
{return moment_of_inertia(deriv_order);}
double outer_radius(int deriv_order=0) const
{return (deriv_order==0 ? __radius : 0);}
double outer_radius(double, int deriv_order=0) const
{return (deriv_order==0 ? __radius : 0);}
double outer_mass(int deriv_order=0) const
{return (deriv_order==0 ? __mass : 0);}
double outer_mass(double, int deriv_order=0) const
{return (deriv_order==0 ? __mass : 0);}
void configure(
bool initialize,
double age,
double orbital_frequency,
double eccentricity,
double orbital_angmom,
double spin,
double inclination,
double periapsis,
bool spin_is_frequency
)
{
BrokenPowerlawPhaseLagZone::configure(
initialize,
age,
orbital_frequency,
eccentricity,
orbital_angmom,
(dissipative() ? spin : orbital_frequency),
(dissipative() ? inclination : 0),
(dissipative() ? periapsis : 0),
(dissipative() ? spin_is_frequency : true)
);
}
}; //End LockedPlanetZone class.
}//End Planet namespace.
#endif