21#ifndef SEVN_PROCESSES_H
22#define SEVN_PROCESSES_H
59 static std::vector<Process*>
all;
64 virtual inline std::string
name(){
return "Property (generic)";}
69 double get(
const size_t &
id){
return VB[id]; }
70 double get_var(
const size_t &starID,
const size_t &propID){
return VS[starID][propID]; }
141 std::vector<double>
VB;
142 std::vector<std::vector<double>>
VS;
169 void set(
const size_t &
id,
const double &value){
VB[id] = value; }
170 void set_var(
const size_t &starID,
const size_t &propID,
const double &value){
VS[starID][propID] = value; }
175 for(
size_t i = 0; i <
VB.size(); i++)
178 for(
size_t i = 0; i < 2; i++){
179 for(
size_t k = 0; k <
VS[i].size(); k++){
256 inline std::string
name()
override {
return "RocheLobe"; }
357 inline std::string
name()
override {
return "CommonEnvelope"; }
427 double zeta = std::log(Z/0.02);
429 double ret = 0.30406 + 0.0805*zeta + 0.0897*zeta*zeta + 0.0878*zeta*zeta*zeta + 0.0222*zeta*zeta*zeta*zeta;
454 double CONST = (pow(M1+M2,XX))*(M1-MC1+M2-MC22)*Eratio;
456 double MF=std::max(MC1+MC22, (M1+M2)*pow((Eratio),(1/XX)));
460 while(std::abs(DELY/MF)>toll && Niter<maxit){
462 DELY = pow(MF,XX)*(MF-MC1-MC22) - CONST;
464 DERI = pow(MF,(XX-1))*((1+XX)*MF - XX*(MC1+MC22));
528 return (
new SNKicks(_io,
false));
531 inline std::string
name()
override {
return "SNKick"; }
541 static std::string
log_message(
Binstar *binstar,
double a_fin,
double e_fin,
double cos_nu,
double vcom);
567 return (
new GWrad(_io,
false));
570 inline std::string
name()
override {
return "GWrad"; }
591 if(
orb_change==
nullptr)
svlog.
critical(
"Tides mode " + _io->tides_mode +
" not available", __FILE__, __LINE__);
599 return (
new Tides(_io,
false));
602 inline std::string
name()
override {
return "Tides"; }
629 return (
new Mix(_io,
false));
632 inline std::string
name()
override {
return "Mix"; }
#define _UNUSED
Definition: BinaryProperty.h:20
static std::vector< BinaryProperty * > all
Definition: BinaryProperty.h:34
Definition: Processes.h:333
double Eorb_fin
Definition: Processes.h:502
double M_core_secondary
Definition: Processes.h:497
std::string coalesce(Binstar *binstar)
Definition: Processes.cpp:1242
std::string log_message_swallowed(Binstar *binstar)
Definition: Processes.cpp:1482
std::string main_coalesce(Binstar *binstar)
Definition: Processes.cpp:1116
double RL_primary_final
Definition: Processes.h:499
std::string name() override
Definition: Processes.h:357
int special_evolve(Binstar *binstar) override
Definition: Processes.cpp:830
double M_core_primary
Definition: Processes.h:495
Star * secondary
Definition: Processes.h:486
int lose_the_envelope(Binstar *binstar)
Definition: Processes.cpp:1340
double R_core_secondary
Definition: Processes.h:498
static std::string log_mess(Binstar *binstar, Star *primary, Star *secondary)
Definition: Processes.cpp:1468
double lambda
Definition: Processes.h:489
double R_core_primary
Definition: Processes.h:496
static size_t ID
Definition: Processes.h:350
CommonEnvelope(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Processes.h:336
double a_fin
Definition: Processes.h:493
bool isinisialised
Definition: Processes.h:505
double Ebind_ini
Definition: Processes.h:501
double hurley_final_mass(const double Ebindf, const double toll=1e-3, const double maxit=100)
Definition: Processes.h:436
double Eorb_ini
Definition: Processes.h:502
double final_mass_after_coalescence()
Definition: Processes.cpp:1370
CommonEnvelope * Instance(IO *_io) override
Definition: Processes.h:353
double M_env_primary
Definition: Processes.h:495
std::string coalesce_with_bindingEnergy(Binstar *binstar)
Definition: Processes.cpp:1180
double hurley_rm_x(double Z)
Definition: Processes.h:425
double ecc_fin
Definition: Processes.h:493
double M_env_secondary
Definition: Processes.h:497
static CommonEnvelope _commonenvelope
Definition: Processes.h:351
int whoisprimary(Binstar *binstar)
Definition: Processes.cpp:1053
int init(Binstar *binstar)
Definition: Processes.cpp:988
double alpha
Definition: Processes.h:490
double RL_secondary_final
Definition: Processes.h:499
Star * primary
Definition: Processes.h:485
static size_t ID
Definition: BinaryProperty.h:110
Definition: Processes.h:546
static size_t ID
Definition: Processes.h:563
std::string name() override
Definition: Processes.h:570
int evolve(Binstar *binstar) override
Definition: Processes.cpp:190
GWrad(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Processes.h:549
GWrad * Instance(IO *_io) override
Definition: Processes.h:566
static GWrad _gwrad
Definition: Processes.h:564
bool first_time_GW
Definition: Processes.h:576
static size_t ID
Definition: property.h:826
Definition: Processes.h:188
virtual double NS_DBmag_accretion(_UNUSED Binstar *b, _UNUSED Star *s, _UNUSED double DM) const
Definition: Processes.cpp:23
virtual int accrete_mass(_UNUSED Binstar *binstar)
Definition: Processes.h:216
virtual double NS_DOmegaRem_accretion(_UNUSED Binstar *b, _UNUSED Star *s, _UNUSED double DM) const
Definition: Processes.cpp:46
virtual void handle_NS_massaccretion(_UNUSED Binstar *b, _UNUSED Star *s, _UNUSED double DM)
Definition: Processes.cpp:96
static size_t ID
Definition: property.h:785
Definition: Processes.h:607
std::string name() override
Definition: Processes.h:632
static size_t ID
Definition: Processes.h:625
Mix * Instance(IO *_io) override
Definition: Processes.h:628
static std::string log_message(Binstar *binstar, Star *accretor, Star *donor)
Definition: Processes.cpp:808
int special_evolve(Binstar *binstar) override
Definition: Processes.cpp:668
static Mix _mix
Definition: Processes.h:626
Mix(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Processes.h:611
static Orbital_change_CE * Instance(const std::string &name)
Definition: Orbit.cpp:1622
static Orbital_change_GW * Instance(const std::string &name)
Definition: Orbit.cpp:343
static Orbital_change_Mix * Instance(const std::string &name)
Definition: Orbit.cpp:1405
static Orbital_change_RL * Instance(const std::string &name)
Definition: Orbit.cpp:394
static Orbital_change_SNKicks * Instance(const std::string &name)
Definition: Orbit.cpp:1419
static Orbital_change_Tides * Instance(const std::string &name)
Definition: Orbit.cpp:17
virtual bool is_process_ongoing()
Other function that return useful information.
Definition: Orbit.h:76
virtual void set_options(_UNUSED IO *_io)
Definition: Orbit.h:87
Definition: Processes.h:43
std::string & get_msg()
Definition: Processes.h:72
std::vector< double > VB
Definition: Processes.h:141
virtual std::string name()
Definition: Processes.h:64
void Register(Process *_p, size_t *id, const std::string &_name)
Definition: Processes.h:159
Star * donor
Definition: Processes.h:154
static _PrintMap PrintMap
Definition: Processes.h:61
virtual Process * Instance(_UNUSED IO *_io)
Definition: Processes.h:63
std::map< std::string, size_t > _PrintMap
Definition: Processes.h:60
virtual int special_evolve(_UNUSED Binstar *binstar)
Definition: Processes.h:66
bool is_mass_transfer_happening()
Definition: Processes.h:100
void special_evolution_alarm_switch_off()
Definition: Processes.h:120
std::uniform_real_distribution< double > _uniform_real
Definition: Processes.h:166
bool is_special_evolution_alarm_on() const
Definition: Processes.h:121
void set_V_to_0()
Definition: Processes.h:173
void special_evolution_alarm_switch_on()
Three methods to handle the private member special_evolution_alarm.
Definition: Processes.h:119
static size_t size
Definition: Processes.h:140
virtual int evolve(_UNUSED Binstar *binstar)
Definition: Processes.h:65
Orbital_change * orb_change
Definition: Processes.h:157
Process()
Definition: Processes.h:46
Star * accretor
Definition: Processes.h:155
void reset_event()
Definition: Processes.h:116
std::vector< std::vector< double > > VS
Definition: Processes.h:142
void set_var(const size_t &starID, const size_t &propID, const double &value)
Definition: Processes.h:170
virtual bool is_process_ongoing() const
Definition: Processes.h:111
static std::vector< Process * > all
Definition: Processes.h:59
double get_event()
Definition: Processes.h:115
void set(const size_t &id, const double &value)
Definition: Processes.h:169
int modify_SemimajorDV_by_a_factor(double factor)
Definition: Processes.h:82
double get(const size_t &id)
Definition: Processes.h:69
void set_event(double code)
Events handling.
Definition: Processes.h:114
virtual double estimate_accreted_mass(_UNUSED double DM, _UNUSED Star *donor, _UNUSED Star *accretor, _UNUSED Binstar *binstar) const
Definition: Processes.h:137
double get_var(const size_t &starID, const size_t &propID)
Definition: Processes.h:70
std::string message
Definition: Processes.h:143
void restore()
Definition: Processes.h:74
bool special_evolution_alarm
Definition: Processes.h:145
void set_msg(const std::string &str)
Definition: Processes.h:171
SevnLogging svlog
Definition: Processes.h:156
int modify_EccentricityDV_by_a_factor(double factor)
Definition: Processes.h:91
double event_code
Definition: Processes.h:144
static vector< Property * > all
Definition: property.h:313
Definition: Processes.h:228
bool check_and_handle_swapping_condition(Binstar *binstar)
Definition: Processes.cpp:606
double DM_global_1
Definition: Processes.h:327
bool RLO_last_step
Definition: Processes.h:296
std::string _log_message(Binstar *binstar, bool swap_donor_accretor=false)
Definition: Processes.cpp:540
RocheLobe(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Processes.h:234
std::string name() override
Definition: Processes.h:256
RocheLobe * Instance(IO *_io) override
Definition: Processes.h:252
static std::string log_message_swallowed(Binstar *binstar, Star *swallowed, Star *other, double DM_accreted)
Definition: Processes.cpp:597
int special_evolve(Binstar *binstar) override
Definition: Processes.cpp:390
std::string log_message_end(Binstar *binstar, bool swap_donor_accretor=false)
Definition: Processes.cpp:577
double id_donor
Definition: Processes.h:328
int evolve(Binstar *binstar) override
Definition: Processes.cpp:273
int reset_DM_global()
Definition: Processes.h:308
bool RLOswapped
Definition: Processes.h:329
int reset_dMcumul_RLO_in_stars(Binstar *binstar)
Definition: Processes.cpp:654
double DM_global_0
Definition: Processes.h:327
static RocheLobe _rochelobe
Definition: Processes.h:250
static size_t ID
Definition: Processes.h:249
std::string log_message_start(Binstar *binstar, double q, double qcrit, bool swap_donor_accretor=false)
Definition: Processes.cpp:568
Definition: Processes.h:508
std::string name() override
Definition: Processes.h:531
int special_evolve(Binstar *binstar) override
Definition: Processes.cpp:109
SNKicks * Instance(IO *_io) override
Definition: Processes.h:527
static size_t ID
Definition: Processes.h:524
static std::string log_message(Binstar *binstar, double a_fin, double e_fin, double cos_nu, double vcom)
Definition: Processes.cpp:164
static SNKicks _snkicks
Definition: Processes.h:525
SNKicks(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Processes.h:511
static size_t ID
Definition: BinaryProperty.h:148
double get_Z() const
Definition: star.h:886
double getp(const size_t &id) const
Definition: star.h:924
Definition: Processes.h:580
Tides * Instance(IO *_io) override
Definition: Processes.h:598
static Tides _tides
Definition: Processes.h:596
Tides(IO *_io=nullptr, bool reg=true)
Definition: Processes.h:583
int evolve(Binstar *binstar) override
Definition: Processes.cpp:245
static size_t ID
Definition: Processes.h:595
std::string name() override
Definition: Processes.h:602
void debug(std::string errstate, const char *file_input=nullptr, int line_input=-1) const
Definition: sevnlog.cpp:194
void critical(std::string errstate, const char *file_input=nullptr, int line_input=-1) const
Definition: sevnlog.cpp:85
Definition: errhand.h:104
const GWMAP gwmap
Definition: lookup_and_phases.cpp:172
const GW_NAME gwmap_name
GW.
Definition: static_main.h:409
const TIDESMAP_NAME tidesmap_name
Tides.
Definition: static_main.h:397
const SNKMAP snkmap
Definition: lookup_and_phases.cpp:188
const RLMAP rlmap
Definition: lookup_and_phases.h:243
const MIX_NAME mixmap_name
Definition: static_main.h:434
const CE_NAME cemap_name
Definition: static_main.h:452
const TIDESMAP tidesmap
Definition: lookup_and_phases.cpp:157
const SNK_NAME snkmap_name
Definition: static_main.h:443
const CEMAP cemap
Definition: lookup_and_phases.cpp:197
const RL_NAME rlmap_name
Definition: static_main.h:419
const MIXMAP mixmap
Definition: lookup_and_phases.cpp:181
const std::string n2s(T val, const char *file_input, const int line_input, const unsigned int precision=6)
Definition: utilities.h:144