From 8ff650cd1d6c989096b4ec7eea358a5011449fe0 Mon Sep 17 00:00:00 2001 From: Robert Izzard <r.izzard@surrey.ac.uk> Date: Thu, 22 Jul 2021 17:43:37 +0100 Subject: [PATCH] add log_arrows option to put arrows into the log file add colour%d option to allow the user to override the ANSI colours --- src/API/binary_c_API_debug_fprintf.c | 30 +++--- src/API/binary_c_API_log.c | 4 +- src/API/binary_c_API_make_logstring.c | 27 ++--- src/RLOF/RLOF_adaptive_mass_transfer_rate.c | 14 +-- src/RLOF/RLOF_adaptive_mass_transfer_rate2.c | 24 ++--- .../RLOF_instantaneous_mass_transfer_rate.c | 16 +-- src/binary_c_debug.h | 2 +- src/binary_c_physical_constants.h | 8 ++ src/binary_c_string_macros.h | 12 +-- src/binary_c_structures.h | 13 ++- src/buffering/binary_c_fail_printf.c | 16 +-- .../common_envelope_evolution_BSE.c | 16 +-- src/debug/debug_colours.h | 12 +-- src/disc/cbdisc_eccentricity_pumping_rate.c | 12 +-- src/disc/disc_F_bisector.c | 3 +- src/disc/disc_J_bisector.c | 3 +- src/disc/disc_M_bisector.c | 3 +- src/disc/disc_bisection_rooter.c | 3 +- src/disc/disc_build_disc_zones.c | 8 +- src/disc/disc_calc_disc_structure.c | 9 +- src/disc/disc_calculate_derived_variables.c | 5 +- src/disc/disc_check_power_laws.c | 18 ++-- src/disc/disc_convergence_status.c | 3 +- src/disc/disc_debug.h | 2 +- src/disc/disc_derivatives.c | 13 ++- src/disc/disc_determine_zone_radii.c | 19 ++-- src/disc/disc_initial_structure.c | 2 +- src/disc/disc_initialize_disc.c | 4 +- src/disc/disc_inner_edge_mass_loss.c | 4 +- src/disc/disc_logging.c | 13 ++- src/disc/disc_new_zone_list.c | 3 +- src/disc/disc_nsector.c | 2 +- src/disc/disc_outer_edge_mass_loss.c | 2 +- src/disc/disc_photoevaporation.c | 35 +++--- src/disc/disc_prototypes.h | 73 ++++++++----- src/disc/disc_quadsector.c | 2 +- src/disc/disc_set_disc_initial_guess.c | 3 +- src/disc/disc_setup_zones.c | 5 +- src/disc/disc_show_disc.c | 10 +- src/disc/disc_show_thermal_zones.c | 11 +- src/disc/disc_structure_functions.c | 30 ++++-- src/disc/disc_trisector.c | 2 +- src/disc/disc_zone_crossing_radii.c | 3 +- src/disc/evolve_disc.c | 5 +- src/ensemble/ensemble_disc_log.c | 6 +- src/evolution/apply_derivatives.c | 4 +- src/evolution/evolve_system_binary_c.c | 4 +- src/evolution/time_evolution.h | 6 +- src/evolution/update_the_time.c | 4 +- src/logging/ansi_colours.h | 100 ++++++++++-------- src/logging/log_every_timestep.c | 18 ++++ src/logging/logfile_macros.h | 8 +- src/logging/logfile_string.c | 72 ++++++++++--- src/logging/logging_prototypes.h | 2 + src/logging/logwrap.c | 1 + src/logging/open_log_files.c | 43 ++++++-- src/logging/output_to_detailed_logfile.c | 18 ++-- src/logging/output_to_logfile.c | 4 +- src/logging/show_derivatives.c | 12 +-- src/maths/apply_derivative.c | 4 +- src/memory/build_store_contents.c | 21 +++- src/memory/free_store_contents.c | 17 ++- src/perl/scripts/rename_variable.pl | 27 +++-- src/setup/argument_setting_functions.c | 8 +- src/setup/cmd_line_args_list.h | 21 +++- src/setup/cmd_line_function_macros.h | 4 +- src/setup/cmd_line_macros.h | 2 + src/setup/derived_arguments.c | 22 +++- src/setup/parse_arguments.c | 21 ++-- src/setup/set_default_preferences.c | 3 +- src/setup/setup_prototypes.h | 1 + src/setup/version.c | 24 +++++ src/stellar_timescales/stellar_timescales.c | 4 +- src/timestep/stellar_timestep.c | 12 +-- .../timestep_increment_fixed_timesteps.c | 2 +- src/wind/wind_postAGB.c | 8 +- tbse | 5 +- 77 files changed, 667 insertions(+), 345 deletions(-) diff --git a/src/API/binary_c_API_debug_fprintf.c b/src/API/binary_c_API_debug_fprintf.c index ea42e82b5..d27f1ea27 100644 --- a/src/API/binary_c_API_debug_fprintf.c +++ b/src/API/binary_c_API_debug_fprintf.c @@ -11,13 +11,13 @@ void binary_c_API_function Gnu_format_args(4,5) const char * const format, ...) { - /* - * This function should not be called directly! + /* + * This function should not be called directly! * Use the Dprint macro instead. * * filename is the source code file with the Dprint statement * - * fileline is the line at which the Dprint statement occurs + * fileline is the line at which the Dprint statement occurs * * format is the (printf) format string * @@ -28,10 +28,10 @@ void binary_c_API_function Gnu_format_args(4,5) * Model_Time Filename : Line : message * */ - double t = stardata!=NULL ? stardata->model.time : -1.0; + const double t = stardata!=NULL ? stardata->model.time : -1.0; va_list args; va_start(args,format); - + /* s contains the message */ char s[MAX_DEBUG_PRINT_SIZE],sid[14],f[MAX_DEBUG_PRINT_SIZE]; vsnprintf(s,MAX_DEBUG_PRINT_SIZE,format,args); @@ -51,7 +51,7 @@ void binary_c_API_function Gnu_format_args(4,5) /* make the filename, remove nan e.g. in remnant (replace with n_n) */ #ifdef DEBUG_COLOURS - snprintf(f,MAX_DEBUG_PRINT_SIZE,"%s%-40.40s",RED,filename); + snprintf(f,MAX_DEBUG_PRINT_SIZE,"%s%-40.40s",stardata->store->colours[RED],filename); #else snprintf(f,MAX_DEBUG_PRINT_SIZE,"%-40.40s",filename); #endif @@ -65,17 +65,17 @@ void binary_c_API_function Gnu_format_args(4,5) #ifdef DEBUG_COLOURS #ifdef DEBUG_LINENUMBERS _printf("%s%s%g %d %s%s :%s% 6d%s : %s\n", - CYAN,sid,t, - stardata != NULL ? stardata->model.intpol : 0, - YELLOW,f, - GREEN,fileline, - COLOUR_RESET,s); + stardata->store->colours[CYAN],sid,t, + stardata != NULL ? stardata->model.intpol : 0, + stardata->store->colours[YELLOW],f, + stardata->store->colours[GREEN],fileline, + stardata->store->colours[COLOUR_RESET],s); #else _printf("%s%s%g %d %s%s%s : %s\n", - CYAN,sid,t, - stardata != NULL ? stardata->model.intpol : 0, - YELLOW,f, - COLOUR_RESET,s); + stardata->store->colours[CYAN],sid,t, + stardata != NULL ? stardata->model.intpol : 0, + stardata->store->colours[YELLOW],f, + stardata->store->colours[COLOUR_RESET],s); #endif //DEBUG_LINENUMBERS #else diff --git a/src/API/binary_c_API_log.c b/src/API/binary_c_API_log.c index 343f20792..06364511b 100644 --- a/src/API/binary_c_API_log.c +++ b/src/API/binary_c_API_log.c @@ -35,6 +35,7 @@ void binary_c_API_function binary_c_API_log(struct stardata_t * const stardata, stardata->star[1].stellar_type, stardata->star[1].hybrid_HeCOWD, stardata->common.orbit.separation, + stardata->common.orbit.period, stardata->common.orbit.eccentricity, Is_not_zero(stardata->star[0].roche_radius) ? (stardata->star[0].radius/stardata->star[0].roche_radius) : 0.0, Is_not_zero(stardata->star[1].roche_radius) ? (stardata->star[1].radius/stardata->star[1].roche_radius) : 0.0, @@ -61,6 +62,7 @@ char * binary_c_API_logstring(struct stardata_t * const stardata, stardata->star[1].stellar_type, stardata->star[1].hybrid_HeCOWD, stardata->common.orbit.separation, + stardata->common.orbit.period, stardata->common.orbit.eccentricity, Is_not_zero(stardata->star[0].roche_radius) ? (stardata->star[0].radius/stardata->star[0].roche_radius) : 0.0, Is_not_zero(stardata->star[1].roche_radius) ? (stardata->star[1].radius/stardata->star[1].roche_radius) : 0.0, @@ -98,7 +100,7 @@ void binary_c_API_function binary_c_API_open_log(struct stardata_t * const stard binary_c_API_open_logfile(stardata,filename); fprintf(stardata->model.api_log_fp, - " TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE\n"); + " TIME M1 M2 K1 K2 SEP PER ECC R1/ROL1 R2/ROL2 TYPE\n"); } diff --git a/src/API/binary_c_API_make_logstring.c b/src/API/binary_c_API_make_logstring.c index 0e940ef5c..81a0d10c6 100644 --- a/src/API/binary_c_API_make_logstring.c +++ b/src/API/binary_c_API_make_logstring.c @@ -18,18 +18,19 @@ char * binary_c_API_make_logstring(struct stardata_t * const stardata, APIDebug("API::binary_c_api_log API LOG to string at t=%g\n",stardata->model.time); Boolean skip MAYBE_UNUSED; return logfile_string(stardata->model.time, - stardata->star[0].mass, - stardata->star[1].mass, - stardata->star[0].stellar_type, - stardata->star[0].hybrid_HeCOWD, - stardata->star[1].stellar_type, - stardata->star[1].hybrid_HeCOWD, - stardata->common.orbit.separation, - stardata->common.orbit.eccentricity, - Is_not_zero(stardata->star[0].roche_radius) ? (stardata->star[0].radius/stardata->star[0].roche_radius) : 0.0, - Is_not_zero(stardata->star[1].roche_radius) ? (stardata->star[1].radius/stardata->star[1].roche_radius) : 0.0, - locations[loc], - stardata, - &skip); + stardata->star[0].mass, + stardata->star[1].mass, + stardata->star[0].stellar_type, + stardata->star[0].hybrid_HeCOWD, + stardata->star[1].stellar_type, + stardata->star[1].hybrid_HeCOWD, + stardata->common.orbit.separation, + stardata->common.orbit.period, + stardata->common.orbit.eccentricity, + Is_not_zero(stardata->star[0].roche_radius) ? (stardata->star[0].radius/stardata->star[0].roche_radius) : 0.0, + Is_not_zero(stardata->star[1].roche_radius) ? (stardata->star[1].radius/stardata->star[1].roche_radius) : 0.0, + locations[loc], + stardata, + &skip); } #endif // BINARY_C_API diff --git a/src/RLOF/RLOF_adaptive_mass_transfer_rate.c b/src/RLOF/RLOF_adaptive_mass_transfer_rate.c index cae50ce65..e85163118 100644 --- a/src/RLOF/RLOF_adaptive_mass_transfer_rate.c +++ b/src/RLOF/RLOF_adaptive_mass_transfer_rate.c @@ -58,7 +58,7 @@ double RLOF_adaptive_mass_transfer_rate(const double r, { mdot = menv / dynamical_timescale(star); stardata->common.mdot_RLOF_adaptive=mdot; - fprintf(stderr,"%s conv check : eject all env%s\n",YELLOW,COLOUR_RESET); + fprintf(stderr,"%s conv check : eject all env%s\n",stardata->store->colours[YELLOW],stardata->store->colours[COLOUR_RESET]); } else #endif // ADAPTIVE_RLOF_CONVECTIVE_CHECK @@ -231,7 +231,7 @@ double RLOF_adaptive_mass_transfer_rate(const double r, Dprint("DR/DM < 0 : use BSE formula\n"); mdot = mdotBSE; use_BSE = TRUE; - fprintf(stderr,"%sdr/dm<0 use BSE%s\n",RED,COLOUR_RESET); + fprintf(stderr,"%sdr/dm<0 use BSE%s\n",stardata->store->colours[RED],stardata->store->colours[COLOUR_RESET]); #ifdef ADAPTIVE_RLOF_LOG stardata->common.used_rate = RLOF_RATE_BSE; #endif // ADAPTIVE_RLOF_LOG @@ -243,7 +243,7 @@ double RLOF_adaptive_mass_transfer_rate(const double r, pstar->mass = star->core_mass[ID_core(pstar->stellar_type)]; Dprint("DR/DM = %g < 0 : %seject all the envelope%s menv=%g dt=%g dr=%g dm=%g\n", - dr/dm,MAGENTA,COLOUR_RESET, + dr/dm,stardata->store->colours[MAGENTA],stardata->store->colours[COLOUR_RESET], star->mass-Outermost_core_mass(star), dt, dr, @@ -310,11 +310,11 @@ double RLOF_adaptive_mass_transfer_rate(const double r, Dprint("Break : better than threshold (check1=%d check2=%d)\n\n",check1,check2); /*fprintf(stderr,"%st=%g Converged m=%g (was %g) r=%g roche_radius=%g dm/dr=%g%s (%d iterations)\n", - GREEN, + stardata->store->colours[GREEN], stardata->model.time, pstar->mass,mass, pstar->radius,target_radius,dmdr, - COLOUR_RESET,i); + stardata->store->colours[COLOUR_RESET],i); */ #ifdef PRETTYLOG status=STATUS_CONVERGED; @@ -351,7 +351,7 @@ double RLOF_adaptive_mass_transfer_rate(const double r, use_BSE=TRUE; mdot = mdotBSE; #ifdef SHOW_WARNINGS - fprintf(stderr,"%sFailed dr=0%s (%d iterations)\n",RED,COLOUR_RESET,i); + fprintf(stderr,"%sFailed dr=0%s (%d iterations)\n",stardata->store->colours[RED],stardata->store->colours[COLOUR_RESET],i); #endif #ifdef PRETTYLOG status=STATUS_DR_ZERO; @@ -370,7 +370,7 @@ double RLOF_adaptive_mass_transfer_rate(const double r, { pstar->mass=0.0; #ifdef SHOW_WARNINGS - fprintf(stderr,"%sFailed dm<0%s (%d iterations)\n",RED,COLOUR_RESET,i); + fprintf(stderr,"%sFailed dm<0%s (%d iterations)\n",stardata->store->colours[RED],stardata->store->colours[COLOUR_RESET],i); #endif Dprint("pstar->mass < 0 error in RLOF_mass_transfer rate : continuing...\n"); #ifdef PRETTYLOG diff --git a/src/RLOF/RLOF_adaptive_mass_transfer_rate2.c b/src/RLOF/RLOF_adaptive_mass_transfer_rate2.c index 429ed7b0d..736cb03e5 100644 --- a/src/RLOF/RLOF_adaptive_mass_transfer_rate2.c +++ b/src/RLOF/RLOF_adaptive_mass_transfer_rate2.c @@ -80,9 +80,9 @@ double RLOF_adaptive_mass_transfer_rate2(const double r MAYBE_UNUSED, stardata->model.adapting_RLOF2 = TRUE; if(vb)printf("\n\n%s** %u **********************************************************%s\n\nfirst a = %30.20e, r = %30.20e, star->radius = %30.20e, target_radius = %30.20e Rexcess %g\n", - RED, + stardata->store->colours[RED], stardata->model.adaptive_RLOF2_adapt_count, - COLOUR_RESET, + stardata->store->colours[COLOUR_RESET], stardata->common.orbit.separation, r, star->radius, @@ -106,8 +106,8 @@ double RLOF_adaptive_mass_transfer_rate2(const double r MAYBE_UNUSED, star->adaptive2_Mdot_high, star->adaptive2_Rexcess_low, star->adaptive2_Rexcess_high, - GREEN, - COLOUR_RESET, + stardata->store->colours[GREEN], + stardata->store->colours[COLOUR_RESET], Yesno(star->adaptive2_converged) ); @@ -213,8 +213,8 @@ double RLOF_adaptive_mass_transfer_rate2_update(struct stardata_t * const starda star->adaptive2_Mdot_high, star->adaptive2_Rexcess_low, star->adaptive2_Rexcess_high, - GREEN, - COLOUR_RESET, + stardata->store->colours[GREEN], + stardata->store->colours[COLOUR_RESET], epsR, epstarget_radius, eps, @@ -553,10 +553,10 @@ double _RLOF_adaptive_mass_transfer_rate2(const double r, star->adaptive2_mdot ); rif(vb)printf("ADAP %s%d:%u%s M = %15.12g %15.12g ; mdot was %g : maxmdot = %g, dt = %g : R=%15.12g RL=%15.12g eps=%g ", - RED, + stardata->store->colours[RED], stardata->model.model_number, stardata->model.adaptive_RLOF2_adapt_count, - COLOUR_RESET, + stardata->store->colours[COLOUR_RESET], mass, star->mass, mdot, @@ -709,10 +709,10 @@ double _RLOF_adaptive_mass_transfer_rate2(const double r, * then convergence is stuck */ rif(vb)printf("%sMdot now == mdot previous : reduce from %g to %g!%s\n", - YELLOW, + stardata->store->colours[YELLOW], newMdot, newMdot*0.9, - COLOUR_RESET); + stardata->store->colours[COLOUR_RESET]); newMdot *= r < target_radius ? 1.1 : 0.9; } @@ -750,7 +750,7 @@ double _RLOF_adaptive_mass_transfer_rate2(const double r, star->adaptive2_mdot = mdot; rif(vb)printf("%smdot = %g (change of %g) : converged? %s (dt = %g, zoomfac %g, M will be %g, R/RL-1 = %g < %g) %s\n", - star->adaptive2_converged == TRUE ? CYAN : COLOUR_RESET, + star->adaptive2_converged == TRUE ? stardata->store->colours[CYAN] : stardata->store->colours[COLOUR_RESET], star->adaptive2_mdot, star->adaptive2_mdot/stardata->previous_stardata->star[star->starnum].derivative[DERIVATIVE_STELLAR_MASS_RLOF_LOSS] - 1.0, Yesno(star->adaptive2_converged), @@ -759,7 +759,7 @@ double _RLOF_adaptive_mass_transfer_rate2(const double r, star->mass - mdot * dt, r/target_radius-1.0, THRESHOLD, - COLOUR_RESET + stardata->store->colours[COLOUR_RESET] ); diff --git a/src/RLOF/RLOF_instantaneous_mass_transfer_rate.c b/src/RLOF/RLOF_instantaneous_mass_transfer_rate.c index 09bdfc40c..08caae794 100644 --- a/src/RLOF/RLOF_instantaneous_mass_transfer_rate.c +++ b/src/RLOF/RLOF_instantaneous_mass_transfer_rate.c @@ -234,9 +234,9 @@ double Pure_function RLOF_instantaneous_mass_transfer_rate( { Dprint("t=%g %sLimit mass-transfer to %g x Menv%s (menv=%g, mdot was %g now %g) dt=%g\n", stardata->model.time, - YELLOW, + stardata->store->colours[YELLOW], ADAPTIVE_RLOF_MAX_ENV_FRAC, - COLOUR_RESET,menv, + stardata->store->colours[COLOUR_RESET],menv, mdot, envelope_limit, dt); @@ -335,9 +335,9 @@ double Pure_function RLOF_instantaneous_mass_transfer_rate( #warning This static int should not be here! static int zerocount=0; zerocount = (Is_zero(mdot)) ? zerocount+1 : 0; - const char *colours[] = {MAGENTA,GREEN,RED,RED,YELLOW,RED}; + const char *colours[] = {stardata->store->colours[MAGENTA],stardata->store->colours[GREEN],stardata->store->colours[RED],stardata->store->colours[RED],stardata->store->colours[YELLOW],stardata->store->colours[RED]}; const char *statstrings[] = {"","Cnvrgd","dmdr<0","dr=0","WDenv","mt<0"}; - const char *capcolours[] = {GREEN,BRIGHT_YELLOW,BRIGHT_RED}; + const char *capcolours[] = {stardata->store->colours[GREEN],stardata->store->colours[BRIGHT_YELLOW],stardata->store->colours[BRIGHT_RED]}; const char *capstrings[] = {" ","(T)","(E)"}; const char *rolmov[] = {"(Detaching)","(Attaching)"}; const double tdyn_local = dynamical_timescale(star); @@ -362,12 +362,12 @@ double Pure_function RLOF_instantaneous_mass_transfer_rate( capcolours[cap], cap, capstrings[cap], - CYAN, + stardata->store->colours[CYAN], stardata->common.suggested_timestep, donor->tkh, zerocount, radius_mass_derivative(stardata,donor,donor->mass), - COLOUR_RESET); + stardata->store->colours[COLOUR_RESET]); } #endif // PRETTYLOG @@ -384,9 +384,9 @@ double Pure_function RLOF_instantaneous_mass_transfer_rate( if(unlikely(mdot<0.0)) mdot=0.0; Dprint("%sFINAL MDOT RLOF = %g (final R=%g RL=%g)%s\n", - YELLOW,mdot, + stardata->store->colours[YELLOW],mdot, donor->radius,roche_radius, - COLOUR_RESET); + stardata->store->colours[COLOUR_RESET]); } diff --git a/src/binary_c_debug.h b/src/binary_c_debug.h index 5cf5947ec..b74b8954d 100644 --- a/src/binary_c_debug.h +++ b/src/binary_c_debug.h @@ -78,7 +78,7 @@ * the same, but stardata is defined everywhere as a global * variable. */ -#define Debug_expression (stardata->model.model_number>=349) +#define Debug_expression (TRUE) /* * If you define Debug_stop_expression, and it is at any time TRUE, diff --git a/src/binary_c_physical_constants.h b/src/binary_c_physical_constants.h index 5961b9ab9..5bfda9959 100644 --- a/src/binary_c_physical_constants.h +++ b/src/binary_c_physical_constants.h @@ -186,6 +186,8 @@ /* one year in seconds */ //#define YEAR_LENGTH_IN_SECONDS (sqrt( Pow2(TWOPI) * Pow3(ASTRONOMICAL_UNIT) /(GRAVITATIONAL_CONSTANT * M_SUN))) + +/* This number is the above pre-computed */ #define YEAR_LENGTH_IN_SECONDS (3.155324093699018657207489013672e+07) /* year in days */ @@ -194,6 +196,12 @@ /* year in hours */ #define YEAR_LENGTH_IN_HOURS ((YEAR_LENGTH_IN_SECONDS)/(HOUR_LENGTH_IN_SECONDS)) +/* day in hours */ +#define DAY_LENGTH_IN_HOURS (DAY_LENGTH_IN_SECONDS/HOUR_LENGTH_IN_SECONDS) + +/* day in years */ +#define DAY_LENGTH_IN_YEARS (1.0/YEAR_LENGTH_IN_DAYS) + /* Rsun in km */ #define R_SUN_KM (R_SUN*1e-5) diff --git a/src/binary_c_string_macros.h b/src/binary_c_string_macros.h index 7fdb14182..1096fb661 100644 --- a/src/binary_c_string_macros.h +++ b/src/binary_c_string_macros.h @@ -40,29 +40,29 @@ enum { /* * Macros to say yes/no, true/false, in captials and colour too */ -#define _POSITIVE_COLOUR BRIGHT_GREEN -#define _NEGATIVE_COLOUR BRIGHT_RED +#define _POSITIVE_COLOUR stardata->store->colours[BRIGHT_GREEN] +#define _NEGATIVE_COLOUR stardata->store->colours[BRIGHT_RED] #define Yesno(B) ((B)==TRUE ? "Yes" : "No") #define YESNO(B) ((B)==TRUE ? "YES" : "NO") #define Colouryesno(X) \ ((X)==FALSE ? _NEGATIVE_COLOUR : _POSITIVE_COLOUR), \ Yesno(X), \ - COLOUR_RESET + stardata->store->colours[COLOUR_RESET] #define ColourYESNO(X) \ ((X)==FALSE ? _NEGATIVE_COLOUR : _POSITIVE_COLOUR), \ YESNO(X), \ - COLOUR_RESET + stardata->store->colours[COLOUR_RESET] #define Truefalse(B) ((B)==TRUE ? "True" : "False") #define TRUEFALSE(B) ((B)==TRUE ? "TRUE" : "FALSE") #define Colourtruefalse(X) \ ((X)==FALSE ? _NEGATIVE_COLOUR : _POSITIVE_COLOUR), \ Truefalse(X), \ - COLOUR_RESET + stardata->store->colours[COLOUR_RESET] #define ColourTRUEFALSE(X) \ ((X)==FALSE ? _NEGATIVE_COLOUR : _POSITIVE_COLOUR), \ TRUEFALSE(X), \ - COLOUR_RESET + stardata->store->colours[COLOUR_RESET] /* diff --git a/src/binary_c_structures.h b/src/binary_c_structures.h index 7a09ab655..69ded460a 100644 --- a/src/binary_c_structures.h +++ b/src/binary_c_structures.h @@ -268,6 +268,12 @@ struct store_t { /* log file labels */ const char *label[NLOG_LABEL]; + char * upchar; + char * downchar; + char * nochangechar; +#ifdef USE_ANSI_COLOURS + char ** colours; +#endif /* * Data tables @@ -1009,6 +1015,7 @@ struct preferences_t { char stardata_dump_filename[STRING_LENGTH]; char stardata_load_filename[STRING_LENGTH]; + #ifdef FILE_LOG /* file log name */ char log_filename[STRING_LENGTH]; @@ -1048,6 +1055,7 @@ struct preferences_t { int nelemans_n_comenvs; int PN_Hall_fading_time_algorithm; + int colours[NUM_ANSI_COLOURS]; #ifdef DISCS int cbdisc_eccentricity_pumping_method; @@ -1226,6 +1234,7 @@ struct preferences_t { Third_dredge_up_algorithm AGB_3dup_algorithm; /* Boolean parameters */ + Boolean show_version; Boolean tasks[BINARY_C_TASK_NUMBER]; Boolean require_drdm; Boolean save_pre_events_stardata; @@ -1259,8 +1268,10 @@ struct preferences_t { /* stop evolution and return on event */ Boolean stop_at_event; +#ifdef FILE_LOG Boolean colour_log; - + Boolean log_arrows; +#endif // FILE_LOG Boolean force_circularization_on_RLOF; Boolean speedtests; diff --git a/src/buffering/binary_c_fail_printf.c b/src/buffering/binary_c_fail_printf.c index 2b404726b..c883b6cc7 100644 --- a/src/buffering/binary_c_fail_printf.c +++ b/src/buffering/binary_c_fail_printf.c @@ -71,7 +71,7 @@ void Gnu_format_args(4,5) No_return /* make the filename, remove nan e.g. in remnant (replace with n_n) */ char f[MAX_DEBUG_PRINT_SIZE]; #ifdef DEBUG_COLOURS - snprintf(f,MAX_DEBUG_PRINT_SIZE,"%s%-40.40s",RED,filename); + snprintf(f,MAX_DEBUG_PRINT_SIZE,"%s%-40.40s",stardata->store->colours[RED],filename); #else snprintf(f,MAX_DEBUG_PRINT_SIZE,"%-40.40s",filename); #endif @@ -85,15 +85,15 @@ void Gnu_format_args(4,5) No_return #ifdef DEBUG_COLOURS #ifdef DEBUG_LINENUMBERS PRINT2("%sbinary_c_fail: %s%g %s% 6d%s : %s : %s%s\n", - CYAN,sid,t, - GREEN,fileline, - YELLOW,f, - COLOUR_RESET,s); + stardata->store->colours[CYAN],sid,t, + stardata->store->colours[GREEN],fileline, + stardata->store->colours[YELLOW],f, + stardata->store->colours[COLOUR_RESET],s); #else PRINT2("%sbinary_c_fail: %s%g %s%s%s : %s\n", - CYAN,sid,t, - YELLOW,f, - COLOUR_RESET,s); + stardata->store->colours[CYAN],sid,t, + stardata->store->colours[YELLOW],f, + stardata->store->colours[COLOUR_RESET],s); #endif //DEBUG_LINENUMBERS #else diff --git a/src/common_envelope/common_envelope_evolution_BSE.c b/src/common_envelope/common_envelope_evolution_BSE.c index 91def3ac7..8e8c838cf 100644 --- a/src/common_envelope/common_envelope_evolution_BSE.c +++ b/src/common_envelope/common_envelope_evolution_BSE.c @@ -3566,7 +3566,7 @@ void Gnu_format_args(4,5) mixdebug_fprintf(struct stardata_t * const stardata, /* make the filename, remove nan e.g. in remnant (replace with n_n) */ char f[MAX_DEBUG_PRINT_SIZE]; #ifdef DEBUG_COLOURS - snprintf(f,MAX_DEBUG_PRINT_SIZE,"%s%-40.40s",RED,filename); + snprintf(f,MAX_DEBUG_PRINT_SIZE,"%s%-40.40s",stardata->store->colours[RED],filename); #else snprintf(f,MAX_DEBUG_PRINT_SIZE,"%-40.40s",filename); #endif @@ -3581,15 +3581,15 @@ void Gnu_format_args(4,5) mixdebug_fprintf(struct stardata_t * const stardata, #ifdef DEBUG_COLOURS #ifdef DEBUG_LINENUMBERS Dprint("%s%g %s%s :%s% 6d%s : %s\n", - CYAN,stardata->model.time, - YELLOW,f, - GREEN,fileline, - COLOUR_RESET,s); + stardata->store->colours[CYAN],stardata->model.time, + stardata->store->colours[YELLOW],f, + stardata->store->colours[GREEN],fileline, + stardata->store->colours[COLOUR_RESET],s); #else Dprint("%s%g %s%s%s : %s\n", - CYAN,stardata->model.time, - YELLOW,f, - COLOUR_RESET,s); + stardata->store->colours[CYAN],stardata->model.time, + stardata->store->colours[YELLOW],f, + stardata->store->colours[COLOUR_RESET],s); #endif //DEBUG_LINENUMBERS #else diff --git a/src/debug/debug_colours.h b/src/debug/debug_colours.h index e7e2b9901..73138ac86 100644 --- a/src/debug/debug_colours.h +++ b/src/debug/debug_colours.h @@ -3,12 +3,12 @@ #define DEBUG_COLOURS_H #ifdef DEBUG_COLOURS -#define COLOUR_TIME CYAN -#define COLOUR_LINENUMBERS GREEN -#define COLOUR_ENDLINE COLOUR_RESET -#define COLOUR_FILENAME RED -#define COLOUR_CALLER YELLOW -#define COLOUR_FLOAT_BITSTRING MAGENTA +#define COLOUR_TIME stardata->store->colours[CYAN] +#define COLOUR_LINENUMBERS stardata->store->colours[GREEN] +#define COLOUR_ENDLINE stardata->store->colours[COLOUR_RESET] +#define COLOUR_FILENAME stardata->store->colours[RED] +#define COLOUR_CALLER stardata->store->colours[YELLOW] +#define COLOUR_FLOAT_BITSTRING stardata->store->colours[MAGENTA] #else #define COLOUR_TIME "" #define COLOUR_LINENUMBERS "" diff --git a/src/disc/cbdisc_eccentricity_pumping_rate.c b/src/disc/cbdisc_eccentricity_pumping_rate.c index c8b82af95..a9024fb0f 100644 --- a/src/disc/cbdisc_eccentricity_pumping_rate.c +++ b/src/disc/cbdisc_eccentricity_pumping_rate.c @@ -10,11 +10,11 @@ static void resonance_radii(const struct binary_system_t * binary, double *r_inner, double *r_outer); -void cbdisc_eccentricity_pumping_rate(struct stardata_t * stardata, - struct disc_t * disc, - const struct binary_system_t * binary, - double * dedt, - double * dJdt) +void cbdisc_eccentricity_pumping_rate(struct stardata_t * const stardata, + struct disc_t * const disc, + const struct binary_system_t * const binary, + double * const dedt, + double * const dJdt) { //#undef DISC_DEBUG //#define DISC_DEBUG 2 @@ -69,7 +69,7 @@ void cbdisc_eccentricity_pumping_rate(struct stardata_t * stardata, */ if(Is_zero(disc->RJhalf)) { - disc->RJhalf = disc_half_angular_momentum_radius(disc,binary); + disc->RJhalf = disc_half_angular_momentum_radius(stardata,disc,binary); } double R = disc->RJhalf; diff --git a/src/disc/disc_F_bisector.c b/src/disc/disc_F_bisector.c index a8e6709a7..049b865d1 100644 --- a/src/disc/disc_F_bisector.c +++ b/src/disc/disc_F_bisector.c @@ -15,6 +15,7 @@ double disc_F_bisector(const double Rin, * Rin at fixed Rout and mass (i.e. Tvisc0) */ Map_GSL_params(p,args); + Map_varg(struct stardata_t *,stardata,args); Map_varg(struct disc_t *,disc,args); Map_varg(struct binary_system_t *,binary,args); Map_varg(double,Routfac,args); @@ -62,7 +63,7 @@ double disc_F_bisector(const double Rin, } else { - status = disc_build_disc_zones(disc,binary); + status = disc_build_disc_zones(stardata,disc,binary); if(status == DISC_ZONES_OK) { diff --git a/src/disc/disc_J_bisector.c b/src/disc/disc_J_bisector.c index f7739d797..701de102e 100644 --- a/src/disc/disc_J_bisector.c +++ b/src/disc/disc_J_bisector.c @@ -11,6 +11,7 @@ double disc_J_bisector(const double Rout, * Bisect for J at fixed M (i.e. sigma0) and Rin (i.e. ang mom flux) */ Map_GSL_params(p,args); + Map_varg(struct stardata_t *,stardata,args); Map_varg(struct disc_t *,disc,args); Map_varg(struct binary_system_t *,binary,args); va_end(args); @@ -24,7 +25,7 @@ double disc_J_bisector(const double Rout, /* * update zone radii and power laws */ - int status = disc_build_disc_zones(disc,binary); + int status = disc_build_disc_zones(stardata,disc,binary); double ret; if(status==DISC_ZONES_OK) { diff --git a/src/disc/disc_M_bisector.c b/src/disc/disc_M_bisector.c index 3902ec006..975c1e669 100644 --- a/src/disc/disc_M_bisector.c +++ b/src/disc/disc_M_bisector.c @@ -7,6 +7,7 @@ double disc_M_bisector(const double Tvisc0, void * p) { Map_GSL_params(p,args); + Map_varg(struct stardata_t *,stardata,args); Map_varg(struct disc_t *,disc,args); Map_varg(struct binary_system_t *,binary,args); va_end(args); @@ -38,7 +39,7 @@ double disc_M_bisector(const double Tvisc0, * also sets sigma0. Return -1.0 on failure. */ - int status = disc_build_disc_zones(disc,binary); + int status = disc_build_disc_zones(stardata,disc,binary); if(status == DISC_ZONES_OK) { diff --git a/src/disc/disc_bisection_rooter.c b/src/disc/disc_bisection_rooter.c index b8608064d..5e1f066c7 100644 --- a/src/disc/disc_bisection_rooter.c +++ b/src/disc/disc_bisection_rooter.c @@ -332,7 +332,7 @@ static double disc_nsector_wrapper(const double x, /* * Function to be called by generic_bisect() */ - Discdebug(2,"in disc_nsector_wrapper\n"); + Map_GSL_params(p,args); Map_varg(const int,n,args); @@ -343,6 +343,7 @@ static double disc_nsector_wrapper(const double x, Map_varg(struct stardata_t *,stardata,args); Map_varg(int *,failed,args); va_end(args); + Discdebug(2,"in disc_nsector_wrapper\n"); const double parameter_value[1] = { x }; double residual[1]; diff --git a/src/disc/disc_build_disc_zones.c b/src/disc/disc_build_disc_zones.c index 546baa809..2c9d3bdaf 100644 --- a/src/disc/disc_build_disc_zones.c +++ b/src/disc/disc_build_disc_zones.c @@ -3,13 +3,15 @@ No_empty_translation_unit_warning; #ifdef DISCS -int disc_build_disc_zones(struct disc_t * const disc, +int disc_build_disc_zones(struct stardata_t * const stardata, + struct disc_t * const disc, const struct binary_system_t * const binary) { /* * Make a new zone list in a disc and zone it. */ - const Boolean status = disc_new_zone_list(disc, + const Boolean status = disc_new_zone_list(stardata, + disc, binary, disc->thermal_zones); @@ -17,7 +19,7 @@ int disc_build_disc_zones(struct disc_t * const disc, if(status == DISC_ZONES_OK) { - disc_setup_zones(disc,binary); + disc_setup_zones(stardata,disc,binary); } return status; } diff --git a/src/disc/disc_calc_disc_structure.c b/src/disc/disc_calc_disc_structure.c index a29d48ca0..2b6a20b61 100644 --- a/src/disc/disc_calc_disc_structure.c +++ b/src/disc/disc_calc_disc_structure.c @@ -257,7 +257,7 @@ int disc_calc_disc_structure(const struct binary_system_t * const binary, */ if(disc->converged) { - disc_calculate_derived_variables(disc,binary); + disc_calculate_derived_variables(stardata,disc,binary); } @@ -269,7 +269,7 @@ int disc_calc_disc_structure(const struct binary_system_t * const binary, /* * Check convergence status */ - disc_convergence_status("calc_structure_return",disc,binary); + disc_convergence_status(stardata,"calc_structure_return",disc,binary); /* * Check the solution is a local minimum @@ -690,7 +690,8 @@ static double converge_with_torque(const int n, disc->guess = iguess; /* set the initial guess number iguess */ - disc_set_disc_initial_guess(disc, + disc_set_disc_initial_guess(stardata, + disc, iguess, n, parameter_types, @@ -836,7 +837,7 @@ static double converge_with_torque(const int n, */ if(SHOW_CONVERGED_DISC_STRUCTURE && Disc_is_disc(disc)) - disc_show_disc(disc,binary); + disc_show_disc(stardata,disc,binary); #ifdef CONVERGENCE_LOG if(convlog_fp)fclose(convlog_fp); diff --git a/src/disc/disc_calculate_derived_variables.c b/src/disc/disc_calculate_derived_variables.c index 6e19f83eb..b1bdc5d84 100644 --- a/src/disc/disc_calculate_derived_variables.c +++ b/src/disc/disc_calculate_derived_variables.c @@ -8,7 +8,8 @@ No_empty_translation_unit_warning; * that are required by other parts of the disc code. */ -void disc_calculate_derived_variables(struct disc_t * const disc, +void disc_calculate_derived_variables(struct stardata_t * const stardata, + struct disc_t * const disc, const struct binary_system_t * const binary) { if(Disc_is_disc(disc)) @@ -16,7 +17,7 @@ void disc_calculate_derived_variables(struct disc_t * const disc, disc->Hin = disc_scale_height(disc->Rin,disc,binary); Discdebug(1,"Hin = %g\n",disc->Hin); - disc->RJhalf = disc_half_angular_momentum_radius(disc,binary); + disc->RJhalf = disc_half_angular_momentum_radius(stardata,disc,binary); Discdebug(1,"RJhalf = %g cf Rin = %g\n",disc->RJhalf, disc->Rin); if(Is_not_zero(disc->RJhalf)) diff --git a/src/disc/disc_check_power_laws.c b/src/disc/disc_check_power_laws.c index a5016fb23..41be8bb5c 100644 --- a/src/disc/disc_check_power_laws.c +++ b/src/disc/disc_check_power_laws.c @@ -55,7 +55,7 @@ void disc_check_power_laws(const struct disc_t * const d, if(Less_or_equal(PL->R0,0.0) || Less_or_equal(PL->R1,0.0)) { if(output==TRUE) - printf("%s >> PLAW ERROR R0 <= 0 or R1 <= 0 %s\n",RED,COLOUR_RESET); + printf("%s >> PLAW ERROR R0 <= 0 or R1 <= 0 %s\n",stardata->store->colours[RED],stardata->store->colours[COLOUR_RESET]); fail=TRUE; } @@ -67,23 +67,23 @@ void disc_check_power_laws(const struct disc_t * const d, { if(output==TRUE) printf("%s >> power law evaluated at R0 (%g) does not equal A0 (%g) %s\n", - RED, + stardata->store->colours[RED], power_law(PL,PL->R0), PL->A0, - COLOUR_RESET); + stardata->store->colours[COLOUR_RESET]); fail=TRUE; } if(!Fequal(power_law(PL,PL->R1)/PL->A1,1.0)) { if(output==TRUE) printf("%s >> power law evaluated at R1 (%g) does not equal A1 (%g) %% error = %g cf TINY=%g %g %s\n", - RED, + stardata->store->colours[RED], power_law(PL,PL->R1), PL->A1, power_law(PL,PL->R1)/PL->A1-1.0, TINY, fabs(power_law(PL,PL->R1) - PL->A1), - COLOUR_RESET); + stardata->store->colours[COLOUR_RESET]); fail=TRUE; } @@ -102,13 +102,13 @@ void disc_check_power_laws(const struct disc_t * const d, { if(output==TRUE) printf("%s >> PLAW ERROR : A0[%d]=%20.12e != A1[%d]=%20.12e (diff %g)%s\n", - RED, + stardata->store->colours[RED], i, PL->A0, i-1, prevPL->A1, PL->A0/prevPL->A1 - 1.0, - COLOUR_RESET + stardata->store->colours[COLOUR_RESET] ); fail=TRUE; } @@ -120,8 +120,8 @@ void disc_check_power_laws(const struct disc_t * const d, { if(output==TRUE) printf("%s >> PLAW ERROR : exponent magntiude should descend outwards%s\n", - RED, - COLOUR_RESET); + stardata->store->colours[RED], + stardata->store->colours[COLOUR_RESET]); fail=TRUE; } } diff --git a/src/disc/disc_convergence_status.c b/src/disc/disc_convergence_status.c index 2171a9789..94e5795ab 100644 --- a/src/disc/disc_convergence_status.c +++ b/src/disc/disc_convergence_status.c @@ -4,7 +4,8 @@ No_empty_translation_unit_warning; #ifdef DISCS -void disc_convergence_status(const char * const s, +void disc_convergence_status(struct stardata_t * const stardata, + const char * const s, const struct disc_t * const disc, const struct binary_system_t * const binary) { diff --git a/src/disc/disc_debug.h b/src/disc/disc_debug.h index 1976758e3..6d197bfd4 100644 --- a/src/disc/disc_debug.h +++ b/src/disc/disc_debug.h @@ -20,7 +20,7 @@ __FILE__, \ COLOUR_LINENUMBERS, \ __LINE__, \ - COLOUR_RESET); \ + stardata->store->colours[COLOUR_RESET]); \ fprintf(DISC_DEBUG_STREAM,__VA_ARGS__); \ fflush(DISC_DEBUG_STREAM); \ } diff --git a/src/disc/disc_derivatives.c b/src/disc/disc_derivatives.c index d9ff51539..01026016a 100644 --- a/src/disc/disc_derivatives.c +++ b/src/disc/disc_derivatives.c @@ -27,7 +27,7 @@ void disc_derivatives(struct disc_t * const disc, /* * Update derived variables, just in case */ - disc_calculate_derived_variables(disc,binary); + disc_calculate_derived_variables(stardata,disc,binary); /* * Reset evaporation boundaries : they'll @@ -119,7 +119,8 @@ void disc_derivatives(struct disc_t * const disc, disc->Rin, Revap) * stardata->preferences->cbdisc_mass_loss_inner_L2_cross_multiplier; - Revap = disc_mass_radius(disc, + Revap = disc_mass_radius(stardata, + disc, binary, dm); Revap = multiplier * Revap + @@ -188,7 +189,7 @@ void disc_derivatives(struct disc_t * const disc, * Set up the Owen+ (2012) disc evaporation function * for the current disc and binary system. */ - disc_Owen_2012_normalize(disc,binary); + disc_Owen_2012_normalize(stardata,disc,binary); if(Is_really_not_zero(disc->Owen2012_norm)) { @@ -350,6 +351,7 @@ void disc_derivatives(struct disc_t * const disc, disc->Rout / R_SUN); double jdot = disc_Owen_2012_angmom_integral( + stardata, disc, binary, (Is_zero(disc->Revap_in) ? disc->Rin : Min(disc->Revap_in,disc->Rin)), @@ -556,7 +558,7 @@ void disc_derivatives(struct disc_t * const disc, (P_ISM/Max(1e-3,Min(fsmooth,1.0))) : P_ISM; double P = disc_pressure(disc->Rout,disc,binary); - double R = disc_pressure_radius(disc,binary,Ptarget); + double R = disc_pressure_radius(stardata,disc,binary,Ptarget); double M = disc_partial_mass(disc,R,disc->Rout); double J = disc_partial_angular_momentum(disc,binary,R,disc->Rout); double f = - stardata->preferences->cbdisc_mass_loss_ISM_ram_pressure_multiplier; @@ -612,7 +614,8 @@ void disc_derivatives(struct disc_t * const disc, * Interpolate according to the multiplier. */ double R = - disc_pressure_radius(disc,binary,P_ISM) * multiplier + disc_pressure_radius(stardata, + disc,binary,P_ISM) * multiplier + disc->Rout * (1.0 - multiplier); diff --git a/src/disc/disc_determine_zone_radii.c b/src/disc/disc_determine_zone_radii.c index 973fddcfa..3fdc0986e 100644 --- a/src/disc/disc_determine_zone_radii.c +++ b/src/disc/disc_determine_zone_radii.c @@ -12,7 +12,8 @@ No_empty_translation_unit_warning; * Determine disc zone radii */ -Boolean disc_determine_zone_radii(struct disc_t * const disc) +Boolean disc_determine_zone_radii(struct stardata_t * const stardata, + struct disc_t * const disc) { int method = _NEW; @@ -63,7 +64,10 @@ Boolean disc_determine_zone_radii(struct disc_t * const disc) printf("Initial 3-zone setup (disc->Rin=%g disc->Rout=%g)\n", disc->Rin, disc->Rout); - disc_show_thermal_zones(disc,P,nzones); + disc_show_thermal_zones(stardata, + disc, + P, + nzones); } /* @@ -88,7 +92,7 @@ Boolean disc_determine_zone_radii(struct disc_t * const disc) if(DEBUG_ZONE_RADII) { printf("Perhaps removed inner radiative zone?\n"); - disc_show_thermal_zones(disc,P,nzones); + disc_show_thermal_zones(stardata,disc,P,nzones); } /* make sure all radii are in the disc */ @@ -101,7 +105,7 @@ Boolean disc_determine_zone_radii(struct disc_t * const disc) if(DEBUG_ZONE_RADII) { printf("Make sure all radii are in the disc\n"); - disc_show_thermal_zones(disc,P,nzones); + disc_show_thermal_zones(stardata,disc,P,nzones); } /* eliminate zones with zero or negative width */ @@ -124,7 +128,7 @@ Boolean disc_determine_zone_radii(struct disc_t * const disc) if(DEBUG_ZONE_RADII) { printf("Eliminated zones with <=0 width\n"); - disc_show_thermal_zones(disc,P,nzones); + disc_show_thermal_zones(stardata,disc,P,nzones); } @@ -158,7 +162,10 @@ Boolean disc_determine_zone_radii(struct disc_t * const disc) if(DEBUG_ZONE_RADII) { printf("Final disc setup (%u zones)\n",disc->n_thermal_zones); - disc_show_thermal_zones(disc,disc->thermal_zones,disc->n_thermal_zones); + disc_show_thermal_zones(stardata, + disc, + disc->thermal_zones, + disc->n_thermal_zones); } } diff --git a/src/disc/disc_initial_structure.c b/src/disc/disc_initial_structure.c index d3c9901e1..5793d8213 100644 --- a/src/disc/disc_initial_structure.c +++ b/src/disc/disc_initial_structure.c @@ -109,7 +109,7 @@ void disc_initial_structure(struct disc_t * const disc, } Safe_free(s); - disc_convergence_status("Initial",disc,binary); + disc_convergence_status(stardata,"Initial",disc,binary); Discdebug(1,"initret "); } diff --git a/src/disc/disc_initialize_disc.c b/src/disc/disc_initialize_disc.c index fe223c8f0..5b770c99d 100644 --- a/src/disc/disc_initialize_disc.c +++ b/src/disc/disc_initialize_disc.c @@ -87,7 +87,9 @@ void disc_initialize_disc(struct stardata_t * const stardata, if(DISC_DEBUG) { - disc_show_disc(disc,binary); + disc_show_disc(stardata, + disc, + binary); } if(binary != binary_in) diff --git a/src/disc/disc_inner_edge_mass_loss.c b/src/disc/disc_inner_edge_mass_loss.c index c868acdfe..1313b60c2 100644 --- a/src/disc/disc_inner_edge_mass_loss.c +++ b/src/disc/disc_inner_edge_mass_loss.c @@ -90,10 +90,10 @@ double disc_inner_edge_mass_loss(struct stardata_t * const stardata, Discdebug(1, "Tried to remove more than limits allow : adjust\n"); - double R_M = disc_mass_radius(olddisc,binary,dm); + const double R_M = disc_mass_radius(stardata,olddisc,binary,dm); Discdebug(1,"R_M = %g\n",R_M); - double R_J = disc_angular_momentum_radius(olddisc,binary,dj); + const double R_J = disc_angular_momentum_radius(stardata,olddisc,binary,dj); Discdebug(1,"R_J = %g\n",R_J); newdisc->Revap_in = Min(R_M,R_J); diff --git a/src/disc/disc_logging.c b/src/disc/disc_logging.c index 92b08a672..b963cd14f 100644 --- a/src/disc/disc_logging.c +++ b/src/disc/disc_logging.c @@ -200,7 +200,7 @@ void disc_logging(struct stardata_t * const stardata, const double P_ISM = disc->PISM; const double R_ISM = disc->RISM; const double Revap_in = disc->Revap_in; - const double min_Toomre_Q = disc_minimum_Toomre_Q(disc,b); + const double min_Toomre_Q = disc_minimum_Toomre_Q(stardata,disc,b); //Printf("DISC_ECC %g\n", //stardata->common.orbit.eccentricity); @@ -658,8 +658,8 @@ void disc_logging(struct stardata_t * const stardata, const double R_ISM = disc->RISM; const double Revap_in = disc->Revap_in; const double Revap_out = disc->Revap_out; - const double RMhalf = disc_half_mass_radius(disc,b); - const double RJhalf = disc_half_angular_momentum_radius(disc,b); + const double RMhalf = disc_half_mass_radius(stardata,disc,b); + const double RJhalf = disc_half_angular_momentum_radius(stardata,disc,b); const double Mdotwind = Disc_Mdot(DISC_LOSS_GLOBAL)+ Disc_Mdot(DISC_LOSS_ISM)+ @@ -679,11 +679,14 @@ void disc_logging(struct stardata_t * const stardata, const double hwind = Is_really_not_zero(Mdotwind) ? (Jdotwind / Mdotwind) : 0.0; - const double min_Toomre_Q = disc_minimum_Toomre_Q(disc,b); + const double min_Toomre_Q = disc_minimum_Toomre_Q(stardata,disc,b); /* zone crossing radii */ double * RZcross; - disc_zone_crossing_radii(disc,b,&RZcross); + disc_zone_crossing_radii(stardata, + disc, + b, + &RZcross); /* output */ binary_c_filter_fprintf( diff --git a/src/disc/disc_new_zone_list.c b/src/disc/disc_new_zone_list.c index 4bb2c8def..71dd80f53 100644 --- a/src/disc/disc_new_zone_list.c +++ b/src/disc/disc_new_zone_list.c @@ -3,7 +3,8 @@ No_empty_translation_unit_warning; #ifdef DISCS -Boolean disc_new_zone_list(struct disc_t * const disc, +Boolean disc_new_zone_list(struct stardata_t * const stardata, + struct disc_t * const disc, const struct binary_system_t * const binary, struct disc_thermal_zone_t * const thermal_zones) { diff --git a/src/disc/disc_nsector.c b/src/disc/disc_nsector.c index 60da83472..d592db8fa 100644 --- a/src/disc/disc_nsector.c +++ b/src/disc/disc_nsector.c @@ -187,7 +187,7 @@ void disc_nsector2(struct stardata_t * stardata MAYBE_UNUSED, disc->Rout ); - int status = disc_build_disc_zones(disc,binary); + int status = disc_build_disc_zones(stardata,disc,binary); unsigned int i; if(DISC_DEBUG>=2) diff --git a/src/disc/disc_outer_edge_mass_loss.c b/src/disc/disc_outer_edge_mass_loss.c index 36add72ad..00ebc2a60 100644 --- a/src/disc/disc_outer_edge_mass_loss.c +++ b/src/disc/disc_outer_edge_mass_loss.c @@ -75,7 +75,7 @@ double disc_outer_edge_mass_loss(struct stardata_t * const stardata, */ newdisc->Revap_out = Max( newdisc->Rin, - disc_mass_radius(olddisc,binary,olddisc->M - dm) + disc_mass_radius(stardata,olddisc,binary,olddisc->M - dm) //,disc_angular_momentum_radius(olddisc,binary,olddisc->J - dj) ); diff --git a/src/disc/disc_photoevaporation.c b/src/disc/disc_photoevaporation.c index 0e09f74c3..bdcb342a4 100644 --- a/src/disc/disc_photoevaporation.c +++ b/src/disc/disc_photoevaporation.c @@ -11,7 +11,8 @@ No_empty_translation_unit_warning; * based on Owen, Clarke and Ercolano (2012, MNRAS 433, 1880). */ -double disc_Owen_2012_total_mdot(const struct binary_system_t * const binary) +double disc_Owen_2012_total_mdot(struct stardata_t * const stardata, + const struct binary_system_t * const binary) { /* * Equation B4 of Owen et al. (2012) gives the total @@ -151,8 +152,9 @@ double disc_Owen_2012_sigmadot(struct disc_t * const disc, return sigmadot; } -void disc_Owen_2012_normalize(struct disc_t * disc, - const struct binary_system_t * binary) +void disc_Owen_2012_normalize(struct stardata_t * const stardata, + struct disc_t * const disc, + const struct binary_system_t * const binary) { /* * Re-calculate the Owen 2012 normalization for the @@ -160,7 +162,7 @@ void disc_Owen_2012_normalize(struct disc_t * disc, * Do this from 0 to 100AU, this should be sufficient. */ disc->Owen2012_norm = 1.0; - const double total_mdot = disc_Owen_2012_total_mdot(binary); + const double total_mdot = disc_Owen_2012_total_mdot(stardata,binary); /* * Calculate disc mass loss timescale, if it's longer @@ -263,8 +265,9 @@ double disc_Owen_2012_sigmadot_integral(struct disc_t * disc, } -double disc_Owen_2012_angmom_integral(struct disc_t * disc, - const struct binary_system_t * binary, +double disc_Owen_2012_angmom_integral(struct stardata_t * const stardata, + struct disc_t * const disc, + const struct binary_system_t * const binary, const double Rin, const double Rout) { @@ -276,13 +279,14 @@ double disc_Owen_2012_angmom_integral(struct disc_t * disc, return Is_really_zero(disc->Owen2012_norm) ? 0.0 : GSL_integrator(Rin, - Rout, - PHOTOEVAPORATION_GSL_INTEGRAL_TOLERANCE, - &error, - GSL_INTEGRATOR_QAG, - &Owen2012_angmom_f, - disc, - binary); + Rout, + PHOTOEVAPORATION_GSL_INTEGRAL_TOLERANCE, + &error, + GSL_INTEGRATOR_QAG, + &Owen2012_angmom_f, + stardata, + disc, + binary); } @@ -290,8 +294,9 @@ static double Owen2012_angmom_f(double x, void *params) { Map_GSL_params(params,args); - Map_varg(struct disc_t *,disc,args); - Map_varg(struct binary_system_t *,binary,args); + Map_varg(struct stardata_t const *,stardata,args); + Map_varg(struct disc_t DISC_CONST *,disc,args); + Map_varg(struct binary_system_t const *,binary,args); va_end(args); const double R = x; const double h = disc_specific_angular_momentum(R,binary); diff --git a/src/disc/disc_prototypes.h b/src/disc/disc_prototypes.h index 549b86150..0903f5e80 100644 --- a/src/disc/disc_prototypes.h +++ b/src/disc/disc_prototypes.h @@ -80,7 +80,8 @@ double disc_velocity(const double radius, double disc_gravitational_pressure(const double radius, DISC_CONST struct disc_t * const disc, const struct binary_system_t * const binary); -double disc_pressure_radius(struct disc_t * const disc, +double disc_pressure_radius(struct stardata_t * const stardata, + struct disc_t * const disc, const struct binary_system_t * const binary, const double P); double disc_scale_height(const double radius, @@ -93,7 +94,8 @@ double disc_critical_surface_density_for_gravitational_collapse(const double rad double disc_Toomre_Q(const double radius, struct disc_t * const disc, const struct binary_system_t * const binary); -double disc_minimum_Toomre_Q(const struct disc_t * const disc, +double disc_minimum_Toomre_Q(struct stardata_t * const stardata, + const struct disc_t * const disc, const struct binary_system_t * const binary); double disc_opacity(const double radius, @@ -163,19 +165,23 @@ double generic_power_law(double radius, Disc_zone_counter disc_nearest_zone_n(const double radius, const struct disc_t * const disc); -void cbdisc_eccentricity_pumping_rate(struct stardata_t * stardata, - struct disc_t * disc, - const struct binary_system_t * binary, - double * edot, - double * jdot); -double disc_half_angular_momentum_radius(const struct disc_t * const disc, +void cbdisc_eccentricity_pumping_rate(struct stardata_t * const stardata, + struct disc_t * const disc, + const struct binary_system_t * const binary, + double * const edot, + double * const jdot); +double disc_half_angular_momentum_radius(struct stardata_t * const stardata, + const struct disc_t * const disc, const struct binary_system_t * const binary); -double disc_half_mass_radius(const struct disc_t * const disc, +double disc_half_mass_radius(struct stardata_t * stardata, + const struct disc_t * const disc, const struct binary_system_t * const binary); -double disc_mass_radius(const struct disc_t * const disc, +double disc_mass_radius(struct stardata_t * stardata, + const struct disc_t * const disc, const struct binary_system_t * const binary, const double m); -double disc_angular_momentum_radius(const struct disc_t * const disc, +double disc_angular_momentum_radius(struct stardata_t * const stardata, + const struct disc_t * const disc, const struct binary_system_t * const binary, const double j); double disc_inner_edge_accretion_f(struct stardata_t * stardata); @@ -184,7 +190,8 @@ double Pure_function disc_angular_momentum_flux(const double radius, const struct disc_t * const disc, const struct binary_system_t * const binary); -double disc_Owen_2012_total_mdot(const struct binary_system_t * const binary); +double disc_Owen_2012_total_mdot(struct stardata_t * const stardata, + const struct binary_system_t * const binary); double disc_Owen_2012_sigmadot(struct disc_t * const disc, const struct binary_system_t * const binary, @@ -197,32 +204,38 @@ double disc_Owen_2012_sigmadot_integral(struct disc_t * disc, const struct binary_system_t * binary, const double Rin, const double Rout); -void disc_Owen_2012_normalize(struct disc_t * disc, - const struct binary_system_t * binary); +void disc_Owen_2012_normalize(struct stardata_t * const stardata, + struct disc_t * const disc, + const struct binary_system_t * const binary); double disc_Owen_2012_mdot(struct disc_t * disc, const struct binary_system_t * binary, const double Rin, const double Rout); -double disc_Owen_2012_angmom_integral(struct disc_t * disc, - const struct binary_system_t * binary, +double disc_Owen_2012_angmom_integral(struct stardata_t * const stardata, + struct disc_t * const disc, + const struct binary_system_t * const binary, const double Rin, const double Rout); -void disc_show_thermal_zones(struct disc_t * disc, +void disc_show_thermal_zones(struct stardata_t * const stardata, + struct disc_t * const disc, const struct disc_thermal_zone_t * zones, const int n); -void disc_show_disc(struct disc_t * disc, - const struct binary_system_t * binary); +void disc_show_disc(struct stardata_t * const stardata, + struct disc_t * const disc, + const struct binary_system_t * const binary); double disc_Rcross(const struct disc_thermal_zone_t * const z1, const struct disc_thermal_zone_t * const z2); -Boolean disc_determine_zone_radii(struct disc_t * const disc); +Boolean disc_determine_zone_radii(struct stardata_t * const stardata, + struct disc_t * const disc); -int disc_build_disc_zones(struct disc_t * const disc, +int disc_build_disc_zones(struct stardata_t * const stardata, + struct disc_t * const disc, const struct binary_system_t * const binary); void disc_initial_radiative_guesses(const struct binary_system_t * const binary, @@ -233,7 +246,8 @@ double disc_ring_radius(const struct disc_t * const disc, void disc_make_derived_powerlaws(struct disc_t * const disc, const struct binary_system_t * const binary); -Boolean disc_new_zone_list(struct disc_t * const disc, +Boolean disc_new_zone_list(struct stardata_t * const stardata, + struct disc_t * const disc, const struct binary_system_t * const binary, struct disc_thermal_zone_t * const thermal_zones); @@ -315,7 +329,8 @@ void disc_nsector(unsigned int n, double * residual, void * p); -void disc_convergence_status(const char * const s, +void disc_convergence_status(struct stardata_t * const stardata, + const char * const s, const struct disc_t * const disc, const struct binary_system_t * const binary); @@ -379,7 +394,8 @@ void disc_edge_stripping(struct stardata_t * const stardata, struct disc_t * const olddisc, const struct binary_system_t * const binary); -void disc_calculate_derived_variables(struct disc_t * const disc, +void disc_calculate_derived_variables(struct stardata_t * const stardata, + struct disc_t * const disc, const struct binary_system_t * const binary); void disc_edge_loss_angular_momentum_flux(struct disc_t * const disc, @@ -394,7 +410,8 @@ void disc_mass_changes(struct stardata_t * const stardata, Boolean disc_rezone(struct disc_t * const disc, const struct binary_system_t * const binary); -void disc_setup_zones(struct disc_t * const disc, +void disc_setup_zones(struct stardata_t * const stardata, + struct disc_t * const disc, const struct binary_system_t * const binary); void disc_set_temperature_power_laws(struct disc_t * const disc); @@ -428,7 +445,8 @@ int disc_setup_convergence_parameter_types_and_constraints(struct stardata_t * c //#pragma GCC diagnostic push //#pragma GCC diagnostic ignored "-Wpedantic" -void disc_set_disc_initial_guess(struct disc_t * const disc, +void disc_set_disc_initial_guess(struct stardata_t * const stardata, + struct disc_t * const disc, const int iguess, int n,/* VLA initial_guesses REQUIRES this to be type int, not const int */ const disc_parameter * const parameter_types, @@ -483,7 +501,8 @@ void disc_equation_checker(const double r, int disc_n_valid_zones(const struct disc_t * const disc); -void disc_zone_crossing_radii(struct disc_t * const disc, +void disc_zone_crossing_radii(struct stardata_t * const stardata, + struct disc_t * const disc, const struct binary_system_t * const binary, double ** radii_p); diff --git a/src/disc/disc_quadsector.c b/src/disc/disc_quadsector.c index aad30bd24..1ee6c88e3 100644 --- a/src/disc/disc_quadsector.c +++ b/src/disc/disc_quadsector.c @@ -95,7 +95,7 @@ void disc_quadsector2(struct stardata_t * stardata MAYBE_UNUSED, * so is not a static function. */ - int status = disc_build_disc_zones(disc,binary); + int status = disc_build_disc_zones(stardata,disc,binary); Discdebug(2, "Quadsector: Built disc zones: %s : Rin=%g Rout=%g\n", diff --git a/src/disc/disc_set_disc_initial_guess.c b/src/disc/disc_set_disc_initial_guess.c index 7050b7c59..3081a7f51 100644 --- a/src/disc/disc_set_disc_initial_guess.c +++ b/src/disc/disc_set_disc_initial_guess.c @@ -9,7 +9,8 @@ No_empty_translation_unit_warning; #endif #include "disc_constraints.h" -void disc_set_disc_initial_guess(struct disc_t * const disc, +void disc_set_disc_initial_guess(struct stardata_t * const stardata, + struct disc_t * const disc, const int iguess, int n,/* VLA initial_guesses REQUIRES this to be type int, not const int */ const disc_parameter * const parameter_types, diff --git a/src/disc/disc_setup_zones.c b/src/disc/disc_setup_zones.c index 1578ab76e..31af879a5 100644 --- a/src/disc/disc_setup_zones.c +++ b/src/disc/disc_setup_zones.c @@ -2,7 +2,8 @@ No_empty_translation_unit_warning; #ifdef DISCS -void disc_setup_zones(struct disc_t * const disc, +void disc_setup_zones(struct stardata_t * const stardata, + struct disc_t * const disc, const struct binary_system_t * const binary) { /* @@ -10,7 +11,7 @@ void disc_setup_zones(struct disc_t * const disc, * derive the various power laws in the disc, * perhaps check them for consistency. */ - if(disc_determine_zone_radii(disc) == TRUE) + if(disc_determine_zone_radii(stardata,disc) == TRUE) { disc_make_derived_powerlaws(disc,binary); diff --git a/src/disc/disc_show_disc.c b/src/disc/disc_show_disc.c index a6abbc138..3ed34ba7a 100644 --- a/src/disc/disc_show_disc.c +++ b/src/disc/disc_show_disc.c @@ -3,8 +3,9 @@ No_empty_translation_unit_warning; #ifdef DISCS -void disc_show_disc(struct disc_t * disc, - const struct binary_system_t * binary) +void disc_show_disc(struct stardata_t * const stardata, + struct disc_t * const disc, + const struct binary_system_t * const binary) { printf("===========================================================\n"); printf("DISC %p at lifetime = %20.12g (%g 20.12y), M=%g (%g Msun), J=%g, F=%g, alpha=%g, gamma=%g, torqueF=%g, fuv=%g, kappa=%g, Rin=%g cm (%g Rsun %g AU), Rout=%g (%g Rsun %g AU), dt=%g, Tvisc0=%g, sigma0=%g, mu=%g, T(Rin)=%g; H(in)/R(in)=%g L=%g L_sun : solver %s guess %d\n", @@ -32,7 +33,10 @@ void disc_show_disc(struct disc_t * disc, Solver_string(disc->solver), disc->guess ); - disc_show_thermal_zones(disc,disc->thermal_zones,disc->n_thermal_zones); + disc_show_thermal_zones(stardata, + disc, + disc->thermal_zones, + disc->n_thermal_zones); double _M = disc_total_mass(disc); double _J = disc_total_angular_momentum(disc,binary); double _F = disc_total_angular_momentum_flux(disc,binary); diff --git a/src/disc/disc_show_thermal_zones.c b/src/disc/disc_show_thermal_zones.c index 54814d896..5d688a65a 100644 --- a/src/disc/disc_show_thermal_zones.c +++ b/src/disc/disc_show_thermal_zones.c @@ -5,7 +5,8 @@ No_empty_translation_unit_warning; /* * show disc thermal zone structure */ -void disc_show_thermal_zones(struct disc_t * disc, +void disc_show_thermal_zones(struct stardata_t * const stardata, + struct disc_t * const disc, const struct disc_thermal_zone_t * zones, const int n) { @@ -27,8 +28,8 @@ void disc_show_thermal_zones(struct disc_t * disc, } } -#define NORMAL_COLOUR(z) (z->valid==TRUE ? BRIGHT_GREEN : RED) -#define ERROR_COLOUR (YELLOW) +#define NORMAL_COLOUR(z) (z->valid==TRUE ? stardata->store->colours[BRIGHT_GREEN] : stardata->store->colours[RED]) +#define ERROR_COLOUR (stardata->store->colours[YELLOW]) #define ASSERT_COLOUR(A) ((A)==TRUE ? (ERROR_COLOUR) : "") for(i=0;i<max;i++) @@ -86,7 +87,7 @@ void disc_show_thermal_zones(struct disc_t * disc, printf(": prefactor=%g exponent=%g%s Tstart=%g (from A0=%g R0=%g %s exponent=%g) T(rstart)=%g Sigma(rstart)=%g [zone M=%20.10g Msun] %s\n", z->Tlaw.A0, z->Tlaw.exponent, - CYAN, + stardata->store->colours[CYAN], ( Is_really_zero(z->Tlaw.A1) ? // power law not yet complete @@ -100,7 +101,7 @@ void disc_show_thermal_zones(struct disc_t * disc, power_law(&z->Tlaw,z->rstart), power_law(&z->power_laws[POWER_LAW_SIGMA],z->rstart), dmzone/M_SUN, - COLOUR_RESET + stardata->store->colours[COLOUR_RESET] ); fflush(stdout); } diff --git a/src/disc/disc_structure_functions.c b/src/disc/disc_structure_functions.c index 8bd48f294..7dad8579a 100644 --- a/src/disc/disc_structure_functions.c +++ b/src/disc/disc_structure_functions.c @@ -211,7 +211,8 @@ double disc_Toomre_Q(const double radius, static double Toomre_Q_minimizer(double x, void * params); -double disc_minimum_Toomre_Q(const struct disc_t * const disc, +double disc_minimum_Toomre_Q(struct stardata_t * const stardata, + const struct disc_t * const disc, const struct binary_system_t * const binary) { /* @@ -413,7 +414,8 @@ double disc_viscous_timescale(const double radius, (Pow2(radius)/(5.0 * disc_kinematic_viscosity(radius,disc,binary))); } -double disc_half_angular_momentum_radius(const struct disc_t * const disc, +double disc_half_angular_momentum_radius(struct stardata_t * const stardata, + const struct disc_t * const disc, const struct binary_system_t * const binary) { /* @@ -421,7 +423,10 @@ double disc_half_angular_momentum_radius(const struct disc_t * const disc, * momentum radius. */ - double rjhalf = disc_angular_momentum_radius(disc,binary,disc->J*0.5); + double rjhalf = disc_angular_momentum_radius(stardata, + disc, + binary, + disc->J*0.5); /* * On error, return the previous value, which may be zero. @@ -440,7 +445,8 @@ double disc_half_angular_momentum_radius(const struct disc_t * const disc, } -double disc_angular_momentum_radius(const struct disc_t * const disc, +double disc_angular_momentum_radius(struct stardata_t * const stardata, + const struct disc_t * const disc, const struct binary_system_t * const binary, const double j) { @@ -480,6 +486,7 @@ double disc_angular_momentum_radius(const struct disc_t * const disc, DISC_BISECT_RJ_ATTEMPTS, DISC_BISECT_RJ_USELOG, 1.0, + stardata, disc, binary, j); @@ -500,7 +507,8 @@ double disc_angular_momentum_radius(const struct disc_t * const disc, return radius; } -double disc_half_mass_radius(const struct disc_t * const disc, +double disc_half_mass_radius(struct stardata_t * const stardata, + const struct disc_t * const disc, const struct binary_system_t * const binary) { @@ -510,12 +518,14 @@ double disc_half_mass_radius(const struct disc_t * const disc, * * Returns 0.0 on error. */ - return disc_mass_radius(disc, + return disc_mass_radius(stardata, + disc, binary, disc->M*0.5); } -double disc_mass_radius(const struct disc_t * const disc, +double disc_mass_radius(struct stardata_t * const stardata, + const struct disc_t * const disc, const struct binary_system_t * const binary, const double m) { @@ -549,6 +559,7 @@ double disc_mass_radius(const struct disc_t * const disc, DISC_BISECT_RM_ATTEMPTS, DISC_BISECT_RM_USELOG, 1.0, + stardata, disc, binary, m); @@ -578,6 +589,7 @@ static double disc_angular_momentum_radius_bisector(const double r, * Bisect the half angular momentum radius */ Map_GSL_params(p,args); + Map_varg(struct stardata_t *,stardata,args); Map_varg(struct disc_t *,disc,args); Map_varg(struct binary_system_t *,binary,args); Map_varg(const double,j,args); @@ -622,6 +634,7 @@ static double disc_mass_radius_bisector(const double r, * Bisect for a given mass */ Map_GSL_params(p,args); + Map_varg(struct stardata_t *,stardata,args); Map_varg(struct disc_t *,disc,args); Map_varg(struct binary_system_t *, binary,args); Map_varg(const double,m,args); @@ -647,7 +660,8 @@ static double disc_mass_radius_bisector(const double r, } -double disc_pressure_radius(struct disc_t * const disc, +double disc_pressure_radius(struct stardata_t * const stardata, + struct disc_t * const disc, const struct binary_system_t * const binary, const double P) { diff --git a/src/disc/disc_trisector.c b/src/disc/disc_trisector.c index 3799c93e4..b9b19bd21 100644 --- a/src/disc/disc_trisector.c +++ b/src/disc/disc_trisector.c @@ -97,7 +97,7 @@ void disc_trisector2(struct stardata_t * stardata MAYBE_UNUSED, * called from elsewhere for debugging purposes, * so is not a static function. */ - int status = disc_build_disc_zones(disc,binary); + int status = disc_build_disc_zones(stardata,disc,binary); DD("Trisector: Built disc zones: %s : Rin=%g Rout=%g Rsun\n", status==DISC_ZONES_OK ? "ok" : "failed", diff --git a/src/disc/disc_zone_crossing_radii.c b/src/disc/disc_zone_crossing_radii.c index c38837cb0..d36de3267 100644 --- a/src/disc/disc_zone_crossing_radii.c +++ b/src/disc/disc_zone_crossing_radii.c @@ -4,6 +4,7 @@ No_empty_translation_unit_warning; #ifdef DISCS void disc_zone_crossing_radii( + struct stardata_t * const stardata, struct disc_t * const disc, const struct binary_system_t * const binary, double ** radii_p @@ -18,7 +19,7 @@ void disc_zone_crossing_radii( Malloc(sizeof(struct disc_thermal_zone_t)* (DISCS_MAX_N_ZONES)); - if(disc_new_zone_list(disc,binary,P) == DISC_ZONES_OK) + if(disc_new_zone_list(stardata,disc,binary,P) == DISC_ZONES_OK) { Disc_zone_counter i,j,current=0; diff --git a/src/disc/evolve_disc.c b/src/disc/evolve_disc.c index 39293742c..5c1fb20d0 100644 --- a/src/disc/evolve_disc.c +++ b/src/disc/evolve_disc.c @@ -69,7 +69,10 @@ void evolve_disc(struct stardata_t * const stardata, * sure the code is working */ - disc_convergence_status("post-init-binary-structure",disc,&binary); + disc_convergence_status(stardata, + "post-init-binary-structure", + disc, + &binary); /* choose the most evolved star */ const Star_number nstar = stardata->star[0].stellar_type > stardata->star[1].stellar_type ? 0 : 1; diff --git a/src/ensemble/ensemble_disc_log.c b/src/ensemble/ensemble_disc_log.c index 2e76e1954..50924baba 100644 --- a/src/ensemble/ensemble_disc_log.c +++ b/src/ensemble/ensemble_disc_log.c @@ -108,8 +108,8 @@ void ensemble_disc_log(struct stardata_t * const stardata, const double Tin = disc_inner_edge_temperature(disc); const double Tout = disc_outer_edge_temperature(disc); const double Idisc = disc_total_moment_of_inertia(disc); - const double RMhalf = disc_half_mass_radius(disc,b); - const double RJhalf = disc_half_angular_momentum_radius(disc,b); + const double RMhalf = disc_half_mass_radius(stardata,disc,b); + const double RJhalf = disc_half_angular_momentum_radius(stardata,disc,b); const Star_number overflower = stardata->model.comenv_overflower; const double Mdotwind = Disc_Mdot(DISC_LOSS_GLOBAL)+ @@ -127,7 +127,7 @@ void ensemble_disc_log(struct stardata_t * const stardata, Disc_Jdot(DISC_LOSS_OUTER_EDGE_STRIP); const double hwind = Is_really_not_zero(Mdotwind) ? (Jdotwind / Mdotwind) : 0.0; - const double min_Toomre_Q = disc_minimum_Toomre_Q(disc,b); + const double min_Toomre_Q = disc_minimum_Toomre_Q(stardata,disc,b); const double HRin = Disc_scale_height_ratio(in); const double HRout = Disc_scale_height_ratio(out); if(disc->firstlog == TRUE) diff --git a/src/evolution/apply_derivatives.c b/src/evolution/apply_derivatives.c index 7de062283..1e73d287e 100644 --- a/src/evolution/apply_derivatives.c +++ b/src/evolution/apply_derivatives.c @@ -94,13 +94,13 @@ int apply_derivatives(struct stardata_t * const stardata, retval = SYSTEM_ACTION_CONTINUE_RLOF; } Dprint("%snew dM/dt M1=%g M2=%g RLOF %g separation %30.20e, new Jorb %30.20e\n%s", - MAGENTA, + stardata->store->colours[MAGENTA], stardata->star[0].mass, stardata->star[1].mass, stardata->star[1].derivative[DERIVATIVE_STELLAR_MASS_RLOF_LOSS], stardata->common.orbit.separation, stardata->common.orbit.angular_momentum, - COLOUR_RESET); + stardata->store->colours[COLOUR_RESET]); return retval; } diff --git a/src/evolution/evolve_system_binary_c.c b/src/evolution/evolve_system_binary_c.c index 143fd4c2e..7c3382f81 100644 --- a/src/evolution/evolve_system_binary_c.c +++ b/src/evolution/evolve_system_binary_c.c @@ -11,13 +11,13 @@ No_empty_translation_unit_warning; /* eprint is the local debugging statement */ #define eprint(...) \ fprintf(stdout,"%sZOOM dt_zoomfac %g : M1 %g %g : ", \ - YELLOW, \ + stardata->store->colours[YELLOW], \ stardata->model.dt_zoomfac, \ stardata->star[0].mass, \ stardata->star[0].phase_start_mass); \ fprintf(stdout,__VA_ARGS__); \ fflush(stdout); \ - fprintf(stdout,"%s",COLOUR_RESET); + fprintf(stdout,"%s",stardata->store->colours[COLOUR_RESET]); #undef eprint #define eprint(...) /* do nothing */ diff --git a/src/evolution/time_evolution.h b/src/evolution/time_evolution.h index 43e2eab75..4a40ce2cb 100644 --- a/src/evolution/time_evolution.h +++ b/src/evolution/time_evolution.h @@ -5,7 +5,7 @@ /* * Macros used in time_evolution.c */ -//#define eprint(...) printf("%s",MAGENTA);printf(__VA_ARGS__);printf("M1=%g\n",stardata->star[0].phase_start_mass);printf("%s",COLOUR_RESET);fflush(stdout); +//#define eprint(...) printf("%s",stardata->store->colours[MAGENTA]);printf(__VA_ARGS__);printf("M1=%g\n",stardata->star[0].phase_start_mass);printf("%s",stardata->store->colours[COLOUR_RESET]);fflush(stdout); #define eprint(...) /* do nothing */ #define Modulate_solver_timestep(F) \ @@ -22,8 +22,8 @@ #ifdef NEW_ADAPTIVE_RLOF_CODE -#define __X1 printf("%s FIRST pre-RLOF STEP %s\n",RED,COLOUR_RESET); -#define __X2 printf("%s DONE FIRST STEP %s\n",RED,COLOUR_RESET); +#define __X1 printf("%s FIRST pre-RLOF STEP %s\n",stardata->store->colours[RED],stardata->store->colours[COLOUR_RESET]); +#define __X2 printf("%s DONE FIRST STEP %s\n",stardata->store->colours[RED],stardata->store->colours[COLOUR_RESET]); #else // NEW_ADAPTIVE_RLOF_CODE #define __X1 /* do nothing */ #define __X2 /* do nothing */ diff --git a/src/evolution/update_the_time.c b/src/evolution/update_the_time.c index 0c63e32be..a6abd61b6 100644 --- a/src/evolution/update_the_time.c +++ b/src/evolution/update_the_time.c @@ -17,10 +17,10 @@ void update_the_time(struct stardata_t * RESTRICT const stardata) if(stardata->preferences->timestep_logging == TRUE) { printf("%sincrease time by dtm=%30.12e to %30.12e (log=%30.20g)%s\n", - GREEN, + stardata->store->colours[GREEN], stardata->model.dtm, stardata->model.time, log10(Max(1e-99,stardata->model.time)), - COLOUR_RESET); + stardata->store->colours[COLOUR_RESET]); } } diff --git a/src/logging/ansi_colours.h b/src/logging/ansi_colours.h index 83251ee46..a3ea4488e 100644 --- a/src/logging/ansi_colours.h +++ b/src/logging/ansi_colours.h @@ -1,3 +1,9 @@ +#pragma once + +#ifndef ANSI_COLOURS_H +#define ANSI_COLOURS_H + + #ifdef USE_ANSI_COLOURS /* @@ -7,52 +13,60 @@ * character, also written (in non-ISO, but works * in gcc and clang) \e */ +#define ANSI_COLOURS_LIST \ + X( BLACK, "\x1B[0;30m") \ + X( RED, "\x1B[0;31m") \ + X( GREEN, "\x1B[0;32m") \ + X( YELLOW, "\x1B[0;33m") \ + X( ORANGE, "\x1B[0;33m") \ + X( BLUE, "\x1B[0;34m") \ + X( MAGENTA, "\x1B[0;35m") \ + X( CYAN, "\x1B[0;36m") \ + X( WHITE, "\x1B[0;37m") \ + X( BOLD, "\x1B[0;1m") \ + X( BRIGHT_RED, "\x1B[1;31m") \ + X( BRIGHT_GREEN, "\x1B[1;32m") \ + X( BRIGHT_YELLOW, "\x1B[1;33m") \ + X( BRIGHT_BLUE, "\x1B[1;34m") \ + X( BRIGHT_MAGENTA, "\x1B[1;35m") \ + X( BRIGHT_CYAN, "\x1B[1;36m") \ + X( BRIGHT_WHITE, "\x1B[1;37m") \ + X( BRIGHT_BOLD, "\x1B[1;1m") \ + X( UNDERLINE, "\x1B[0;4m") \ + X( COLOUR_RESET, "\x1B[0;0m") -#define BLACK "\x1B[0;30m" - -#define RED "\x1B[0;31m" -#define GREEN "\x1B[0;32m" -#define YELLOW "\x1B[0;33m" -#define ORANGE "\x1B[0;33m" -#define BLUE "\x1B[0;34m" -#define MAGENTA "\x1B[0;35m" -#define CYAN "\x1B[0;36m" -#define WHITE "\x1B[0;37m" -#define BOLD "\x1B[0;1m" - -#define BRIGHT_RED "\x1B[1;31m" -#define BRIGHT_GREEN "\x1B[1;32m" -#define BRIGHT_YELLOW "\x1B[1;33m" -#define BRIGHT_BLUE "\x1B[1;34m" -#define BRIGHT_MAGENTA "\x1B[1;35m" -#define BRIGHT_CYAN "\x1B[1;36m" -#define BRIGHT_WHITE "\x1B[1;37m" -#define BRIGHT_BOLD "\x1B[1;1m" - -#define UNDERLINE "\x1B[0;4m" - -#define COLOUR_RESET "\x1B[0;0m" #define DEBUG_COLOURS #define FILE_LOG_COLOURS #else//USE_ANSI_COLOURS -#define BLACK "" -#define RED "" -#define BRIGHT_RED "" -#define GREEN "" -#define BRIGHT_GREEN "" -#define YELLOW "" -#define BRIGHT_YELLOW "" -#define BLUE "" -#define BRIGHT_BLUE "" -#define MAGENTA "" -#define BRIGHT_MAGENTA "" -#define CYAN "" -#define BRIGHT_CYAN "" -#define WHITE "" -#define BRIGHT_WHITE "" -#define BOLD "" -#define BRIGHT_BOLD "" -#define UNDERLINE "" -#define COLOUR_RESET "" +#define ANSI_COLOURS_LIST \ + X( BLACK, "" ) \ + X( RED, "" ) \ + X( BRIGHT_RED, "" ) \ + X( GREEN, "" ) \ + X( BRIGHT_GREEN, "" ) \ + X( YELLOW, "" ) \ + X( BRIGHT_YELLOW, "" ) \ + X( BLUE, "" ) \ + X( BRIGHT_BLUE, "" ) \ + X( MAGENTA, "" ) \ + X( BRIGHT_MAGENTA, "" ) \ + X( CYAN, "" ) \ + X( BRIGHT_CYAN, "" ) \ + X( WHITE, "" ) \ + X( BRIGHT_WHITE, "" ) \ + X( BOLD, "" ) \ + X( BRIGHT_BOLD, "" ) \ + X( UNDERLINE, "" ) \ + X( COLOUR_RESET, "" ) + #endif//USE_ANSI_COLOURS + + + +#undef X +#define X(COLOUR,STRING) COLOUR, +enum { ANSI_COLOURS_LIST NUM_ANSI_COLOURS }; +#undef X + +#endif // ANSI_COLOURS_H diff --git a/src/logging/log_every_timestep.c b/src/logging/log_every_timestep.c index d3f3a1961..bf8b6b60c 100644 --- a/src/logging/log_every_timestep.c +++ b/src/logging/log_every_timestep.c @@ -3075,4 +3075,22 @@ void log_every_timestep(struct stardata_t * RESTRICT const stardata) stardata->star[0].derivative[DERIVATIVE_STELLAR_MASS_WIND_LOSS] ); */ + + /* + static int xxx = 0; + static double tcomenv = 0.0; + if(xxx==0 && stardata->model.comenv_count == 1) + { + tcomenv = stardata->model.time; + printf("COMENV %g\n",tcomenv); + xxx = 1; + } + if(xxx==1 && Teff(0)>60000) + { + printf("COMENV HOT %g : %g\n", + stardata->model.time, + 1e6*(stardata->model.time - tcomenv)); + xxx=2; + } + */ } diff --git a/src/logging/logfile_macros.h b/src/logging/logfile_macros.h index ec63b258f..fa76e62fa 100644 --- a/src/logging/logfile_macros.h +++ b/src/logging/logfile_macros.h @@ -33,9 +33,9 @@ #define prevstring (stardata->common.file_log_prevstring) #define Log_RLOF_colour(X) \ - File_log_colour((X) < 0.8 ? GREEN : \ - (X) < 0.9 ? YELLOW : \ - (X) < 0.999 ? BRIGHT_YELLOW : \ - BRIGHT_RED) + File_log_colour((X) < 0.8 ? stardata->store->colours[GREEN] : \ + (X) < 0.9 ? stardata->store->colours[YELLOW] : \ + (X) < 0.999 ? stardata->store->colours[BRIGHT_YELLOW] : \ + stardata->store->colours[BRIGHT_RED]) #endif // LOGFILE_MACROS_H diff --git a/src/logging/logfile_string.c b/src/logging/logfile_string.c index 6ca8e56af..45d0c3777 100644 --- a/src/logging/logfile_string.c +++ b/src/logging/logfile_string.c @@ -16,6 +16,7 @@ char * logfile_string(const double time, const Stellar_type stellar_type1, const Boolean hybrid2, const double sep, + const double per, const double ecc, const double r1_rol, /* r1/roche_radius */ const double r2_rol, /* r2/roche_radius */ @@ -54,8 +55,18 @@ char * logfile_string(const double time, #if (DEBUG==1) char teststring[STRING_LENGTH]; snprintf(teststring,STRING_LENGTH, - "%11.4lf %9.3lf %9.3lf %i %i %13.3lf %6.2lf %.3lf %.3lf %s\n", - time,m1,m2,stellar_type0,stellar_type1,sep,ecc,Min(999.0,r1_rol),Min(999.0,r2_rol),type); + "%11.4lf %9.3lf %9.3lf %i %i %13.3lf %6.2lf %6.2lf %.3lf %.3lf %s\n", + time, + m1, + m2, + stellar_type0, + stellar_type1, + sep, + per, + ecc, + Min(999.0,r1_rol), + Min(999.0,r2_rol), + type); Dprint("FP output to log file \"%s\"\n",teststring); #endif /*DEBUG*/ @@ -74,19 +85,41 @@ char * logfile_string(const double time, cached = FALSE; } + const char * const up = stardata->store->upchar; + const char * const down = stardata->store->downchar; + const char * const nochange = stardata->store->nochangechar; + +#define _Rising_or_falling(NOW,PREV) ( \ + stardata->preferences->log_arrows == TRUE ? \ + ( \ + (stardata->previous_stardata==NULL||stardata->model.model_number==0) ? " " : \ + Fequal((NOW),(PREV)) ? nochange \ + : (NOW) > (PREV) ? up : down \ + ) : "" \ + ) + +#define Rising_or_falling(VAR) \ + _Rising_or_falling(stardata->VAR, \ + stardata->previous_stardata->VAR) +#define Rising_or_falling_ratio(VAR1,VAR2) \ + _Rising_or_falling(stardata->VAR1/stardata->VAR2, \ + stardata->previous_stardata->VAR1/ \ + stardata->previous_stardata->VAR2) + #ifdef TRIPLE /* * triple-star log */ snprintf(logstring, LOGSTRINGLENGTH, - "%11.7lf %9.5lf %9.5lf %3s %3s %13.8le %10.8le %12.7lf %12.7lf %12.7lf %s", + "%11.7lf %9.5lf %9.5lf %3s %3s %13.8le %10.8le %10.8le %12.7lf %12.7lf %12.7lf %s", time, m1, m2, c1, c2, (NEITHER_STAR_MASSLESS ? sep : -1.0), + per, ecc, stardata->common.orbit.inclination, stardata->common.orbit.longitude_of_ascending_node, @@ -95,27 +128,42 @@ char * logfile_string(const double time, #else snprintf(logstring, LOGSTRINGLENGTH, - "%s%11.4lf%s%9.3lf%9.3lf%s%3s%3s%s%13.5g%6.2lf%s%s%8.3lf%s%s%8.3lf %s%s%s", - File_log_colour(ORANGE), + "%s%11.4lf%s%9.3lf%s%s%9.3lf%s%s%3s%s%s%3s%s%s%13.5g%s%s%8.3g%c%s%s%6.2lf%s%s%s%s%8.3lf%s%s%s%8.3lf%s %s%s%s", + File_log_colour(stardata->store->colours[ORANGE]), time, - File_log_colour(RED), + File_log_colour(stardata->store->colours[RED]), m1, + Rising_or_falling(star[0].mass), + File_log_colour(stardata->store->colours[RED]), m2, - File_log_colour(WHITE), + Rising_or_falling(star[1].mass), + File_log_colour(stardata->store->colours[WHITE]), c1, + Rising_or_falling(star[0].stellar_type), + File_log_colour(stardata->store->colours[WHITE]), c2, - File_log_colour(YELLOW), + Rising_or_falling(star[1].stellar_type), + File_log_colour(stardata->store->colours[YELLOW]), (NEITHER_STAR_MASSLESS ? sep : -1.0), + Rising_or_falling(common.orbit.separation),stardata->store->colours[YELLOW], + (NEITHER_STAR_MASSLESS && per > 0.0) + ? (per < DAY_LENGTH_IN_YEARS ? (per*YEAR_LENGTH_IN_HOURS) : per < 1.0 ? (per*YEAR_LENGTH_IN_DAYS) : per < 1e3 ? per : per<1e3 ? (per*1e-3) : per < 1e6 ? (per*1e-6) : (per*1e-9) ) + : -1.0, + (NEITHER_STAR_MASSLESS && per>0.0) ? (per<DAY_LENGTH_IN_YEARS ? 'h' : per < 1.0 ? 'd' : per < 1e3 ? 'y' : per < 1e6 ? 'k' : per < 1e9 ? 'M' : 'G') : ' ', + Rising_or_falling(common.orbit.period),stardata->store->colours[YELLOW], (NEITHER_STAR_MASSLESS ? ecc : -1.0), - File_log_colour(r1_rol < 1.0 ? COLOUR_RESET : UNDERLINE), + Rising_or_falling(common.orbit.eccentricity),stardata->store->colours[YELLOW], + File_log_colour(r1_rol < 1.0 ? stardata->store->colours[COLOUR_RESET] : stardata->store->colours[UNDERLINE]), Log_RLOF_colour(r1_rol), (NEITHER_STAR_MASSLESS ? Min(999.0,r1_rol) : 0.0), - File_log_colour(r2_rol < 1.0 ? COLOUR_RESET : UNDERLINE), + Rising_or_falling_ratio(star[0].radius,star[0].roche_radius), + File_log_colour(r2_rol < 1.0 ? stardata->store->colours[COLOUR_RESET] : stardata->store->colours[UNDERLINE]), Log_RLOF_colour(r2_rol), (NEITHER_STAR_MASSLESS ? Min(999.0,r2_rol) : 0.0), - File_log_colour(CYAN), + Rising_or_falling_ratio(star[1].radius,star[1].roche_radius), + File_log_colour(stardata->store->colours[CYAN]), type, - File_log_colour(COLOUR_RESET)); + File_log_colour(stardata->store->colours[COLOUR_RESET])); #endif // TRIPLE #ifdef CIRCUMBINARY_DISK_DERMINE diff --git a/src/logging/logging_prototypes.h b/src/logging/logging_prototypes.h index 60daec45c..5337225eb 100644 --- a/src/logging/logging_prototypes.h +++ b/src/logging/logging_prototypes.h @@ -14,6 +14,7 @@ void output_to_logfile(FILE * const fp, const Stellar_type stellar_type1, const Boolean hybrid2, const double sep, + const double per, const double ecc, const double r1_rol, /* r1/roche_radius */ const double r2_rol, /* r2/roche_radius */ @@ -30,6 +31,7 @@ char * logfile_string(const double time, const Stellar_type stellar_type1, const Boolean hybrid2, const double sep, + const double per, const double ecc, const double r1_rol, /* r1/roche_radius */ const double r2_rol, /* r2/roche_radius */ diff --git a/src/logging/logwrap.c b/src/logging/logwrap.c index 5c84b3671..9e7f60c7d 100644 --- a/src/logging/logwrap.c +++ b/src/logging/logwrap.c @@ -18,6 +18,7 @@ void logwrap(struct stardata_t * RESTRICT const stardata, stardata->star[1].stellar_type, stardata->star[1].stellar_type==COWD ? stardata->star[1].hybrid_HeCOWD : FALSE, stardata->common.orbit.separation, + stardata->common.orbit.period, stardata->common.orbit.eccentricity, (Is_zero(stardata->star[0].roche_radius) ? 0.0 : Max(0.0,stardata->star[0].radius/stardata->star[0].roche_radius)), diff --git a/src/logging/open_log_files.c b/src/logging/open_log_files.c index 2dc2f7401..3ad788844 100644 --- a/src/logging/open_log_files.c +++ b/src/logging/open_log_files.c @@ -32,6 +32,8 @@ void open_log_files(FILE *(*log_fp), } #endif + const char * const logspace = stardata->preferences->log_arrows == TRUE ? " " : ""; + if(unlikely(Strings_equal(stardata->preferences->log_filename, "/dev/null"))) { @@ -43,13 +45,16 @@ void open_log_files(FILE *(*log_fp), { /* redirect output to stdout */ *log_fp=stdout; - fprintf(*log_fp,"%s TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE", - File_log_colour(WHITE) + fprintf(*log_fp,"%s TIME M1 M2 K1 K2 SEP%s PER%s ECC%s R1/ROL1 R2/ROL2 TYPE", + File_log_colour(stardata->store->colours[WHITE]), + logspace, + logspace, + logspace ); #ifdef CIRCUMBINARY_DISK_DERMINE fprintf(*log_fp," MCBDISK"); #endif - fprintf(*log_fp,"%s\n",File_log_colour(COLOUR_RESET)); + fprintf(*log_fp,"%s\n",File_log_colour(stardata->store->colours[COLOUR_RESET])); #ifdef FILE_LOG_FLUSH fflush(*log_fp); #endif @@ -59,14 +64,23 @@ void open_log_files(FILE *(*log_fp), { /* redirect output to stderr */ *log_fp=stderr; - fprintf(*log_fp," TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE%s", - File_log_colour(WHITE) + fprintf(*log_fp," TIME M1%s M2%s K1%s K2%s SEP%s PER%s ECC%s R1/ROL1%s R2/ROL2%s TYPE%s", + File_log_colour(stardata->store->colours[WHITE]), + logspace, + logspace, + logspace, + logspace, + logspace, + logspace, + logspace, + logspace, + logspace ); #ifdef CIRCUMBINARY_DISK_DERMINE fprintf(*log_fp," MCBDISK"); #endif // CIRCUMBINARY_DISK_DERMINE fprintf(*log_fp,"%s\n", - File_log_colour(COLOUR_RESET) + File_log_colour(stardata->store->colours[COLOUR_RESET]) ); #ifdef FILE_LOG_FLUSH fflush(*log_fp); @@ -91,13 +105,22 @@ void open_log_files(FILE *(*log_fp), else { fprintf(*log_fp, - "%s TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=%ld RANDOM_COUNT=%ld%s", - File_log_colour(WHITE), + "%s TIME M1%s M2%s K1%s K2%s SEP%s PER%s ECC%s R1/ROL1%s R2/ROL2%s TYPE RANDOM_SEED=%ld RANDOM_COUNT=%ld%s", + File_log_colour(stardata->store->colours[WHITE]), + logspace, + logspace, + logspace, + logspace, + logspace, + logspace, + logspace, + logspace, + logspace, (stardata->preferences->cmd_line_random_seed != 0 ? (long int)stardata->preferences->cmd_line_random_seed : (long int)stardata->common.random_seed), stardata->common.random_buffer.count, - File_log_colour(COLOUR_RESET) + File_log_colour(stardata->store->colours[COLOUR_RESET]) ); #ifdef CIRCUMBINARY_DISK_DERMINE fprintf(*log_fp," MCBDISK"); @@ -110,7 +133,7 @@ void open_log_files(FILE *(*log_fp), stardata->preferences->repeat); } #endif//LOG_REPEAT_NUMBER - fprintf(*log_fp,"%s\n",File_log_colour(COLOUR_RESET)); + fprintf(*log_fp,"%s\n",File_log_colour(stardata->store->colours[COLOUR_RESET])); #ifdef FILE_LOG_FLUSH fflush(*log_fp); #endif // FILE_LOG_FLUSH diff --git a/src/logging/output_to_detailed_logfile.c b/src/logging/output_to_detailed_logfile.c index 4b873f81d..3c418d7fa 100644 --- a/src/logging/output_to_detailed_logfile.c +++ b/src/logging/output_to_detailed_logfile.c @@ -15,18 +15,18 @@ No_empty_translation_unit_warning; if(stardata->star[(A)].stellar_type<15) \ { \ printf("%s% 3d% 6.2f% 6.2f % 4.1f % 4.1f %s% 5.2f", \ - (A)==0 ? RED : YELLOW , \ + (A)==0 ? stardata->store->colours[RED] : stardata->store->colours[YELLOW] , \ stardata->star[(A)].stellar_type, \ Min(99.99,stardata->star[(A)].mass), \ Min(99.99,Outermost_core_mass(stardata->star[(A)]), \ log10(stardata->star[(A)].radius), \ log10(stardata->star[(A)].luminosity), \ - (char*)(stardata->star[(A)].radius/stardata->star[(A)].roche_radius>0.99 ? ((A)==0 ? BRIGHT_RED : BRIGHT_YELLOW) : COLOUR_RESET) , \ + (char*)(stardata->star[(A)].radius/stardata->star[(A)].roche_radius>0.99 ? ((A)==0 ? stardata->store->colours[BRIGHT_RED] : stardata->store->colours[BRIGHT_YELLOW]) : stardata->store->colours[COLOUR_RESET]) , \ stardata->star[(A)].radius/stardata->star[(A)].roche_radius); \ } \ else \ { \ - printf("%s * * * * * * ",(A)==0 ? RED : YELLOW); \ + printf("%s * * * * * * ",(A)==0 ? stardata->store->colours[RED] : stardata->store->colours[YELLOW]); \ } #define LOGSPEC(A,B) if(stardata->model.(A)) printf("%s ",(B)); @@ -72,11 +72,11 @@ void output_to_detailed_compact_logfile(struct stardata_t * stardata) if(stardata->star[k].stellar_type<15) { v=Min(9.99,stardata->star[k].v_eq/stardata->star[k].v_crit_eq); - printf("%s%.2f ", v>0.99 ? BRIGHT_GREEN : GREEN,v); + printf("%s%.2f ", v>0.99 ? stardata->store->colours[BRIGHT_GREEN] : stardata->store->colours[GREEN],v); } else { - printf("%s * ",COLOUR_RESET); + printf("%s * ",stardata->store->colours[COLOUR_RESET]); } } } @@ -92,13 +92,13 @@ void output_to_detailed_compact_logfile(struct stardata_t * stardata) { // binaries only double Iorb = (1.0/3.0) * M_SUN*stardata->star[0].mass*stardata->star[1].mass/(stardata->star[0].mass + stardata->star[1].mass) * Pow2(stardata->common.orbit.separation*R_SUN); - printf("%s% 6.2f %6.2f ", Iorb>3.0*(I[1]+I[2]) || stardata->model.sgl ? MAGENTA : BRIGHT_MAGENTA, + printf("%s% 6.2f %6.2f ", Iorb>3.0*(I[1]+I[2]) || stardata->model.sgl ? stardata->store->colours[MAGENTA] : stardata->store->colours[BRIGHT_MAGENTA], log10(stardata->common.orbit.angular_momentum*ANGULAR_MOMENTUM_CGS), log10(Iorb)); } else { - printf("%s * * ",MAGENTA); + printf("%s * * ",stardata->store->colours[MAGENTA]); } Starloop(k) @@ -114,7 +114,7 @@ void output_to_detailed_compact_logfile(struct stardata_t * stardata) } /* messages */ - printf("%s",BRIGHT_CYAN); + printf("%s",stardata->store->colours[BRIGHT_CYAN]); if(stardata->model.in_RLOF) { #define ALMOST1 (1.0-1e-10) @@ -139,7 +139,7 @@ void output_to_detailed_compact_logfile(struct stardata_t * stardata) LOGSPEC(novae,"Novae"); LOGSPEC(coalesce,"Merger"); - printf("%s\n",COLOUR_RESET); + printf("%s\n",stardata->store->colours[COLOUR_RESET]); } #endif// DETAILED_COMPACT_LOG diff --git a/src/logging/output_to_logfile.c b/src/logging/output_to_logfile.c index 0dd368137..204167c8e 100644 --- a/src/logging/output_to_logfile.c +++ b/src/logging/output_to_logfile.c @@ -17,6 +17,7 @@ void output_to_logfile(FILE * const fp, const Stellar_type stellar_type1, const Boolean hybrid2, const double sep, + const double per, const double ecc, const double r1_rol, /* r1/roche_radius */ const double r2_rol, /* r2/roche_radius */ @@ -45,6 +46,7 @@ void output_to_logfile(FILE * const fp, stellar_type1, hybrid2, sep, + per, ecc, r1_rol, r2_rol, @@ -79,7 +81,7 @@ void output_to_logfile(FILE * const fp, #ifdef FILE_LOG_ECHO /* echo to stdout */ #ifdef FILE_LOG_COLOURS - printf("%s%s%s\n",YELLOW,logstring,COLOUR_RESET); + printf("%s%s%s\n",stardata->store->colours[YELLOW],logstring,stardata->store->colours[COLOUR_RESET]); #else printf("%s\n",logstring); #endif // FILE_LOG_COLOURS diff --git a/src/logging/show_derivatives.c b/src/logging/show_derivatives.c index 29a5b406b..1d9a5bff2 100644 --- a/src/logging/show_derivatives.c +++ b/src/logging/show_derivatives.c @@ -32,7 +32,7 @@ void show_derivatives(struct stardata_t * RESTRICT const stardata) (STAR)->angular_momentum, \ (STAR)->omega, \ moment_of_inertia((STAR),((STAR)->radius)), \ - COLOUR_RESET \ + stardata->store->colours[COLOUR_RESET] \ ) Starloop(n) @@ -41,7 +41,7 @@ void show_derivatives(struct stardata_t * RESTRICT const stardata) _show_star(star,"","Star"); if(prev != NULL) { - _show_star(&prev->star[n],YELLOW,"Prev"); + _show_star(&prev->star[n],stardata->store->colours[YELLOW],"Prev"); } } @@ -83,14 +83,14 @@ void show_derivatives(struct stardata_t * RESTRICT const stardata) } if(prev != NULL) { - Printf("%s",YELLOW); + Printf("%s",stardata->store->colours[YELLOW]); Starloop(n) { Printf("% 20g %% : ", Percent_diff(stardata->star[n].derivative[d], prev->star[n].derivative[d])); } - Printf("%s",COLOUR_RESET); + Printf("%s",stardata->store->colours[COLOUR_RESET]); } Printf("\n"); } @@ -112,14 +112,14 @@ void show_derivatives(struct stardata_t * RESTRICT const stardata) (STARDATA)->common.orbit.eccentricity, \ (STARDATA)->common.orbit.angular_momentum, \ (STARDATA)->common.orbit.angular_frequency, \ - COLOUR_RESET \ + stardata->store->colours[COLOUR_RESET] \ ) Printf("************************************************************\n"); _show_system(stardata,"","Orbit and System Derivatives"); if(prev != NULL) { - _show_system(prev,YELLOW,"Previous ... "); + _show_system(prev,stardata->store->colours[YELLOW],"Previous ... "); } for(d=0;d<DERIVATIVE_SYSTEM_NUMBER;d++) diff --git a/src/maths/apply_derivative.c b/src/maths/apply_derivative.c index cbabf5252..e4a9d0f09 100644 --- a/src/maths/apply_derivative.c +++ b/src/maths/apply_derivative.c @@ -66,9 +66,9 @@ No_empty_translation_unit_warning; if(nd==(Aprint_n) && \ d==(Aprint_array)) \ { \ - printf("%s",RED); \ + printf("%s",stardata->store->colours[RED]); \ printf(__VA_ARGS__); \ - printf("%s",COLOUR_RESET); \ + printf("%s",stardata->store->colours[COLOUR_RESET]); \ fflush(NULL); \ } \ } diff --git a/src/memory/build_store_contents.c b/src/memory/build_store_contents.c index 71b95c8ac..4ba43d9e9 100644 --- a/src/memory/build_store_contents.c +++ b/src/memory/build_store_contents.c @@ -54,7 +54,7 @@ void build_store_contents(struct store_t * RESTRICT const store) if(store->built==FALSE) { store->built = TRUE; - int i; + #ifdef NUCSYN nucsyn_build_store_contents(store); #endif // NUCSYN @@ -62,6 +62,18 @@ void build_store_contents(struct store_t * RESTRICT const store) MINT_init_store(store); #endif//MINT +#undef X +#define X(COLOUR,STRING) STRING, + static char * const colour_strings[] = { ANSI_COLOURS_LIST }; + store->colours = Malloc(sizeof(char*)*NUM_ANSI_COLOURS); + for(int i=0;i<NUM_ANSI_COLOURS;i++) + { + if(asprintf(&store->colours[i], + "%s", + colour_strings[i])==0){} + } +#undef X + /* * Set up collision stellar (k) type matrix */ @@ -75,7 +87,7 @@ void build_store_contents(struct store_t * RESTRICT const store) const_collision_matrix[HeWD][HeWD]=HeMS; #endif // ALLOW_HeWD_SUPERNOVAE size_t x = COLLISION_MATRIX_SIZE*sizeof(Stellar_type); - for(i=0;i<COLLISION_MATRIX_SIZE;i++) + for(int i=0;i<COLLISION_MATRIX_SIZE;i++) { store->collision_matrix[i] = Malloc(x); memcpy(store->collision_matrix[i], @@ -84,10 +96,13 @@ void build_store_contents(struct store_t * RESTRICT const store) } #ifdef FILE_LOG + if(asprintf(&store->upchar, "%s%s",store->colours[GREEN],"🠕")==0){} + if(asprintf(&store->downchar, "%s%s",store->colours[RED],"🠗")==0){} + if(asprintf(&store->nochangechar," ")==0){} #undef X #define X(CODE,STRING) #STRING, static const char * const_label[STRING_LENGTH] = { LOG_LABELS_LIST }; - for(i=0;i<NLOG_LABEL;i++) + for(int i=0;i<NLOG_LABEL;i++) { store->label[i] = const_label[i]; } diff --git a/src/memory/free_store_contents.c b/src/memory/free_store_contents.c index 1677f16c2..4194c4561 100644 --- a/src/memory/free_store_contents.c +++ b/src/memory/free_store_contents.c @@ -18,10 +18,13 @@ void free_store_contents(struct store_t * RESTRICT const store) { #ifdef NUCSYN nucsyn_free_store_contents(store); -#endif - - int kt; - for(kt=0;kt<COLLISION_MATRIX_SIZE;kt++) +#endif//NUCSYN + for(int i=0;i<NUM_ANSI_COLOURS;i++) + { + Store_free(colours[i]); + } + Store_free(colours); + for(int kt=0;kt<COLLISION_MATRIX_SIZE;kt++) { Store_free(collision_matrix[kt]); } @@ -29,7 +32,11 @@ void free_store_contents(struct store_t * RESTRICT const store) Delete_data_table(store->jaschek_jaschek_dwarf); Delete_data_table(store->jaschek_jaschek_giant); Delete_data_table(store->jaschek_jaschek_supergiant); - +#ifdef FILE_LOG + Store_free(upchar); + Store_free(downchar); + Store_free(nochangechar); +#endif//FILE_LOG #ifdef USE_2012_MAIN_SEQUENCE_LIFETIMES_TABLE Delete_data_table(store->massive_MS_lifetimes); #endif diff --git a/src/perl/scripts/rename_variable.pl b/src/perl/scripts/rename_variable.pl index 0dfbd7fdc..76d3e8643 100755 --- a/src/perl/scripts/rename_variable.pl +++ b/src/perl/scripts/rename_variable.pl @@ -61,19 +61,25 @@ foreach my $file (`ls $paths`) chomp $file; my $x = slurp($file); - if($opts{bounds} && $x=~s/\b$oldname\b/$newname/eeg) + if($opts{bounds}) { - if(!$opts{dryrun}) + if($x=~s/\b{wb}$oldname\b{wb}/$newname/eeg) { - print "Renamed in $file\n"; - dumpfile($file,$x); - } - else - { - print "Would have renamed in $file (but didn't)\n"; + if(!$opts{dryrun}) + { + print "Renamed in $file\n"; + dumpfile($file,$x); + } + else + { + print "Would have renamed in $file (but didn't)\n"; + print "############################################################\n"; + print $x; + print "############################################################\n"; + } } } - elsif(!$opts{bounds} && $x=~s/$oldname/$newname/g) + elsif($x=~s/$oldname/$newname/g) { if(!$opts{dryrun}) { @@ -83,6 +89,9 @@ foreach my $file (`ls $paths`) else { print "Would have renamed in $file (but didn't)\n"; + print "############################################################\n"; + print $x; + print "############################################################\n"; } } } diff --git a/src/setup/argument_setting_functions.c b/src/setup/argument_setting_functions.c index 343971844..fde61bcaf 100644 --- a/src/setup/argument_setting_functions.c +++ b/src/setup/argument_setting_functions.c @@ -514,10 +514,16 @@ void dummyfunc(ARG_SUBROUTINE_DECLARATION) void binary_c_version_internal(ARG_SUBROUTINE_DECLARATION) { - /* allocations are for the isotope list */ + /* show version information */ version(stardata); } +void binary_c_set_version_boolean(ARG_SUBROUTINE_DECLARATION) +{ + /* allocations are for the isotope list */ + stardata->preferences->show_version = TRUE; +} + void version_only(ARG_SUBROUTINE_DECLARATION) { stardata->preferences->speedtests = FALSE; diff --git a/src/setup/cmd_line_args_list.h b/src/setup/cmd_line_args_list.h index 069b9d289..06baf892d 100644 --- a/src/setup/cmd_line_args_list.h +++ b/src/setup/cmd_line_args_list.h @@ -3518,6 +3518,16 @@ BATCHMODE_ARGS 1.0 CMD_LINE_ARG_T_OPTIONAL_ARGS }, +{ + ARG_SECTION_OUTPUT, + "log_arrows", + "Add arrows to the output log to show whether values are increasing or decreasing.", + ARG_BOOLEAN , + "", + LOG_ARROWS_VAR, + 1.0 + CMD_LINE_ARG_T_OPTIONAL_ARGS }, + { ARG_SECTION_OUTPUT, "stopfile", @@ -4373,7 +4383,7 @@ ARG_FLOAT_SCANF, "Display binary_c version and build information. Also performs timing tests.", ARG_SUBROUTINE, "Ignore", - Sub(binary_c_version_internal), + Sub(binary_c_set_version_boolean), 1.0 CMD_LINE_ARG_T_OPTIONAL_ARGS }, { @@ -4611,3 +4621,12 @@ ARG_FLOAT_SCANF, Var(stardata->preferences->wind_LBV_luminosity_lower_limit), 1.0 CMD_LINE_ARG_T_OPTIONAL_ARGS }, +{ + ARG_SECTION_STARS, + "colour%d", + "Sets colour %d (0 to NUM_ANSI_COLOURS-1) to the extended ANSI set colour you choose (1-255, 0 means ignore). The colour numbers are defined in src/logging/ansi_colours.h", + ARG_INTEGER_SCANF, + WTTS_USE_DEFAULT, + Var(stardata->preferences->colours), + 1.0 + CMD_LINE_ARG_T_OPTIONAL_ARGS }, diff --git a/src/setup/cmd_line_function_macros.h b/src/setup/cmd_line_function_macros.h index fe1f9187c..bd0d2c609 100644 --- a/src/setup/cmd_line_function_macros.h +++ b/src/setup/cmd_line_function_macros.h @@ -195,8 +195,8 @@ "The value provided for argument \"%s\" overflowed or underflowed.\n", \ a->name); \ } \ - Cprint("Set %s to %d\n", \ - cmd_line_args[i].name, \ + Cprint("Set %s + %zu to %d\n", \ + cmd_line_args[i].name,offset, \ *((int*) cmd_line_args[i].pointer + offset)); \ } diff --git a/src/setup/cmd_line_macros.h b/src/setup/cmd_line_macros.h index b5c8536ed..f70191d4c 100644 --- a/src/setup/cmd_line_macros.h +++ b/src/setup/cmd_line_macros.h @@ -14,10 +14,12 @@ #ifdef FILE_LOG #define COLOUR_LOG Var(stardata->preferences->colour_log) #define LOG_FILENAME_VAR Var(stardata->preferences->log_filename) +#define LOG_ARROWS_VAR Var(stardata->preferences->log_arrows) #define API_LOG_FILENAME_PREFIX_VAR Var(stardata->preferences->api_log_filename_prefix) #else #define COLOUR_LOG Not_used_arg #define LOG_FILENAME_VAR Not_used_arg +#define LOG_ARROWS_VAR Not_used_arg #define API_LOG_FILENAME_PREFIX_VAR Not_used_arg #endif diff --git a/src/setup/derived_arguments.c b/src/setup/derived_arguments.c index 4fd437737..07b73d147 100644 --- a/src/setup/derived_arguments.c +++ b/src/setup/derived_arguments.c @@ -22,7 +22,27 @@ void derived_arguments(struct stardata_t * stardata) * Note: we cannot set the spin rate of the star because * we don't yet know its radius. This comes later. */ - struct preferences_t * p = stardata->preferences; + struct preferences_t * const p = stardata->preferences; + + /* + * Set ANSI colours in the store if overridden + */ + for(int i=1; i<NUM_ANSI_COLOURS; i++) + { + if(p->colours[i] != 0) + { + Safe_free(stardata->store->colours[i]); + if(asprintf( + &stardata->store->colours[i], + "\033[38;5;%dm", + p->colours[i]) + ==0) + { + + /* ignore errors */ + } + } + } /* * Set the stellar masses and construct the diff --git a/src/setup/parse_arguments.c b/src/setup/parse_arguments.c index 0550c988f..bc4ca336a 100644 --- a/src/setup/parse_arguments.c +++ b/src/setup/parse_arguments.c @@ -325,13 +325,12 @@ void parse_arguments(const int start, for(i=0; i<arg_count; i++) { - /* - Dprint("CF %s %s : is scanf? %d\n", + Cprint("CF %s %s : is scanf? %d\n", arg, cmd_line_args[i].name, Argtype_is_scanf(cmd_line_args[i].type) ); - */ + if( Strings_equal(arg, cmd_line_args[i].name) @@ -344,7 +343,7 @@ void parse_arguments(const int start, ) { - Dprint("match \"%s\" (at arg table %u, type %d %s, pointer %p, function_pointer? %s, size %zu expected %zu (%s) : cf log_filename at %p) repeat = %d\n", + Cprint("match \"%s\" (at arg table %u, type %d %s, pointer %p, function_pointer? %s, size %zu expected %zu (%s) : cf log_filename at %p) repeat = %d, offset = %zu\n", arg, i, cmd_line_args[i].type, @@ -357,7 +356,8 @@ void parse_arguments(const int start, arg_type_sizeof[cmd_line_args[i].type] == 0 ? "Unknown size" : cmd_line_args[i].varsize == arg_type_sizeof[cmd_line_args[i].type] ? "OK" : "NOT OK", (void*)&(stardata->preferences->log_filename), - stardata->preferences->repeat + stardata->preferences->repeat, + offset ); success = TRUE; @@ -528,6 +528,12 @@ void parse_arguments(const int start, stardata->star[0].mass, stardata->star[1].mass ); + + if(stardata->preferences->show_version == TRUE) + { + version(stardata); + } + } /********************************************************************/ @@ -544,11 +550,12 @@ static Boolean match_scanf(const char * const arg, * pattern that is commonly used. The integer should * always be positive, however, */ - const int matching_int = 0; + int matching_int = -1; const int scantest = sscanf(arg, cmd_line_arg->name, &matching_int); - if(scantest > 0) + //printf("arg %s name %s matching int %d scantest %d\n",arg,cmd_line_arg->name,matching_int,scantest); + if(scantest > 0 && matching_int >= 0) { /* * Normal sscanf succeeded diff --git a/src/setup/set_default_preferences.c b/src/setup/set_default_preferences.c index 66326c959..06dde76e1 100644 --- a/src/setup/set_default_preferences.c +++ b/src/setup/set_default_preferences.c @@ -373,9 +373,10 @@ preferences->WD_accretion_rate_novae_upper_limit_other_donor = ACCRETION_RATE_NO DEFAULT_LOG_OUTPUT_FILENAME, STRING_LENGTH); /* - * Don't colour logs by default + * Don't colour logs or add arrows by default */ preferences->colour_log = FALSE; + preferences->log_arrows = FALSE; #endif preferences->wind_angular_momentum_loss = WIND_ANGMOM_LOSS_BSE; diff --git a/src/setup/setup_prototypes.h b/src/setup/setup_prototypes.h index 33a9abc84..d8ffdc540 100644 --- a/src/setup/setup_prototypes.h +++ b/src/setup/setup_prototypes.h @@ -44,6 +44,7 @@ void list_available_args(ARG_SUBROUTINE_DECLARATION); void list_available_args_and_exit(ARG_SUBROUTINE_DECLARATION) No_return; void dummyfunc(ARG_SUBROUTINE_DECLARATION); void binary_c_version_internal(ARG_SUBROUTINE_DECLARATION); +void binary_c_set_version_boolean(ARG_SUBROUTINE_DECLARATION); void version_only(ARG_SUBROUTINE_DECLARATION); void dumpversion(ARG_SUBROUTINE_DECLARATION) No_return; double set_effective_metallicity(ARG_SUBROUTINE_DECLARATION); diff --git a/src/setup/version.c b/src/setup/version.c index 8bce3226c..138dca4e6 100644 --- a/src/setup/version.c +++ b/src/setup/version.c @@ -1239,6 +1239,30 @@ void version(struct stardata_t * RESTRICT const stardata) #endif Macrotest(ALPHA_ARGS); Macrotest(USE_ANSI_COLOURS); + Show_int_macro(NUM_ANSI_COLOURS); + + +#undef X +#define X(COLOUR,STRING) STRING, + static char * const colour_strings[] = { ANSI_COLOURS_LIST }; +#undef X +#define X(COLOUR,STRING) #COLOUR, + static char * const colour_enums[] = { ANSI_COLOURS_LIST }; +#undef X + + for(int i=0;i<NUM_ANSI_COLOURS;i++) + { + printf("ANSI colour %d %s : Default is %s%s%s, we are using %s%s%s.\n", + i, + colour_enums[i], + colour_strings[i], + colour_strings[i]+1, + colour_strings[COLOUR_RESET], + stardata->store->colours[i], + stardata->store->colours[i]+1, + colour_strings[COLOUR_RESET] + ); + } Macrotest(USE_POINTER_LOOPS); Macrotest(__NATIVE_PRINTF__); diff --git a/src/stellar_timescales/stellar_timescales.c b/src/stellar_timescales/stellar_timescales.c index 208685580..0a30daae8 100644 --- a/src/stellar_timescales/stellar_timescales.c +++ b/src/stellar_timescales/stellar_timescales.c @@ -88,9 +88,9 @@ No_empty_translation_unit_warning; Dprint_no_newline("%10u = %20s = %s%12.12e%s %s", \ i, \ S[i], \ - ((i>0 && B[i]<B[i-1]) ? BRIGHT_YELLOW : ""), \ + ((i>0 && B[i]<B[i-1]) ? stardata->store->colours[BRIGHT_YELLOW] : ""), \ B[i], \ - COLOUR_RESET, \ + stardata->store->colours[COLOUR_RESET], \ i==A?"":":"); \ } \ Dprint("%s",""); \ diff --git a/src/timestep/stellar_timestep.c b/src/timestep/stellar_timestep.c index 0252b669e..0efba17e7 100644 --- a/src/timestep/stellar_timestep.c +++ b/src/timestep/stellar_timestep.c @@ -145,7 +145,7 @@ void stellar_timestep(Timestep_prototype_args) { fprintf(stdout, "%sstellar_timestep at t=%23.15g model %d reject_same %s reject_shorten %s out star %d stellar_type %d (m=%g mc=%g L=%g R=%g RL=%g (1-R/RL=%g) minit=%g menv=%g SN=%d J*=%g; a=%g e=%g Jorb=%g, ω*=%g ωorb=%g tcirc=%g y), age=%20.12g, tm=%20.12g, tn=%20.12g >>> %sdt=%20.12g Myr%s <<< time_remaining=%g : set by %s%s%s (%d) : logtnow=%g logtnext=%g (Fequal? %s Times_are_equal? %s : diff %g) triggerd? %d %s\n", - YELLOW, + stardata->store->colours[YELLOW], stardata->model.time, stardata->model.model_number, Truefalse(stardata->model.reject_same_timestep), @@ -178,13 +178,13 @@ void stellar_timestep(Timestep_prototype_args) 0.0, #endif - BRIGHT_RED, + stardata->store->colours[BRIGHT_RED], *dt, - YELLOW, + stardata->store->colours[YELLOW], *time_remaining, - BRIGHT_MAGENTA, + stardata->store->colours[BRIGHT_MAGENTA], Dt_limit_string(abs(star->dtlimiter)), - YELLOW, + stardata->store->colours[YELLOW], star->dtlimiter, log10(stardata->model.time), log10(stardata->model.time + *dt), @@ -195,7 +195,7 @@ void stellar_timestep(Timestep_prototype_args) log10(stardata->model.time) - log10(stardata->model.time + *dt), stardata->model.fixed_timestep_triggered, - COLOUR_RESET + stardata->store->colours[COLOUR_RESET] ); } if(allocated_timescales == TRUE) diff --git a/src/timestep/timestep_increment_fixed_timesteps.c b/src/timestep/timestep_increment_fixed_timesteps.c index d6f5de872..1a65106bd 100644 --- a/src/timestep/timestep_increment_fixed_timesteps.c +++ b/src/timestep/timestep_increment_fixed_timesteps.c @@ -48,7 +48,7 @@ void timestep_increment_fixed_timesteps(struct stardata_t * RESTRICT const stard t->next = (t->logarithmic ? log10(stardata->model.time) : stardata->model.time) + t->step; - Dprint("%sincrement t->next to %30.20g%s\n",MAGENTA,t->next,COLOUR_RESET); + Dprint("%sincrement t->next to %30.20g%s\n",stardata->store->colours[MAGENTA],t->next,stardata->store->colours[COLOUR_RESET]); } t->previous_test = t->logarithmic ? log10(stardata->model.time) : stardata->model.time; } diff --git a/src/wind/wind_postAGB.c b/src/wind/wind_postAGB.c index 57b223e41..079a56bcd 100644 --- a/src/wind/wind_postAGB.c +++ b/src/wind/wind_postAGB.c @@ -46,7 +46,8 @@ double wind_postAGB(WIND_PROTOTYPE_ARGS) if( ( stellar_type < HeWD && - teff > 10e3) + teff > 10e3 + ) || ( WHITE_DWARF(stellar_type) && @@ -84,10 +85,13 @@ double wind_postAGB(WIND_PROTOTYPE_ARGS) } } - printf("KRITCKA %30.20e %g %g %g\n", + /* + printf("POSTAGBWIND %30.20e %g %g %g %g\n", stardata->model.time, teff, star->luminosity, + stardata->common.ndiscs > 0 ? (stardata->common.discs[0].lifetime/YEAR_LENGTH_IN_SECONDS) : -1.0, mdot); + */ return mdot; } diff --git a/tbse b/tbse index 7bf358db9..9ac2e7e49 100755 --- a/tbse +++ b/tbse @@ -1018,7 +1018,7 @@ VWIND_MULTIPLIER=1.0 WIND_GAS_TO_DUST_RATIO=200.0 # Tout and Pringle (1992) magnetic wind multiplier (0.0) -TOUT_PRINGLE_1992_MULTIPLIER=1.0 +TOUT_PRINGLE_1992_MULTIPLIER=0.0 # Wind during the first Giant Branch: # @@ -1828,6 +1828,8 @@ INTERNAL_BUFFERING=INTERNAL_BUFFERING_OFF # output log : set LOG_FILENAME to /dev/null for no logging LOG_FILENAME="/tmp/c_log2.out" +# use arrows to show if values are rising or falling +LOG_ARROWS=True # colour the log output (using ANSI codes) ? COLOUR_LOG=True @@ -2272,6 +2274,7 @@ $NUCMULTS \ --comenv_ns_accretion_mass $CE_NS_ACC_MASS \ --CRAP_parameter $CRAP_PARAMETER \ --log_filename $LOG_FILENAME \ +--log_arrows $LOG_ARROWS \ --colour_log $COLOUR_LOG \ --lambda_multiplier $LAMBDA_MULT \ --hachisu_disk_wind $HACHISU_DISK_WIND \ -- GitLab