168 virtual inline std::string
name() {
return "Pure Virtual Base EvolveFunctor";}
181 template <
typename System>
183 static long dt_threshold = long(system.get_svpar_num(
"check_stalling_time"));
184 if (system.get_svpar_bool(
"check_stalling")){
186 static std::chrono::steady_clock::time_point clock_begin;
187 static size_t _id{0};
188 static std::string _name;
191 if (system.get_name()!=_name or system.get_ID()!=_id){
192 clock_begin = std::chrono::steady_clock::now();
193 _id = system.get_ID();
194 _name = system.get_name();
199 svlog.
critical(
"System with name " + system.get_name() +
201 " evolved for more than " +
utilities::n2s(dt_threshold,__FILE__,__LINE__) +
202 "s this is not expected."
203 "The evolution is skipped and the system flagged ad failed.",
220 template <
class System>
223 if (evolution_result==EXIT_SUCCESS)
237 template <
class System>
239 std::string errmedd=
"Evolution of system "+system.get_name() +
"(ID "+ std::to_string(system.get_ID())+
240 ") broken by an error: "+e.
what();
241 std::cerr<<errmedd<<std::endl;
250 static inline long elapsed_time(std::chrono::steady_clock::time_point start_clock){
251 return std::chrono::duration_cast<std::chrono::seconds>(std::chrono::steady_clock::now()-start_clock).count();
274 inline std::string
name()
override {
return "EvolveDefault";}
277 template <
typename System>
280 bool evolution_result = EXIT_SUCCESS;
284 return evolution_result;
310 inline std::string
name()
override {
return "EvolveDefault";}
313 template <
typename System>
316 bool evolution_result = EXIT_SUCCESS;
325 if (system.breaktrigger())
328 if ( (system.isoutputtime() or system.printall()) and
_record_state) {
329 system.recordstate_w_timeupdate();
336 evolution_result=EXIT_FAILURE;
341 system.recordstate();
349 return evolution_result;
370 bool evolution_result = EXIT_SUCCESS;
394 evolution_result = EXIT_FAILURE;
401 return evolution_result;
406 bool evolution_result = EXIT_SUCCESS;
430 evolution_result = EXIT_FAILURE;
437 return evolution_result;
439 inline std::string
name()
override {
return "EvolveStopCondition";}
469 bool evolution_result = EXIT_SUCCESS;
470 unsigned int Record_counter=0;
488 else if(Record_counter>0){
506 evolution_result = EXIT_FAILURE;
513 return evolution_result;
518 bool evolution_result = EXIT_SUCCESS;
519 unsigned int Record_counter=0;
537 else if(Record_counter>0){
554 evolution_result = EXIT_FAILURE;
561 return evolution_result;
563 inline std::string
name()
override {
return "EvolveRecordCondition";}
593 _svlog.
critical(
"Evolve for star is not implemented for functor EvolveBinaryCompact",__FILE__,__LINE__,
598 inline std::string
name()
override {
return "EvolveBinaryCompact";}
625 bool special_break_condition =
false;
626 bool evolution_result = EXIT_SUCCESS;
647 else if (special_break_condition or binary.
breaktrigger())
654 evolution_result = EXIT_FAILURE;
661 return evolution_result;
664 _svlog.
critical(
"Evolve for star is not implemented for functor EvolveBinaryCompact",__FILE__,__LINE__,
669 inline std::string
name()
override {
return "EvolveBinaryCompact";}
690 _svlog.
critical(
"Evolve for star is not implemented for functor EvolveBinaryCompact",__FILE__,__LINE__,
695 inline std::string
name()
override {
return "EvolveBBH";}
724 bool BLC_flag =
false, BLC_case1=
false, BLC_case2=
false;
727 unsigned int BLC_counter=0;
728 bool evolution_result = EXIT_SUCCESS;
742 BLC_flag = (BLC_case1 or BLC_case2) and !binary.
broken;
754 else if(BLC_counter>0){
773 evolution_result=EXIT_FAILURE;
779 return evolution_result;
782 _svlog.
critical(
"Evolve for star is not implemented for functor EvolveBinaryCompact",__FILE__,__LINE__,
786 inline std::string
name()
override {
return "EvolveBLC";}
810 _svlog.
critical(
"Evolve for star is not implemented for functor EvolveBinaryCompact",__FILE__,__LINE__,
815 inline std::string
name()
override {
return "EvolveBCX1";}
823 return BH_cond and MS_cond and Semimajor_cond;
844 _svlog.
critical(
"Evolve for star is not implemented for functor EvolveBinaryCompact",__FILE__,__LINE__,
849 inline std::string
name()
override {
return "EvolveBHMSTarantula";}
854 constexpr double yr_to_day = 265.24;
861 return BH_cond and MS_cond and P_cond and e_cond;
885 _svlog.
critical(
"Evolve for star is not implemented for functor EvolveBinaryCompact",__FILE__,__LINE__,
890 inline std::string
name()
override {
return "EvolveBHMSTarantula";}
896 bool binary_cond = !binstar.
broken;
898 return (cond_1 or cond_2) and binary_cond;
924 _svlog.
critical(
"Evolve for star is not implemented for functor EvolveBinaryCompact",__FILE__,__LINE__,
929 inline std::string
name()
override {
return "EvolveW1";}
936 return BHNS_cond and Period_cond;
961 inline std::string
name()
override {
return "EvolveRRL";}
1002 ") broken by an error: "+e.
what(),__FILE__,__LINE__,
false);
1005 return EXIT_FAILURE;
1018 return EXIT_SUCCESS;
1051 ") broken by an error: "+e.
what(),__FILE__,__LINE__,
false);
1053 return EXIT_FAILURE;
1066 return EXIT_SUCCESS;
1079 template <
typename System>
1083 if (Nevolve==-1) Nevolve=systems.size();
1084 unsigned Nfailed =0;
1087#pragma omp parallel num_threads(sevnio.nthreads)
1092#pragma omp for schedule(static) reduction(+: Nfailed)
1094 for (
size_t i = 0; i < (size_t)Nevolve; i++) {
1110 if((*evolve_function)(systems[i])==EXIT_FAILURE)
1135 template<
typename T>
1136 inline int chunk_dispatcher(
unsigned int Nchunk,
IO& sevnio, std::vector<T>& systems,
bool record_state=
true,
bool progress=
true){
1140 if (!systems.empty())
1147 Nchunk = std::min(Nchunk,Ntot);
1149 systems.reserve(Nchunk);
1154 std::cout<<
"Evolving systems:"<<std::endl;
1156 unsigned int Ndone=0;
1157 size_t current_idx=0;
1164 Ntodo = std::min(Ntot-Ndone, Nchunk);
1167 for (
size_t i = 0; i < Ntodo; i++){
1168 systems.emplace_back(&sevnio, sevnio.
STARS_MATRIX[current_idx], current_idx);
1176 Nfailed+=
evolve_list(systems,sevnio,Ntodo,record_state);
1193 std::cout<<
"\r"<<Ndone<<
"/"<<Ntot<<
" (Nfailed:"<<Nfailed<<
")";
1194 std::cout<<std::flush;
1202 std::cout<<std::endl;
1204 return EXIT_SUCCESS;
1218 template<
typename T>
1223 if (!systems.empty())
1232 Nchunk = std::min(Nchunk,Ntot);
1234 systems.reserve(Nchunk);
1238 std::cout<<
"Evolving systems:"<<std::endl;
1240 unsigned int Ndone=0;
1241 size_t current_idx=0;
1248 Ntodo = std::min(Ntot-Ndone, Nchunk);
1251 for (
size_t i = 0; i < (size_t)Ntodo; i++){
1254 systems.emplace_back(&sevnio, sevnio.
STARS_MATRIX[current_idx], current_idx);
1258 sevnlog.
error(
"Failed initilisation for System with ID="+
utilities::n2s(current_idx,__FILE__,__LINE__)+
1259 " with message:\n"+e.
what(),__FILE__,__LINE__,sevnio.
svpar.
get_bool(
"initerror_stop"));
1271 Nfailed+=
evolve_list(evolve_function,systems,sevnio,systems.size());
1286 std::cout<<
"\r"<<Ndone<<
"/"<<Ntot<<
" (Nfailed:"<<Nfailed<<
")";
1287 std::cout<<std::flush;
1295 std::cout<<std::endl;
1297 return EXIT_SUCCESS;
#define _UNUSED
Definition: BinaryProperty.h:20
bool broken
MEMBERS///.
Definition: binstar.h:30
std::string get_name() const
Definition: binstar.h:144
size_t get_ID() const
Definition: binstar.h:145
bool breaktrigger() const
Definition: binstar.h:444
virtual void evolve()
Definition: binstar.h:222
bool isoutputtime()
Outputs.
Definition: binstar.cpp:1030
void print()
Definition: binstar.h:557
bool printall()
Definition: binstar.h:549
void recordstate_w_timeupdate()
Definition: binstar.h:378
double getp(const size_t &id) const
METHODS///.
Definition: binstar.h:142
void recordstate()
Definition: binstar.h:390
Star * getstar(const size_t &id)
Definition: binstar.h:146
static size_t ID
Definition: BinaryProperty.h:110
std::vector< std::vector< std::string > > STARS_MATRIX
Definition: IO.h:160
SEVNpar svpar
Definition: IO.h:198
void print_failed_initilisation_summary(const size_t &_ID)
Definition: IO.cpp:414
static size_t ID
Definition: property.h:785
static size_t ID
Definition: BinaryProperty.h:315
static size_t ID
Definition: property.h:890
bool get_bool(std::string name)
Definition: params.h:158
static size_t ID
Definition: BinaryProperty.h:148
bool amiBH() const
Definition: star.h:728
std::string & get_name()
Definition: star.h:990
bool isoutputtime()
Definition: star.h:450
size_t get_ID() const
Definition: star.h:989
bool amiCompact() const
Definition: star.h:744
void recordstate()
Definition: star.h:526
bool amiRRL(double Lmin=1.3, double Lmax=1.9, bool just_He_core=false) const
Definition: star.h:815
bool printall()
Definition: star.h:459
void recordstate_w_timeupdate()
Definition: star.h:550
utilities::evolution evolve()
Definition: star.cpp:1075
void print()
Definition: star.h:576
bool breaktrigger() const
Definition: star.h:847
double getp(const size_t &id) const
Definition: star.h:924
EvolveBBH(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:687
int operator()(_UNUSED Star &star) override
Definition: evolve.h:689
bool stop_condition(Binstar &binstar) override
Definition: evolve.h:698
std::string name() override
Definition: evolve.h:695
EvolveBCX1(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:807
std::string name() override
Definition: evolve.h:815
int operator()(_UNUSED Star &star) override
Definition: evolve.h:809
bool stop_condition(Binstar &binstar) override
Definition: evolve.h:818
std::string name() override
Definition: evolve.h:890
int operator()(_UNUSED Star &star) override
Definition: evolve.h:884
bool record_condition(Binstar &binstar) override
Definition: evolve.h:893
EvolveBHMS(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:882
EvolveBHMSTarantula(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:841
bool stop_condition(Binstar &binstar) override
Definition: evolve.h:852
int operator()(_UNUSED Star &star) override
Definition: evolve.h:843
std::string name() override
Definition: evolve.h:849
std::string name() override
Definition: evolve.h:786
EvolveBLC(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:720
int operator()(Binstar &binary) override
Definition: evolve.h:722
std::string name() override
Definition: evolve.h:598
bool stop_condition(Binstar &binstar) override
Definition: evolve.h:601
int operator()(_UNUSED Star &star) override
Definition: evolve.h:592
EvolveBinaryCompact(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:590
std::string name() override
Definition: evolve.h:669
EvolveBinaryCompactOld(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:621
int operator()(Binstar &binary) override
Definition: evolve.h:623
int evolve_debug(System &system)
Definition: evolve.h:278
int operator()(Binstar &binary) override
Definition: evolve.h:268
EvolveDebug(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:266
std::string name() override
Definition: evolve.h:274
std::string name() override
Definition: evolve.h:310
int evolve_default(System &system)
Definition: evolve.h:314
EvolveDefault(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:302
int operator()(Binstar &binary) override
Definition: evolve.h:304
virtual ~EvolveFunctor()=default
virtual int operator()(_UNUSED Binstar &binary)
Definition: evolve.h:166
virtual std::string name()
Definition: evolve.h:168
const bool _record_state
Definition: evolve.h:216
SevnLogging & _svlog
Definition: evolve.h:215
EvolveFunctor(SevnLogging &svlog, bool record_state=true, bool include_failed=false, Options *options=nullptr)
Definition: evolve.h:163
static void catched_error_message(System &system, const sevnstd::sevnerr &e)
Definition: evolve.h:238
const Options * _options
Definition: evolve.h:218
static long elapsed_time(std::chrono::steady_clock::time_point start_clock)
Definition: evolve.h:250
static bool check_stalling(System &system)
Definition: evolve.h:182
void final_print(System &system, bool evolution_result)
Definition: evolve.h:221
const bool _include_failed
Definition: evolve.h:217
EvolveRRL(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:959
bool record_condition(Binstar &binstar) override
Definition: evolve.h:964
std::string name() override
Definition: evolve.h:961
bool record_condition(Star &star) override
Definition: evolve.h:967
virtual bool record_condition(_UNUSED Star &star)
Definition: evolve.h:571
EvolveRecordCondition(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:464
virtual bool record_condition(_UNUSED Binstar &binstar)
Definition: evolve.h:567
virtual int operator()(Binstar &binary) override
Definition: evolve.h:466
std::string name() override
Definition: evolve.h:563
virtual bool stop_condition(_UNUSED Star &star)
Definition: evolve.h:445
virtual bool stop_condition(_UNUSED Binstar &binstar)
Definition: evolve.h:441
std::string name() override
Definition: evolve.h:439
virtual int operator()(Binstar &binary) override
Definition: evolve.h:367
EvolveStopCondition(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:365
static constexpr double Pmin
Definition: evolve.h:940
EvolveW1(SevnLogging &svlog, bool record_state=true, bool include_failed=false)
Definition: evolve.h:921
std::string name() override
Definition: evolve.h:929
static constexpr double Pmax
Definition: evolve.h:941
bool record_condition(Binstar &binstar) override
Definition: evolve.h:932
int operator()(_UNUSED Star &star) override
Definition: evolve.h:923
static constexpr double hours_to_yr
Definition: evolve.h:939
void error(std::string errstate, const char *file_input=nullptr, int line_input=-1, bool stop=true) const
Definition: sevnlog.cpp:105
void critical(std::string errstate, const char *file_input=nullptr, int line_input=-1) const
Definition: sevnlog.cpp:85
Definition: errhand.h:156
const char * what() const
Definition: errhand.h:36
int evolve_single(Binstar &binary, SevnLogging &svlog, bool record_state=true)
Definition: evolve.h:981
int chunk_dispatcher(unsigned int Nchunk, IO &sevnio, std::vector< T > &systems, bool record_state=true, bool progress=true)
Definition: evolve.h:1136
int evolve_list(EvolveFunctor *evolve_function, std::vector< System > &systems, _UNUSED IO &sevnio, int Nevolve=-1)
Definition: evolve.h:1080
const std::string n2s(T val, const char *file_input, const int line_input, const unsigned int precision=6)
Definition: utilities.h:144
std::mt19937_64 mtrand
Definition: utilities.cpp:9
std::vector< std::string > str_parameters
Definition: evolve.h:148
std::vector< double > num_parameters
Definition: evolve.h:147