Skip to content
Snippets Groups Projects
examples_custom_logging.py 2.79 KiB
Newer Older
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

#################################################
pop.set(
    M_1=10,
    M_2=10,
    separation=0,
    orbital_period=4530,
    eccentricity=0,
    metallicity=0.02,
    max_evolution_time=15000,
)
#################################################
# 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;
    };
# TODO: add function for compact object mergers