27#define FOR4 for(size_t _i = 0; _i < 4; _i++)
93 std::vector<std::vector<std::vector<double>*>>
tables;
153 else if (phase==
"tms" or phase==
"tams")
155 else if (phase==
"hsb" or phase==
"shb")
157 else if (phase==
"cheb")
159 else if (phase==
"tcheb")
161 else if (phase==
"hesb" or phase==
"sheb")
163 else if (phase==
"end")
173 prop->set_remnant(
this);
181 prop->set_remnant_in_bse(
this,b);
251 return tables[tab_id][interpolating_track]->back();
275 Star(
IO *_io, std::vector<std::string> ¶ms,
size_t &_ID,
bool pureHE=
false,
unsigned long _rseed=0) :
io{_io},
init_params{params},
ID{_ID},
rseed{_rseed}{
373 inline double Mcore(
bool old=
false){
375 const auto& getP = [
this,&old](
int _ID){
379 return this->
getp(_ID);
392 inline double Rcore(
bool old=
false){
394 const auto& getP = [
this,&old](
int _ID){
398 return this->
getp(_ID);
413 const auto& getP = [
this,&old](
int _ID){
417 return this->
getp(_ID);
432 const auto& getP = [
this,&old](
int _ID){
436 return this->
getp(_ID);
463 template <
class T>
void castp(
const size_t &
id, T classtype){
properties[id] = classtype;}
477 inline std::vector<std::string>
get_initparams(
bool effective_values=
true)
const{
479 if (!effective_values)
482 std::vector<std::string> init_params_tmp=
init_params;
484 for (
unsigned int i=0; i<init_params_tmp.size(); i++){
514 return init_params_tmp;
603 if (include_in_output){
815 inline bool amiRRL(
double Lmin=1.3,
double Lmax=1.9,
bool just_He_core=
false)
const {
824 bool Hecore_condition;
825 if (just_He_core) Hecore_condition =
getp(
MHE::ID)>0;
828 return temp_range and lum_range and Hecore_condition;
856 svlog_tmp.
critical(
"Star breaktrigger check failed",__FILE__,__LINE__);
977 if (
tables[table_id][interpolating_track]==
nullptr){
980 return &
tables[table_id][interpolating_track]->at(
pos);
1017 prop->set_empty(
this);
1028 prop->set_empty_in_bse(
this,b);
1080 svlog.
critical(
"Trying to set the flag ami_following_QHE when the star is more evolved than the MS phase",
1101 else if (std::isnan(
MCO_max) and !std::isnan(merged_star->
MCO_max)){
1117 else if (std::isnan(
MHE_min) and !std::isnan(merged_star->
MHE_min)){
1153 double max_dt_tables = 1E30;
1154 double max_dt_phase = 1E30;
1155 double max_dt_dout=1E30;
1160 if(max_tend==0)
return 1E-15;
1200 return std::min(max_tend,std::min(max_dt_tables,std::min(max_dt_phase,max_dt_dout)));
1211 svlog.
debug(
"Bringing star to the initial Localtime",__FILE__,__LINE__);
1245 proposed_dt = std::max(proposed_dt,
get_svpar_num(
"ts_min_dt"));
1247 proposed_dt = std::min(proposed_dt,
get_svpar_num(
"ts_max_dt"));
1286 +
". \n"+
" Next proposed Timestep is "+std::to_string(
properties[
Timestep::ID]->get()),__FILE__,__LINE__);
1339 return EXIT_FAILURE;
1342 return EXIT_SUCCESS;
1353 properties[Property_id]->update_from_binary(
this, DV,b);
1364 for (
auto &prop :
properties) prop->restore();
1420 double perc =
plife();
1423 for(
int i = 0; i < 4; i++) {
1431 double smallest_difference=std::numeric_limits<double>::epsilon()*std::fabs(
tphase_neigh[i][currentphase + 1]);
1438 " the difference in timestep is smaller than the machine precision, therefore this track"
1443 " the difference in timestep is smaller than the machine precision, therefore this track"
1444 " will use values of the next phase. We used instead the smallest timestep possible",__FILE__,__LINE__);
1483 for(
size_t i = 0; i < 4; i++) {
1496 " is equal to the last point in the time tables. This is likely due to time differences smaller than the machine precision.",__FILE__,__LINE__,
sevnstd::sanity_error());
1506 while (
ttimes[i] >= time_right) {
1572 utilities::wait(
"SN1a triggered by accretion Mchandra limit", __FILE__, __LINE__);
1575 }
else if (
remnant == Remnants::ONeWD) {
1606 void init(std::vector<std::string> ¶ms,
bool isareset){
1610 int par_expected_size = 7;
1613 par_expected_size+=1;
1615 if ((
int)params.size()!=par_expected_size){
1616 std::string par_exp=
utilities::n2s(par_expected_size, __FILE__, __LINE__);
1617 std::string inparam_size=
utilities::n2s(params.size(), __FILE__, __LINE__);
1619 svlog.
critical(
"Number of Star params needs to be " +par_exp+
", it is instead " + inparam_size +
" (ID_bin: " + this_ID +
")" , __FILE__, __LINE__);
1642 for (
auto &i :
tables) i.resize(4);
1705 if (!ignore_global){
1710 svlog.
critical(
"Using placeholder option for tf but the parameter tini is"
1717 if(utilities::string_is_number<double>(p)){
1718 _tini = utilities::s2n<double>(p, __FILE__, __LINE__);
1722 std::transform(p.begin(),p.end(),p.begin(),[](
unsigned char c){ return std::tolower(c);});
1727 svlog.
critical(
"Using tini=zams when initialising a pureHE star. Maybe you are using a global tini overwriting list values?",__FILE__,__LINE__,
sevnstd::sevnio_error(
""));
1731 else if (p==
"tms" or p==
"tams"){
1733 svlog.
critical(
"Using tini=tams when initialising a pureHE star. Maybe you are using a global tini overwriting list values?",__FILE__,__LINE__,
sevnstd::sevnio_error(
""));
1736 else if (p==
"hsb" or p==
"shb"){
1738 svlog.
critical(
"Using tini=shb when initialising a pureHE star. Maybe you are using a global tini overwriting list values?",__FILE__,__LINE__,
sevnstd::sevnio_error(
""));
1741 else if (p==
"cheb"){
1746 else if (p==
"tcheb"){
1749 else if (p==
"hesb" or p==
"sheb"){
1756 else if ( p.find(
'%') == 0) {
1757 std::string token = p.substr(1);
1759 std::stringstream ss(token);
1765 if (ss.peek() ==
':') ss.ignore();
1771 " percent of its life as a remnant. This does not make any sense. Please provide meaningful values",
1772 __FILE__, __LINE__);
1775 tstart = (perc/100) *
tphase[phase];
1777 double time_begin =
tphase[phase];
1778 double time_end =
tphase[phase + 1];
1779 tstart = (perc/100) * (time_end - time_begin) + time_begin;
1814 svlog.
critical(
"Using placeholder option for tf but the parameter tf is"
1818 if(utilities::string_is_number<double>(p)){
1819 return utilities::s2n<double>(p, __FILE__, __LINE__);
1834 return EXIT_FAILURE;
1847 if ( (
pos=p.find(
"BH"))!=std::string::npos ){
1849 std::string token = p.substr(0,
pos);
1851 mass = utilities::s2n<double>(token, __FILE__, __LINE__);
1853 else if ( (
pos=p.find(
"NS"))!=std::string::npos ){
1854 std::string token = p.substr(0,
pos);
1856 mass = utilities::s2n<double>(token, __FILE__, __LINE__);
1858 else if ( (
pos=p.find(
"NSEC"))!=std::string::npos ){
1859 std::string token = p.substr(0,
pos);
1861 mass = utilities::s2n<double>(token, __FILE__, __LINE__);
1863 else if ( (
pos=p.find(
"HEWD"))!=std::string::npos ){
1864 std::string token = p.substr(0,
pos);
1866 mass = utilities::s2n<double>(token, __FILE__, __LINE__);
1868 else if ( (
pos=p.find(
"COWD"))!=std::string::npos ){
1869 std::string token = p.substr(0,
pos);
1871 mass = utilities::s2n<double>(token, __FILE__, __LINE__);
1873 else if ( (
pos=p.find(
"ONEWD"))!=std::string::npos ){
1874 std::string token = p.substr(0,
pos);
1876 mass = utilities::s2n<double>(token, __FILE__, __LINE__);
1878 else if( (
pos=p.find(
"HE"))!=std::string::npos ){
1879 std::string token = p.substr(0,
pos);
1881 mass = utilities::s2n<double>(token, __FILE__, __LINE__);
1883 else if(utilities::string_is_number<double>(p)){
1884 mass = utilities::s2n<double>(p, __FILE__, __LINE__);
1887 return EXIT_FAILURE;
1906 if (!ignore_global){
1911 svlog.
critical(
"Using placeholder option for Z but the parameter Z is"
1917 return utilities::s2n<double>(p, __FILE__, __LINE__);
1926 if(utilities::string_is_number<unsigned long>(p)){
1928 unsigned long _rseed = utilities::s2n<unsigned long>(p, __FILE__, __LINE__);
1946 svlog.
critical(
"Using placeholder option for sntype but the parameter snmode is"
1960 svlog.
critical(
"Using placeholder option for sntype but the parameter spin is"
1965 return utilities::s2n<double>(p, __FILE__, __LINE__);
2101 double find_mass_linear(
double mlow,
double mhigh,
const double MAX_MASS,
const double MIN_MASS,
const double plife,
const size_t Phase,
const bool pureHE,
double & best_rel_err,
utilities::jump_convergence& convergence,
const size_t property_id=
Mass::ID,
const double z_look=
utilities::NULL_DOUBLE);
2118 double find_mass_bisection(
double mlow,
double mhigh,
const double MAX_MASS,
const double MIN_MASS,
const double plife,
const size_t Phase,
const bool pureHE,
double & best_rel_err,
utilities::jump_convergence& convergence,
const size_t property_id=
Mass::ID,
const double z_look=
utilities::NULL_DOUBLE);
2162 p->correct_interpolation_errors_real(
this);
2184 std::string w =
utilities::log_print(
"HENAKED",
this,
getp_0(
Mass::ID),
getp_0(
MHE::ID),
getp_0(
MCO::ID),
getp_0(
Radius::ID),
getp(
Radius::ID),
getp(
Phase::ID),
get_zams0(),
get_zams(), outcome);
2201 inline void set_mzams(
const double a,
const char* file,
const int line) {
2206 if(std::isnan(a) or std::isinf(a))
2209 svlog.
critical(
"Error on star initialisation (" +
get_id_name() +
"): MZAMS cannot be zero and not initiliased as an Empty remnant, current value " +
2221 inline void set_Z(
const double a,
const char* file,
const int line) {
2227 if(std::isnan(a) || std::isinf(a))
2231 else if (a > MAX_Z || a < MIN_Z)
2241 inline void set_tf(
const double a,
const char* file,
const int line) {
2243 if(std::isnan(a) || std::isinf(a))
2251 inline void set_dtout(
const double a,
const char* file,
const int line) {
2254 if(std::isnan(a) || std::isinf(a))
2262 inline void set_rseed(
const unsigned long a,
const char* file,
const int line){
2264 if(std::isnan(a) || std::isinf(a))
2277 void init_1(std::vector<std::string> ¶ms){
2293 void init_2(std::vector<std::string> ¶ms){
2326 auto *Z_id =
new size_t [2];
2340 Z_id[1] = Z_id[0] + 1;
2347 size_t *zams_id =
new size_t [4];
2349 for(
size_t i = 0, k = 0; i < 2; i++, k+=2){
2350 size_t dim = _allzams[Z_id[i]].size();
2352 zams_id[k+1] = zams_id[k] + 1;
2357 Mtrack[0] = _allzams[Z_id[0]][zams_id[0]];
2358 Mtrack[1] = _allzams[Z_id[0]][zams_id[1]];
2359 Mtrack[2] = _allzams[Z_id[1]][zams_id[2]];
2360 Mtrack[3] = _allzams[Z_id[1]][zams_id[3]];
2365 for(
size_t i = 0; i < 2; i++) {
2366 size_t zid = Z_id[i];
2368 for(
size_t k = 0; k < 2; k++) {
2369 size_t mid = zams_id[k + 2*i];
2371 for (
int j = 0; j <
_Ntables; j++) {
2372 if (_tables[j][zid].empty()){
2373 tables[j][k + 2*i] =
nullptr;
2375 tables[j][k + 2*i] = &_tables[j][zid][mid];
2405 for(
size_t i = 0; i < 2; i++) {
2406 size_t zid = Z_id[i];
2408 for (
size_t k = 0; k < 2; k++) {
2409 size_t mid = zams_id[k + 2 * i];
2419 svlog.
critical(
"Too many phases specified in the look-up tables. Please check your tables", __FILE__, __LINE__);
2426 for (
size_t t = 0; t < _tables[
_Phase][zid][mid].size(); t+=2) {
2427 double value_t = _tables[
_Phase][zid][mid][t];
2428 int value_p = (int) _tables[
_Phase][zid][mid][t+1];
2433 svlog.
critical(
"Phase time has already been set. Do you have duplicated in the look-up tables?", __FILE__, __LINE__);
2440 size_t last_point = _tables[
_Time][zid][mid].size();
2446 for (
size_t j = 0; j <
io->
tables[
_MCO][zid][mid].size(); j++) {
2464 for(
int i = 0; i < 4; i++) {
2465 for (
int j = 0; j < starparameter::Nphases; j++) {
2493 for (
auto &prop :
properties) prop->set_w(
this);
2499 for (
int j = 0; j <
Nphases; j++){
2503 tphase[j] = metalw[0] * tphase_zlow + metalw[1] * tphase_zhigh;
2527 t_he_start = metalw[0] * t_he_zlow + metalw[1] * t_he_zhigh;
2531 t_co_start = metalw[0] * t_co_zlow + metalw[1] * t_co_zhigh;
2536 svlog.
pdebug(
" Set pointer for property/TabID: ",prop->name(),
"/",prop->TabID(),__FILE__,__LINE__);
2537 prop->set_refpointers(
this);
2542 svlog.
pdebug(
" done pointers ",__FILE__,__LINE__);
#define _UNUSED
Definition: BinaryProperty.h:20
static size_t ID
Definition: property.h:1656
Binding energy of the envelope.
Definition: property.h:2232
static size_t ID
Definition: property.h:2338
void print_evolved_summary(const std::string &_name, const unsigned long &_rseed, const size_t &_ID)
Definition: IO.cpp:406
void print_formatted_output(std::vector< std::vector< double > > &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint=false)
Definition: IO.h:207
void print_log(std::string filename="logfile.dat")
Definition: IO.cpp:653
void print_failed_summary(const std::string &_name, const unsigned long &_rseed, const size_t &_ID)
Definition: IO.cpp:410
SEVNpar svpar
Definition: IO.h:198
std::vector< std::vector< double > > load_auxiliary_table(std::string name) const
Definition: IO.h:330
void log_put(std::string &loginfo)
Definition: IO.cpp:668
bool rseed_provided()
Parameters call.
Definition: IO.h:195
std::vector< std::vector< std::vector< std::vector< double > > > > tables_HE
Definition: IO.h:157
std::vector< std::vector< double > > allzams
Definition: IO.h:159
std::vector< size_t > printIDs_star
Definition: IO.h:171
std::vector< std::vector< double > > allzams_HE
Definition: IO.h:159
std::vector< std::vector< std::vector< std::vector< double > > > > tables
Definition: IO.h:157
std::vector< double > Z_HE
Definition: IO.h:158
std::vector< double > Z
Definition: IO.h:158
std::vector< std::string > printcolumns_star
Definition: IO.h:165
static size_t ID
Definition: property.h:1008
static size_t ID
Definition: property.h:391
static size_t ID
Definition: property.h:930
static size_t ID
Definition: property.h:856
static size_t ID
Definition: property.h:826
Definition: property.h:776
static size_t ID
Definition: property.h:785
static size_t ID
Definition: property.h:599
static size_t ID
Definition: property.h:1912
Definition: property.h:881
static size_t ID
Definition: property.h:890
static vector< Property * > all
Definition: property.h:313
static size_t ID
Definition: property.h:1167
static size_t ID
Definition: property.h:1127
static size_t ID
Definition: property.h:713
static size_t ID
Definition: property.h:1512
double get_num(std::string name)
Definition: params.h:124
bool get_bool(std::string name)
Definition: params.h:158
std::string get_str(std::string name)
Definition: params.h:142
static size_t ID
Definition: property.h:1930
double get_dtout_original() const
Definition: star.h:906
void sync_with(Star *s)
Definition: star.h:1396
bool iskicked
Definition: star.h:64
bool ami_on_pureHE_track
Definition: star.h:75
double & hestart()
Definition: star.h:998
double get_max_zams() const
Definition: star.h:872
unsigned long rseed
Definition: star.h:98
bool amiBH() const
Definition: star.h:728
std::unique_ptr< utilities::ListGenerator > dtout_generator
Definition: star.h:49
double getp_raw(const size_t &id) const
Definition: star.h:954
void default_initialiser(bool isareset=false, bool pureHE=false)
Definition: star.cpp:968
std::string getps_fk0(const size_t &id) const
Definition: star.h:946
void evolution_guard(const char *file_input=nullptr, int line_input=-1)
Definition: star.h:1128
double inspect_param_dt(std::string p)
Definition: star.cpp:1486
std::string inspect_param_sntype(std::string p)
Definition: star.h:1940
double rzams
Definition: star.h:132
Staremnant * staremnant
Definition: star.h:47
void correct_evolution_error()
Definition: star.h:2159
std::string & get_name()
Definition: star.h:990
void set_staremnant(Staremnant *remnant)
Definition: star.cpp:1457
bool ami_following_QHE
Definition: star.h:76
bool isoutputtime()
Definition: star.h:450
void set_COnaked()
Definition: star.h:1047
size_t get_ID() const
Definition: star.h:989
double rzams0
Definition: star.h:131
void tracktimes()
Definition: star.h:1418
double inspect_param_tf(std::string p)
Definition: star.h:1807
bool table_loaded(size_t propID) const
Definition: star.h:960
void set_QHE()
Definition: star.h:1078
void remnant()
Definition: star.h:170
Material whatamidonating() const
Definition: star.cpp:1262
double Mtrack[4]
Definition: star.h:139
void set_sntype(const std::string &a, _UNUSED const char *file, _UNUSED const int line)
Definition: star.h:2237
double inspect_param_Z(std::string p, bool ignore_global=false)
Definition: star.h:1902
double get_dtout()
Definition: star.h:1136
Lookup::Remnants initialise_as_remnant
FLAGS.
Definition: star.h:61
void set_rseed(const unsigned long a, const char *file, const int line)
Definition: star.h:2262
double inspect_param_spin(std::string p)
Definition: star.h:1953
double Mcore(bool old=false)
Definition: star.h:373
std::string get_phase_str() const
Definition: star.h:987
std::string log_mess_COnaked()
Definition: star.h:2175
bool amiCompact() const
Definition: star.h:744
double Z0
Definition: star.h:127
std::string getps_fk(const size_t &id) const
Definition: star.h:944
Star(const Star *s, size_t _ID, double mzams=utilities::NULL_DOUBLE, double Z=utilities::NULL_DOUBLE, std::string tini=utilities::NULL_STR, bool pureHE=false, unsigned long _rseed=0)
Definition: star.h:323
double get_last_Timestep() const
Definition: star.h:936
double get_current_tphase() const
Definition: star.h:985
Staremnant * get_staremnant() const
Definition: star.h:910
void print_to_log(std::string &message)
Definition: star.h:589
void initialise_auxiliary_star(const Star *s, double mzams, double Z, std::string tini, bool pureHE)
Definition: star.h:209
void update_from_binary(int Property_id, double DV, Binstar *b=nullptr)
Definition: star.h:1351
void init(std::vector< std::string > ¶ms, bool isareset)
Definition: star.h:1606
const supernova * get_supernova() const
Definition: star.h:908
void change_params(double mzams=utilities::NULL_DOUBLE, double Z=utilities::NULL_DOUBLE, double tini=utilities::NULL_DOUBLE)
Definition: star.h:2025
int _main_get_bse_phase(bool old=false) const
Definition: star.cpp:1328
Star(const Star *s, size_t _ID, double mzams=utilities::NULL_DOUBLE, double Z=utilities::NULL_DOUBLE, double tini=utilities::NULL_DOUBLE, bool pureHE=false, unsigned long _rseed=0)
Definition: star.h:350
void set_MHE_min_aftermerge(Star *merged_star)
Definition: star.h:1112
double vkick[4]
Definition: star.h:249
void restore()
Definition: star.h:1361
void explode_as_SNI()
Definition: star.cpp:1228
std::string get_svpar_str(std::string name) const
Definition: star.h:915
bool tobe_SNIA
Definition: star.h:65
double plife() const
Definition: star.h:1413
int get_bse_phase() const
Definition: star.cpp:1449
void recordstate()
Definition: star.h:526
size_t jtrack_counter
Definition: star.h:133
std::string sntype
Definition: star.h:82
bool amiNS_0() const
Definition: star.h:719
bool amiRRL(double Lmin=1.3, double Lmax=1.9, bool just_He_core=false) const
Definition: star.h:815
double age_phase(std::string phase)
Definition: star.h:149
double get_tf() const
Definition: star.h:904
double get_tini() const
Definition: star.h:905
void set_MCO_max()
Definition: star.h:135
bool amIdegenerate() const
Definition: star.h:760
bool amiremnant() const
Definition: star.h:671
double get_Vlast(const size_t &id) const
Definition: star.h:928
double * get_ztrack()
Definition: star.h:994
void change_params(double mzams=utilities::NULL_DOUBLE, double Z=utilities::NULL_DOUBLE, std::string tini=utilities::NULL_STR)
Definition: star.h:2013
void set_tf(const double a, const char *file, const int line)
Definition: star.h:2241
void turn_into_remnant()
Definition: star.cpp:1211
void crem_transition_to_BH()
Definition: star.cpp:1256
double getp_0_raw(const size_t &id) const
Definition: star.h:956
std::string log_mess_jumped(_UNUSED utilities::jump_convergence outcome)
Definition: star.h:2189
void evolve_to_tini_as_remnant()
Definition: star.cpp:1051
double Ztrack[2]
Definition: star.h:140
Star(Star &&other)=default
bool printevents()
Definition: star.h:461
utilities::jump_convergence find_track_after_CE_Ebinding(double Ebind, double Min_Mass, double Max_mass, bool pureHE=false)
Definition: star.cpp:317
bool break_at_remnant
Definition: star.h:68
double * get_mtrack()
Definition: star.h:993
bool amifollowingpureHetrack() const
Definition: star.h:643
bool faulty_initialisation
Definition: star.h:62
void set_empty()
Definition: star.h:1013
bool notprint()
Definition: star.h:460
double mzams
Definition: star.h:130
vector< Property * > properties
Definition: star.h:94
double get_MCO_max() const
Definition: star.h:902
void default_destructor()
Definition: star.cpp:1544
bool amiauxiliary() const
Definition: star.h:800
double get_dtmax()
Definition: star.h:1151
bool needsinit
Definition: star.h:64
void sync_with(double dt)
Definition: star.h:1403
unsigned int dtout_type
Definition: star.h:125
const double * get_tphase() const
Definition: star.h:996
void init_2(std::vector< std::string > ¶ms)
Definition: star.h:2293
bool changedphase
Definition: star.h:248
double get_zams0() const
Definition: star.h:895
bool printall()
Definition: star.h:459
double get_zams() const
Definition: star.h:885
bool get_svpar_bool(std::string name) const
Definition: star.h:916
int lose_the_envelope()
Definition: star.h:1305
void castp(const size_t &id, T classtype)
Definition: star.h:463
double tini
Definition: star.h:123
bool amiWD_0() const
Definition: star.h:698
utilities::jump_convergence match_M(double &best_rel_err, bool is_merger=false)
Definition: star.cpp:613
void initialise_auxiliary_star(const Star *s, double mzams, double Z, double tini, bool pureHE)
Definition: star.h:232
bool amiWR_0() const
Definition: star.h:659
void set_remnant()
Definition: star.h:1037
bool force_jump
Definition: star.h:74
utilities::jump_convergence match_core(double &best_rel_err, _UNUSED bool is_merger=false)
Definition: star.cpp:858
double get_max_Z() const
Definition: star.h:878
std::vector< std::vector< double > > allstates
Definition: star.h:81
double getp_fk0(const size_t &id) const
Definition: star.h:927
utilities::sn_explosion check_remnant_mass_limits()
Definition: star.h:1553
bool amiBH_0() const
Definition: star.h:736
void lookuppositions()
Definition: star.h:1467
bool amiNS() const
Definition: star.h:709
utilities::jump_convergence jump_tracks(Star *s)
Definition: star.cpp:943
double find_mass_bisection(double mlow, double mhigh, const double MAX_MASS, const double MIN_MASS, const double plife, const size_t Phase, const bool pureHE, double &best_rel_err, utilities::jump_convergence &convergence, const size_t property_id=Mass::ID, const double z_look=utilities::NULL_DOUBLE)
Definition: star.cpp:465
double * get_table_pointer_atpos(size_t table_id, int interpolating_track, int pos)
Definition: star.h:975
double get_Z() const
Definition: star.h:886
double dtout
Definition: star.h:124
void copy_property_from(const size_t &prop_id, const size_t ©_from_id)
Definition: star.h:1006
void reset_staremnant()
Definition: star.cpp:1044
std::vector< std::vector< double > > load_auxiliary_table(std::string tab_name) const
Definition: star.h:519
double t_he_start
Definition: star.h:121
Star(const Star &)=delete
void crem_transition_to_NS()
Definition: star.cpp:1250
std::vector< std::string > init_params
Definition: star.h:88
Material whatamidonating_0() const
Definition: star.cpp:1296
bool evolution_step_completed
Definition: star.h:77
size_t ID
Definition: star.h:89
bool isempty
Definition: star.h:64
double get_Z0() const
Definition: star.h:900
int get_bse_phase_0() const
Definition: star.cpp:1453
double get_rzams()
Definition: star.h:891
double Z
Definition: star.h:128
std::string getps_0(const size_t &id) const
Definition: star.h:945
IO * io
Definition: star.h:87
double find_mass_linear(double mlow, double mhigh, const double MAX_MASS, const double MIN_MASS, const double plife, const size_t Phase, const bool pureHE, double &best_rel_err, utilities::jump_convergence &convergence, const size_t property_id=Mass::ID, const double z_look=utilities::NULL_DOUBLE)
CHANGE OF TRACKS METHODS.
Definition: star.cpp:330
size_t pos[4]
Definition: star.h:245
void set_MHE_min()
Definition: star.h:137
bool is_exploding_as_SNI() const
Definition: star.cpp:1239
bool amifollowingQHE() const
Definition: star.h:792
double get_MHE_min() const
Definition: star.h:903
void evolution_step_done()
Definition: star.h:1125
bool isconaked
Definition: star.h:66
bool is_dtout_generator_callable()
Definition: star.h:50
size_t get_jcounter() const
Definition: star.h:907
SevnLogging svlog
Definition: star.h:85
const std::vector< double > & getstate()
Definition: star.h:920
std::vector< double > state
Definition: star.h:92
double ttimes[4]
Definition: star.h:242
std::string getps(const size_t &id) const
Definition: star.h:943
double getp_fk0_raw(const size_t &id) const
Definition: star.h:957
void recordstate_w_timeupdate()
Definition: star.h:550
double get_last_fromtable(Lookup::Tables tab_id, unsigned int interpolating_track) const
Definition: star.h:250
std::string log_mess_HEnaked(utilities::jump_convergence outcome)
Definition: star.h:2182
std::string log_message_SNIa()
Definition: star.cpp:1476
supernova * SN
Definition: star.h:46
double get_rzams0() const
Definition: star.h:901
bool amIdegenerate_0() const
Definition: star.h:768
bool print_all_steps
Definition: star.h:69
bool amiWD() const
Definition: star.h:687
void resynch(const double &dt)
Definition: star.h:1384
bool haveienvelope() const
Definition: star.h:778
bool repeatstep
Definition: star.h:247
bool amiremnant_0() const
Definition: star.h:677
Star & operator=(const Star &)=delete
double Rcore(bool old=false)
Definition: star.h:392
Init_params
Definition: star.h:2000
@ _Dtout
Definition: star.h:2007
@ _Z
Definition: star.h:2002
@ _Tini
Definition: star.h:2005
@ _Tfin
Definition: star.h:2006
@ _Mzams
Definition: star.h:2001
@ _Spin
Definition: star.h:2003
@ _SN_type
Definition: star.h:2004
bool initialised_on_zams
Definition: star.h:73
double Renvelope(bool old=false)
Definition: star.h:430
unsigned int get_dtout_type()
Definition: star.h:940
void set_rzams()
Definition: star.cpp:1026
double inspect_param_tini(std::string p, bool ignore_global=false)
Definition: star.h:1702
std::string get_id_name() const
Definition: star.h:947
void init_on_lookup()
Definition: star.h:2318
void explode_as_SNI(_UNUSED Binstar *b)
void tobe_exploded_as_SNI()
Definition: star.cpp:1235
utilities::jump_convergence find_new_track_after_merger()
Definition: star.h:1983
void remnant_in_bse(Binstar *b)
Definition: star.h:178
void set_empty_in_bse(Binstar *b)
Definition: star.h:1023
double tphase[Nphases]
Definition: star.h:119
double get_svpar_num(std::string name) const
Get the value of the parameters store in the svpar class in io.
Definition: star.h:914
bool once_conaked
Definition: star.h:67
double & costart()
Definition: star.h:997
bool get_COnaked()
Definition: star.h:1133
Star()
Definition: star.h:265
~Star()
Definition: star.cpp:1569
bool has_been_properly_initiliased()
Definition: star.h:365
void init_1(std::vector< std::string > ¶ms)
Definition: star.h:2277
std::string get_sn_type() const
Definition: star.h:991
Star & operator=(Star &&other)=default
unsigned long inspect_param_rseed(std::string p)
Definition: star.h:1924
utilities::jump_convergence match_HE_and_binding(double Ebind, double &best_rel_err, double Min_Mass=utilities::NULL_DOUBLE, double Max_Mass=utilities::NULL_DOUBLE, bool pureHe=false)
Definition: star.cpp:726
double MHE_min
Definition: star.h:136
std::vector< std::string > get_initparams(bool effective_values=true) const
Definition: star.h:477
bool aminakedco() const
Definition: star.h:664
double get_min_zams() const
Definition: star.h:875
utilities::jump_convergence jump_to_pureHE_tracks()
Definition: star.cpp:132
bool amiempty() const
Definition: star.h:669
utilities::evolution evolve()
Definition: star.cpp:1075
double get_min_Z() const
Definition: star.h:881
bool amiWR() const
Definition: star.h:651
void set_Z(const double a, const char *file, const int line)
Definition: star.h:2221
bool aminakedhelium() const
Flag check.
Definition: star.h:633
double mzams0
Definition: star.h:129
void reset(double mzams=utilities::NULL_DOUBLE, double Z=utilities::NULL_DOUBLE, std::string tini=utilities::NULL_STR)
Definition: star.h:2054
void set_dtout(const double a, const char *file, const int line)
Definition: star.h:2251
std::string name
Definition: star.h:90
double getp_fk_raw(const size_t &id) const
Definition: star.h:955
void set_mzams(const double a, const char *file, const int line)
Definition: star.h:2201
utilities::jump_convergence jump_to_normal_tracks()
Definition: star.cpp:298
void print_failed(bool include_in_output=false)
Definition: star.h:600
bool print_only_end
Definition: star.h:71
void update_jtrack_counter()
Definition: star.h:2153
double Menvelope(bool old=false)
Definition: star.h:411
double * times_in[4]
Definition: star.h:246
void print()
Definition: star.h:576
void set_forcejump()
Definition: star.h:1012
double tf
Definition: star.h:123
double getp_0(const size_t &id) const
Definition: star.h:926
std::vector< double > dtout_phase
Definition: star.h:97
Star(IO *_io, std::vector< std::string > ¶ms, size_t &_ID, bool pureHE=false, unsigned long _rseed=0)
Definition: star.h:275
void evolve_to_tini()
Definition: star.h:1205
double getp_fk(const size_t &id) const
Definition: star.h:925
double get_next_tphase() const
Definition: star.h:986
void set_kicked()
Set flags.
Definition: star.h:1011
bool breaktrigger() const
Definition: star.h:847
void reset(double mzams=utilities::NULL_DOUBLE, double Z=utilities::NULL_DOUBLE, double tini=utilities::NULL_DOUBLE)
Definition: star.h:2076
bool just_exploded()
Definition: star.h:619
void reset_QHE()
Definition: star.h:1086
utilities::jump_convergence find_new_track(bool is_merger=false)
CHANGE OF TRACKS METHODS.
Definition: star.cpp:17
bool amiCompact_0() const
Definition: star.h:752
std::vector< std::vector< double > > tphase_neigh
Definition: star.h:122
bool print_events
Definition: star.h:72
double t_co_start
Definition: star.h:121
double getp(const size_t &id) const
Definition: star.h:924
std::vector< std::vector< std::vector< double > * > > tables
Definition: star.h:93
unsigned long get_rseed()
Definition: star.h:868
bool auxiliary_star
Definition: star.h:63
bool print_per_phase
Definition: star.h:70
double MCO_max
Definition: star.h:134
bool isremnant
Definition: star.h:64
void set_MCO_max_aftermerge(Star *merged_star)
Definition: star.h:1096
double inspect_param_mass(std::string p)
Definition: star.h:1841
bool & kicked()
Definition: star.h:999
static size_t ID
Definition: property.h:1860
static size_t ID
Definition: property.h:488
static size_t ID
Definition: property.h:429
static size_t ID
Definition: property.h:1595
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
void pdebug() const
Variadic prints.
Definition: sevnlog.h:191
void warning(std::string errstate, const char *file_input=nullptr, int line_input=-1) const
Definition: sevnlog.cpp:137
Definition: errhand.h:156
Definition: errhand.h:144
Definition: errhand.h:167
Definition: supernova.h:256
Remnants
NOTICE, the order is important (mass ordered): WD, NS, BH.
Definition: lookup_and_phases.h:78
@ COWD
Definition: lookup_and_phases.h:83
@ HeWD
Definition: lookup_and_phases.h:82
@ ONeWD
Definition: lookup_and_phases.h:84
@ Empty
Definition: lookup_and_phases.h:80
@ NS_ECSN
Definition: lookup_and_phases.h:85
@ NS_CCSN
Definition: lookup_and_phases.h:86
@ NotARemnant
Definition: lookup_and_phases.h:81
@ BH
Definition: lookup_and_phases.h:87
Phases
NOTICE: The order is important from less evolved to more evolved.
Definition: lookup_and_phases.h:42
@ TerminalMainSequence
Definition: lookup_and_phases.h:45
@ ShellHeBurning
Definition: lookup_and_phases.h:49
@ Nphases
Definition: lookup_and_phases.h:51
@ ShellHBurning
Definition: lookup_and_phases.h:46
@ Remnant
Definition: lookup_and_phases.h:50
@ MainSequence
Definition: lookup_and_phases.h:44
@ CoreHeBurning
Definition: lookup_and_phases.h:47
@ TerminalCoreHeBurning
Definition: lookup_and_phases.h:48
Tables
Definition: lookup_and_phases.h:19
@ _Phase
Definition: lookup_and_phases.h:28
@ _MHE
Definition: lookup_and_phases.h:23
@ _MCO
Definition: lookup_and_phases.h:24
@ _Time
Definition: lookup_and_phases.h:20
@ _Ntables
Definition: lookup_and_phases.h:38
@ _DTUNKNOWN
Definition: lookup_and_phases.h:185
Material
Definition: lookup_and_phases.h:65
std::string literal(Phases A)
Definition: lookup_and_phases.cpp:8
@ NoEvent
Definition: lookup_and_phases.h:158
bool areEqual(double x, double y)
Definition: utilities.cpp:141
static double omega_crit(double Mass, double Rpolar)
Definition: utilities.h:214
void wait()
Definition: utilities.h:244
const std::string n2s(T val, const char *file_input, const int line_input, const unsigned int precision=6)
Definition: utilities.h:144
const std::string random_keygen(std::mt19937_64 *mtrand)
Definition: utilities.h:346
unsigned int evolution
Definition: utilities.h:103
std::string log_print(const std::string &label, Star *star, ListP... args)
Definition: utilities.h:320
unsigned int jump_convergence
Definition: utilities.h:108
constexpr double TINY
Definition: utilities.h:98
const std::string PLACEHOLDER
Definition: utilities.h:85
const std::string NULL_STR
Definition: utilities.h:93
unsigned int sn_explosion
Definition: utilities.h:114
size_t binary_search(T *array, const size_t left, const size_t right, const T value)
Definition: utilities.h:374
constexpr int SN_NOT_EXPLODE
Definition: utilities.h:117
constexpr int SNIA_EXPLODE
Definition: utilities.h:115
constexpr double NULL_DOUBLE
Definition: utilities.h:89
unsigned long gen_rseed()
Definition: utilities.cpp:11
std::mt19937_64 mtrand
Definition: utilities.cpp:9
constexpr double LARGE
Definition: utilities.h:97
#define FOR4
Definition: star.h:27
std::ostream & operator<<(std::ostream &os, Star &s)
Definition: star.h:2614