def kippenhahn_CO(self, num_frame, xax, t0_model=<NUM_LIT:0>,<EOL>title='<STR_LIT>', tp_agb=<NUM_LIT:0.>,<EOL>ylim_CO=[<NUM_LIT:0>,<NUM_LIT:0>]):
pyl.figure(num_frame)<EOL>if xax == '<STR_LIT:time>':<EOL><INDENT>xaxisarray = self.get('<STR_LIT>')<EOL><DEDENT>elif xax == '<STR_LIT>':<EOL><INDENT>xaxisarray = self.get('<STR_LIT>')<EOL><DEDENT>else:<EOL><INDENT>print('<STR_LIT>'+'<STR_LIT>')<EOL><DEDENT>t0_mod=xaxisarray[t0_model]<EOL>plot_bounds=True<EOL>try:<EOL><INDENT>h1_boundary_mass  = self.get('<STR_LIT>')<EOL>he4_boundary_mass = self.get('<STR_LIT>')<EOL><DEDENT>except:<EOL><INDENT>try:<EOL><INDENT>h1_boundary_mass  = self.get('<STR_LIT>')<EOL>he4_boundary_mass = self.get('<STR_LIT>')<EOL><DEDENT>except:<EOL><INDENT>plot_bounds=False<EOL><DEDENT><DEDENT>star_mass         = self.get('<STR_LIT>')<EOL>mx1_bot           = self.get('<STR_LIT>')*star_mass<EOL>mx1_top           = self.get('<STR_LIT>')*star_mass<EOL>mx2_bot           = self.get('<STR_LIT>')*star_mass<EOL>mx2_top           = self.get('<STR_LIT>')*star_mass<EOL>surface_c12       = self.get('<STR_LIT>')<EOL>surface_o16       = self.get('<STR_LIT>')<EOL>COratio=old_div((surface_c12*<NUM_LIT>),(surface_o16*<NUM_LIT>))<EOL>pyl.plot(xaxisarray[t0_model:]-t0_mod,COratio[t0_model:],'<STR_LIT>',label='<STR_LIT>')<EOL>pyl.ylabel('<STR_LIT>')<EOL>pyl.legend(loc=<NUM_LIT:4>)<EOL>if ylim_CO[<NUM_LIT:0>] is not <NUM_LIT:0> and  ylim_CO[<NUM_LIT:1>] is not <NUM_LIT:0>:<EOL><INDENT>pyl.ylim(ylim_CO)<EOL><DEDENT>if xax == '<STR_LIT:time>':<EOL><INDENT>pyl.xlabel('<STR_LIT>')<EOL><DEDENT>elif xax == '<STR_LIT>':<EOL><INDENT>pyl.xlabel('<STR_LIT>')<EOL><DEDENT>pyl.twinx()<EOL>if plot_bounds:<EOL><INDENT>pyl.plot(xaxisarray[t0_model:]-t0_mod,h1_boundary_mass[t0_model:],label='<STR_LIT>')<EOL>pyl.plot(xaxisarray[t0_model:]-t0_mod,he4_boundary_mass[t0_model:],label='<STR_LIT>')<EOL><DEDENT>pyl.plot(xaxisarray[t0_model:]-t0_mod,mx1_bot[t0_model:],'<STR_LIT>',label='<STR_LIT>')<EOL>pyl.plot(xaxisarray[t0_model:]-t0_mod,mx1_top[t0_model:],'<STR_LIT>')<EOL>pyl.plot(xaxisarray[t0_model:]-t0_mod,mx2_bot[t0_model:],'<STR_LIT>')<EOL>pyl.plot(xaxisarray[t0_model:]-t0_mod,mx2_top[t0_model:],'<STR_LIT>')<EOL>pyl.plot(xaxisarray[t0_model:]-t0_mod,star_mass[t0_model:],label='<STR_LIT>')<EOL>pyl.ylabel('<STR_LIT>')<EOL>pyl.legend(loc=<NUM_LIT:2>)<EOL>if tp_agb > <NUM_LIT:0.>:<EOL><INDENT>h1_min = min(h1_boundary_mass[t0_model:])<EOL>h1_max = max(h1_boundary_mass[t0_model:])<EOL>h1_min = h1_min*(<NUM_LIT:1.>-old_div(tp_agb,<NUM_LIT>))<EOL>h1_max = h1_max*(<NUM_LIT:1.>+old_div(tp_agb,<NUM_LIT>))<EOL>print('<STR_LIT>',h1_min,h1_max)<EOL>pyl.ylim(h1_min,h1_max)<EOL><DEDENT>
Kippenhahn plot as a function of time or model with CO ratio

Parameters
----------
num_frame : integer
    Number of frame to plot this plot into.
xax : string
    Either model or time to indicate what is to be used on the
    x-axis.
t0_model : integer, optional
    Model for the zero point in time, for AGB plots this would
    be usually the model of the 1st TP, which can be found with
    the Kippenhahn plot.  The default is 0.
title : string, optional
    Figure title.  The defalut is "Kippenhahn diagram".
tp_agb : float, optional
    If >= 0 then,
    ylim=[h1_min*1.-tp_agb/100 : h1_max*1.+tp_agb/100] with
    h1_min, h1_max the min and max H-free core mass coordinate.
    The defalut is 0.
ylim_CO : list
    if ylim_CO is [0,0], then it is automaticly set.  The
    default is [0,0].