9 #include "../Core/SharedLibraryExportMacros.h" 12 #include "../Star/CInterface.h" 13 #include "../Planet/CInterface.h" 32 LIB_PUBLIC
extern const double NaN;
51 bool disable_precision_fail
59 unsigned num_tidal_frequency_breaks,
62 unsigned num_spin_frequency_breaks,
66 double *tidal_frequency_breaks,
70 double *spin_frequency_breaks,
76 double *tidal_frequency_powers,
82 double *spin_frequency_powers,
86 double reference_phase_lag,
91 double inertial_mode_enhancement,
95 double inertial_mode_sharpness
110 double initial_semimajor,
113 double initial_eccentricity,
117 double initial_inclination,
121 double disk_lock_frequency,
124 double disk_dissipation_age,
127 double secondary_formation_age
142 double initial_semimajor,
145 double initial_eccentricity,
149 double initial_inclination,
153 double disk_lock_frequency,
156 double disk_dissipation_age,
159 double secondary_formation_age
174 double initial_semimajor,
177 double initial_eccentricity,
181 double initial_inclination,
185 double disk_lock_frequency,
188 double disk_dissipation_age
209 double companion_mass,
219 const double *spin_angmom,
223 const double *inclination,
228 const double *periapsis,
237 bool zero_outer_inclination,
242 bool zero_outer_periapsis
257 double companion_mass,
267 const double *spin_angmom,
271 const double *inclination,
276 const double *periapsis,
285 bool zero_outer_inclination,
290 bool zero_outer_periapsis
309 const double *spin_angmom,
314 const double *inclination,
319 const double *periapsis,
336 double max_time_step,
342 double *required_ages,
345 unsigned num_required_ages,
357 unsigned max_time_steps
388 const CPlanet *planet,
400 double *eccentricity,
404 double *envelope_inclination,
408 double *core_inclination,
412 double *envelope_periapsis,
416 double *core_periapsis,
420 double *envelope_angmom,
429 double *planet_inclination,
433 double *planet_periapsis,
437 double *planet_angmom,
445 bool *wind_saturation,
449 double *semimajor_rate,
453 double *eccentricity_rate,
457 double *envelope_inclination_rate,
461 double *core_inclination_rate,
465 double *envelope_periapsis_rate,
469 double *core_periapsis_rate,
473 double *envelope_angmom_rate,
477 double *core_angmom_rate,
482 double *planet_inclination_rate,
487 double *planet_periapsis_rate,
491 double *planet_angmom_rate
522 double *eccentricity,
526 double *primary_envelope_inclination,
530 double *primary_core_inclination,
534 double *primary_envelope_periapsis,
538 double *primary_core_periapsis,
542 double *primary_envelope_angmom,
546 double *primary_core_angmom,
550 double *secondary_envelope_inclination,
554 double *secondary_core_inclination,
558 double *secondary_envelope_periapsis,
562 double *secondary_core_periapsis,
566 double *secondary_envelope_angmom,
570 double *secondary_core_angmom,
578 bool *primary_wind_saturation,
583 bool *secondary_wind_saturation,
587 double *semimajor_rate,
591 double *eccentricity_rate,
595 double *primary_envelope_inclination_rate,
599 double *primary_core_inclination_rate,
603 double *primary_envelope_periapsis_rate,
607 double *primary_core_periapsis_rate,
611 double *primary_envelope_angmom_rate,
615 double *primary_core_angmom_rate,
619 double *secondary_envelope_inclination_rate,
623 double *secondary_core_inclination_rate,
627 double *secondary_envelope_periapsis_rate,
631 double *secondary_core_periapsis_rate,
635 double *secondary_envelope_angmom_rate,
639 double *secondary_core_angmom_rate
655 const CPlanet *primary,
658 const CPlanet *secondary,
670 double *eccentricity,
674 double *primary_inclination,
678 double *primary_periapsis,
681 double *primary_angmom,
686 double *secondary_inclination,
691 double *secondary_periapsis,
695 double *secondary_angmom,
702 double *semimajor_rate,
706 double *eccentricity_rate,
710 double *primary_inclination_rate,
714 double *primary_periapsis_rate,
718 double *primary_angmom_rate,
723 double *secondary_inclination_rate,
728 double *secondary_periapsis_rate,
732 double *secondary_angmom_rate
751 const CPlanet *planet,
763 double *eccentricity,
767 double *envelope_inclination,
771 double *core_inclination,
775 double *envelope_periapsis,
779 double *core_periapsis,
783 double *envelope_angmom,
792 double *planet_inclination,
796 double *planet_periapsis,
800 double *planet_angmom,
808 bool *wind_saturation
839 double *eccentricity,
843 double *primary_envelope_inclination,
847 double *primary_core_inclination,
851 double *primary_envelope_periapsis,
855 double *primary_core_periapsis,
859 double *primary_envelope_angmom,
863 double *primary_core_angmom,
867 double *secondary_envelope_inclination,
871 double *secondary_core_inclination,
875 double *secondary_envelope_periapsis,
879 double *secondary_core_periapsis,
883 double *secondary_envelope_angmom,
887 double *secondary_core_angmom,
895 bool *primary_wind_saturation,
900 bool *secondary_wind_saturation
LIB_PUBLIC const double NaN
Not a number.
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, double inertial_mode_enhancement, double inertial_mode_sharpness)
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)
Sets the current state of a system.
LIB_PUBLIC double get_expansion_coeff_precision(int m, int s)
doc
LIB_PUBLIC DiskBinarySystem * create_planet_planet_system(CPlanet *primary, CPlanet *secondary, double initial_semimajor, double initial_eccentricity, double initial_inclination, double disk_lock_frequency, double disk_dissipation_age)
Create a binary system out of two planets.
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)
Defines the orbit a planet is in.
struct LIB_PUBLIC BrokenPowerlawPhaseLagZone
Opaque struct to cast to/from Evolve::BrokenPowerlawPhasLagZone.
struct LIB_PUBLIC OrbitSolver
Opaque struct to cast to/from Evolve::OrbitSolver.
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, double *semimajor_rate, double *eccentricity_rate, double *primary_envelope_inclination_rate, double *primary_core_inclination_rate, double *primary_envelope_periapsis_rate, double *primary_core_periapsis_rate, double *primary_envelope_angmom_rate, double *primary_core_angmom_rate, double *secondary_envelope_inclination_rate, double *secondary_core_inclination_rate, double *secondary_envelope_periapsis_rate, double *secondary_core_periapsis_rate, double *secondary_envelope_angmom_rate, double *secondary_core_angmom_rate)
Fill C-style arrays with the calculated evolution of a binary star system.
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, double max_runtime, unsigned max_time_steps)
Calculate the evolution of a previously configured binary system.
LIB_PUBLIC void destroy_solver(OrbitSolver *solver)
Destroy a solver created by evolve_system.
LIB_PUBLIC const int BINARY_EVOL_MODE
Evolution mode ID for when the two bodies orbit each other.
Defines the OrbitSolver class, the various stopping conditions and a number of other classes used whi...
struct LIB_PUBLIC DiskBinarySystem
Opaque struct to cast to/from Evolve::DiskBinarySystem.
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, double *semimajor_rate, double *eccentricity_rate, double *envelope_inclination_rate, double *core_inclination_rate, double *envelope_periapsis_rate, double *core_periapsis_rate, double *envelope_angmom_rate, double *core_angmom_rate, double *planet_inclination_rate, double *planet_periapsis_rate, double *planet_angmom_rate)
Fill C-style arrays with the calculated evolution of a star-planet system.
LIB_PUBLIC void destroy_binary(DiskBinarySystem *system)
Destroy a previously created binary system.
LIB_PUBLIC const int LOCKED_SURFACE_SPIN_EVOL_MODE
Evolution mode ID for when the surface rotation of one of the bodies is locked to a prescribed value...
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)
Create a binary system out of two stars.
struct LIB_PUBLIC EccentricityExpansionCoefficients
Opaque struct to cast to/from Evolve::EccentricityExpansionCoefficients.
LIB_PUBLIC unsigned num_evolution_steps(OrbitSolver *solver)
At how many points was the evolution saved.
LIB_PUBLIC const int TABULATION_EVOL_MODE
Evolution mode ID used as the mode to transform to from all other modes when storing the computed evo...
LIB_PUBLIC const int SINGLE_EVOL_MODE
Evolution mode ID for when there is only one body in the system (only its rotation evolves)...
Declares a class of binary systems which start with a disk-locked star which is then released and at ...
LIB_PUBLIC double evaluate_expansion_coeff(int m, int s, double e, bool deriv)
doc
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)
Fill destiantions with the calculated final state of a binary star system.
LIB_PUBLIC void get_planet_planet_evolution(const OrbitSolver *solver, const DiskBinarySystem *system, const CPlanet *primary, const CPlanet *secondary, double *age, double *semimajor, double *eccentricity, double *primary_inclination, double *primary_periapsis, double *primary_angmom, double *secondary_inclination, double *secondary_periapsis, double *secondary_angmom, int *evolution_mode, double *semimajor_rate, double *eccentricity_rate, double *primary_inclination_rate, double *primary_periapsis_rate, double *primary_angmom_rate, double *secondary_inclination_rate, double *secondary_periapsis_rate, double *secondary_angmom_rate)
Fill C-style arrays with the calculated evolution of a planet-planet system.
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)
Create a binary system out of a star and a planet.
LIB_PUBLIC void prepare_eccentricity_expansion(const char *filename, double precision, bool pre_load, bool disable_precision_fail)
Read eccentricity expansion coefficients from a file.
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)
Fill destiantions with the calculated final state of a star-planet system.
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)
Defines the orbit a star is in.
struct LIB_PUBLIC EvolvingStar
Opaque struct to cast to/from Star::InterpolatedEvolutionStar.