Program Listing for File CInterface.h

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

#include "../Core/SharedLibraryExportMacros.h"
#include "DiskBinarySystem.h"
#include "OrbitSolver.h"
#include "../Star/CInterface.h"
#include "../Planet/CInterface.h"

extern "C" {
    LIB_PUBLIC extern const int LOCKED_SURFACE_SPIN_EVOL_MODE;

    LIB_PUBLIC extern const int BINARY_EVOL_MODE;

    LIB_PUBLIC extern const int SINGLE_EVOL_MODE;

    LIB_PUBLIC extern const int TABULATION_EVOL_MODE;

    LIB_PUBLIC extern const double NaN;

    struct LIB_PUBLIC DiskBinarySystem;

    struct LIB_PUBLIC OrbitSolver;

    struct LIB_PUBLIC BrokenPowerlawPhaseLagZone;

    LIB_PUBLIC void read_eccentricity_expansion_coefficients(
        const char *filename
    );

    LIB_PUBLIC void set_zone_dissipation(
        BrokenPowerlawPhaseLagZone *zone,

        unsigned num_tidal_frequency_breaks,

        unsigned num_spin_frequency_breaks,

        double *tidal_frequency_breaks,

        double *spin_frequency_breaks,

        double *tidal_frequency_powers,

        double *spin_frequency_powers,

        double reference_phase_lag
    );

    LIB_PUBLIC DiskBinarySystem *create_star_planet_system(
        EvolvingStar *star,

        CPlanet *planet,

        double initial_semimajor,

        double initial_eccentricity,

        double initial_inclination,

        double disk_lock_frequency,

        double disk_dissipation_age,

        double secondary_formation_age
    );

    LIB_PUBLIC DiskBinarySystem *create_star_star_system(
        EvolvingStar *primary,

        EvolvingStar *secondary,

        double initial_semimajor,

        double initial_eccentricity,

        double initial_inclination,

        double disk_lock_frequency,

        double disk_dissipation_age,

        double secondary_formation_age
    );

    LIB_PUBLIC void destroy_binary(
        DiskBinarySystem *system
    );

    LIB_PUBLIC void configure_planet(
        CPlanet *planet,

        double age,

        double companion_mass,

        double semimajor,

        double eccentricity,

        const double *spin_angmom,

        const double *inclination,

        const double *periapsis,

        bool locked_surface,

        bool zero_outer_inclination,

        bool zero_outer_periapsis
    );

    LIB_PUBLIC void configure_star(
        EvolvingStar *star,

        double age,

        double companion_mass,

        double semimajor,

        double eccentricity,

        const double *spin_angmom,

        const double *inclination,

        const double *periapsis,

        bool locked_surface,

        bool zero_outer_inclination,

        bool zero_outer_periapsis
    );

    LIB_PUBLIC void configure_system(
        DiskBinarySystem *system,

        double age,

        double semimajor,

        double eccentricity,

        const double *spin_angmom,

        const double *inclination,

        const double *periapsis,

        int evolution_mode
    );

    LIB_PUBLIC OrbitSolver *evolve_system(
        DiskBinarySystem *system,

        double final_age,

        double max_time_step,

        double precision,

        double *required_ages,

        unsigned num_required_ages,

        bool print_progress
    );

    LIB_PUBLIC void destroy_solver(
        OrbitSolver *solver
    );

    LIB_PUBLIC unsigned num_evolution_steps(
        OrbitSolver *solver
    );

    LIB_PUBLIC void get_star_planet_evolution(
        const OrbitSolver *solver,

        const DiskBinarySystem *system,

        const EvolvingStar *star,

        const CPlanet *planet,

        double *age,

        double *semimajor,

        double *eccentricity,

        double *envelope_inclination,

        double *core_inclination,

        double *envelope_periapsis,

        double *core_periapsis,

        double *envelope_angmom,

        double *core_angmom,

        double *planet_inclination,

        double *planet_periapsis,

        double *planet_angmom,

        int *evolution_mode,

        bool *wind_saturation
    );

    LIB_PUBLIC void get_star_star_evolution(
        const OrbitSolver *solver,

        const DiskBinarySystem *system,

        const EvolvingStar *primary,

        const EvolvingStar *secondary,

        double *age,

        double *semimajor,

        double *eccentricity,

        double *primary_envelope_inclination,

        double *primary_core_inclination,

        double *primary_envelope_periapsis,

        double *primary_core_periapsis,

        double *primary_envelope_angmom,

        double *primary_core_angmom,

        double *secondary_envelope_inclination,

        double *secondary_core_inclination,

        double *secondary_envelope_periapsis,

        double *secondary_core_periapsis,

        double *secondary_envelope_angmom,

        double *secondary_core_angmom,

        int *evolution_mode,

        bool *primary_wind_saturation,

        bool *secondary_wind_saturation
    );

    LIB_PUBLIC void get_star_planet_final_state(
        const OrbitSolver *solver,

        const DiskBinarySystem *system,

        const EvolvingStar *star,

        const CPlanet *planet,

        double *age,

        double *semimajor,

        double *eccentricity,

        double *envelope_inclination,

        double *core_inclination,

        double *envelope_periapsis,

        double *core_periapsis,

        double *envelope_angmom,

        double *core_angmom,

        double *planet_inclination,

        double *planet_periapsis,

        double *planet_angmom,

        int *evolution_mode,

        bool *wind_saturation
    );

    LIB_PUBLIC void get_star_star_final_state(
        const OrbitSolver *solver,

        const DiskBinarySystem *system,

        const EvolvingStar *primary,

        const EvolvingStar *secondary,

        double *age,

        double *semimajor,

        double *eccentricity,

        double *primary_envelope_inclination,

        double *primary_core_inclination,

        double *primary_envelope_periapsis,

        double *primary_core_periapsis,

        double *primary_envelope_angmom,

        double *primary_core_angmom,

        double *secondary_envelope_inclination,

        double *secondary_core_inclination,

        double *secondary_envelope_periapsis,

        double *secondary_core_periapsis,

        double *secondary_envelope_angmom,

        double *secondary_core_angmom,

        int *evolution_mode,

        bool *primary_wind_saturation,

        bool *secondary_wind_saturation
    );

}//End Extern "C"