Program Listing for File Oblique10LinearQuantity.h

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

#ifndef __OBLIQUE_1_0_LINEAR_QUANTITY_H
#define __OBLIQUE_1_0_LINEAR_QUANTITY_H

#include "../../Core/Functions.h"
#include "../../Core/InterpSolutionIterator.h"

class Oblique10LinearQuantity : public Core::OneArgumentDiffFunction {
private:
    double
        __total_angmom,

        //units of the orbital angular momentum.
        __initial_star_angmom,

        __angmom_scale,

        __initial_indefinite_integral;

    double indefinite_integral(double star_angmom) const;

public:
    Oblique10LinearQuantity(double total_angmom,
                            double orbital_angmom,
                            double initial_star_angmom);

    double operator()(double star_angmom) const;

    double range_high() const {return __initial_star_angmom * __angmom_scale;}
    double range_low() const {return (__total_angmom - 1.0) * __angmom_scale;}

    Core::InterpSolutionIterator crossings(double = 0) const
    {
        throw Core::Error::Runtime(
            "Finding all solutinos of Oblique10LinearQuantity not supported!"
        );
    };

    const Core::FunctionDerivatives *deriv(double star_angmom) const;

}; //End Oblique10LinearQuantity class.

#endif