Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
examples_custom_logging.py 2.73 KiB
import binary_c_python_api

from binarycpython.utils.custom_logging_functions import (
    autogen_C_logging_code,
    binary_c_log_code,
    create_and_load_logging_function,
)

from binarycpython.utils.grid import Population

#################################################
# File containing examples for the custom logging 
# I'll put several logging snippets for different purposes in this file 
#

#################################################
# no logging set.
pop = Population()
pop.set(M_1=10, M_2=10, separation=0, orbital_period=4530, eccentricity=0, metallicity=0.02, max_evolution_time=15000)
out = pop.evolve_single()
print(out)

#################################################
# Example logging snippet for logging 
pop.set(C_logging_code="""
    if(stardata->star[0].stellar_type>=MS)
    {
        if (stardata->model.time < stardata->model.max_evolution_time)
        {
            Printf("EXAMPLE_ABOVE_MS %30.12e %g %g %g %g %d %d\\n",
                // 
                stardata->model.time, // 1

                stardata->star[0].mass, //2
                stardata->previous_stardata->star[0].mass, //3

                stardata->star[0].radius, //4
                stardata->previous_stardata->star[0].radius, //5

                stardata->star[0].stellar_type, //6
                stardata->previous_stardata->star[0].stellar_type //7


          );
        };
        /* Kill the simulation to save time */
        //stardata->model.max_evolution_time = stardata->model.time - stardata->model.dtm;
    };
""")
out = pop.evolve_single()
print(out)


#################################################
# Example logging snippet for checking whether the system becomes a NS, and stop the evolution if so.
pop.set(M_1=100, M_2=10, separation=0, orbital_period=400530, eccentricity=0, metallicity=0.002, max_evolution_time=15000)
pop.set(C_logging_code="""
    if(stardata->star[0].stellar_type>=NS)
    {
        if (stardata->model.time < stardata->model.max_evolution_time)
        {
            Printf("EXAMPLE_LOG_CO %30.12e %g %g %g %g %d %d\\n",
                // 
                stardata->model.time, // 1

                stardata->star[0].mass, //2
                stardata->previous_stardata->star[0].mass, //3

                stardata->star[0].radius, //4
                stardata->previous_stardata->star[0].radius, //5

                stardata->star[0].stellar_type, //6
                stardata->previous_stardata->star[0].stellar_type //7
          );
        };
        /* Kill the simulation to save time */
        stardata->model.max_evolution_time = stardata->model.time - stardata->model.dtm;
    };
""") 
out = pop.evolve_single()


# TODO: add function that shows a 

# TODO: add function for compact object mergers

# TODO: add function