def kippenhahn(self, num_frame, xax, t0_model=<NUM_LIT:0>,<EOL>title='<STR_LIT>', tp_agb=<NUM_LIT:0.>, t_eps=<NUM_LIT>,<EOL>plot_star_mass=True, symbol_size=<NUM_LIT:8>, c12_bm=False,<EOL>print_legend=True):
if num_frame >= <NUM_LIT:0>:<EOL><INDENT>pyl.figure(num_frame)<EOL><DEDENT>t0_mod=[]<EOL>if xax == '<STR_LIT:time>':<EOL><INDENT>xaxisarray = self.get('<STR_LIT>')<EOL>if t0_model > <NUM_LIT:0>:<EOL><INDENT>ind=self.get('<STR_LIT>')<EOL>t0_model=where(ind>t0_model)[<NUM_LIT:0>][<NUM_LIT:0>]<EOL>t0_mod=xaxisarray[t0_model]<EOL><DEDENT>else:<EOL><INDENT>t0_mod = <NUM_LIT:0.><EOL><DEDENT>print('<STR_LIT>'+str(t0_mod))<EOL><DEDENT>elif xax == '<STR_LIT>':<EOL><INDENT>xaxisarray = self.get('<STR_LIT>')<EOL>t0_mod = <NUM_LIT:0.><EOL><DEDENT>elif xax == '<STR_LIT>':<EOL><INDENT>xaxi    = self.get('<STR_LIT>')<EOL>xaxisarray = np.log10(np.max(xaxi)+t_eps-xaxi)<EOL>t0_mod = <NUM_LIT:0.><EOL><DEDENT>else:<EOL><INDENT>print('<STR_LIT>'+'<STR_LIT>')<EOL><DEDENT>plot_bounds=True<EOL>try:<EOL><INDENT>h1_boundary_mass  = self.get('<STR_LIT>')<EOL>he4_boundary_mass = self.get('<STR_LIT>')<EOL>if c12_bm:<EOL><INDENT>c12_boundary_mass = self.get('<STR_LIT>')<EOL><DEDENT><DEDENT>except:<EOL><INDENT>try:<EOL><INDENT>h1_boundary_mass  = self.get('<STR_LIT>')<EOL>he4_boundary_mass = self.get('<STR_LIT>')<EOL>if c12_bm:<EOL><INDENT>c12_boundary_mass = self.get('<STR_LIT>')<EOL><DEDENT><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>if xax == '<STR_LIT:time>':<EOL><INDENT>if t0_model><NUM_LIT:0>:<EOL><INDENT>pyl.xlabel('<STR_LIT>')<EOL><DEDENT>else:<EOL><INDENT>pyl.xlabel('<STR_LIT>')<EOL><DEDENT><DEDENT>elif xax == '<STR_LIT>':<EOL><INDENT>pyl.xlabel('<STR_LIT>')<EOL><DEDENT>elif xax == '<STR_LIT>':<EOL><INDENT>pyl.xlabel('<STR_LIT>')<EOL><DEDENT>pyl.plot(xaxisarray[t0_model:]-t0_mod,mx1_bot[t0_model:],linestyle='<STR_LIT:None>',color='<STR_LIT>',alpha=<NUM_LIT>,marker='<STR_LIT:o>',markersize=symbol_size,label='<STR_LIT>')<EOL>pyl.plot(xaxisarray[t0_model:]-t0_mod,mx1_top[t0_model:],linestyle='<STR_LIT:None>',color='<STR_LIT>',alpha=<NUM_LIT>,marker='<STR_LIT:o>',markersize=symbol_size)<EOL>pyl.plot(xaxisarray[t0_model:]-t0_mod,mx2_bot[t0_model:],linestyle='<STR_LIT:None>',color='<STR_LIT>',alpha=<NUM_LIT>,marker='<STR_LIT:o>',markersize=symbol_size)<EOL>pyl.plot(xaxisarray[t0_model:]-t0_mod,mx2_top[t0_model:],linestyle='<STR_LIT:None>',color='<STR_LIT>',alpha=<NUM_LIT>,marker='<STR_LIT:o>',markersize=symbol_size)<EOL>if plot_bounds:<EOL><INDENT>pyl.plot(xaxisarray[t0_model:]-t0_mod,h1_boundary_mass[t0_model:],color='<STR_LIT>',linewidth=<NUM_LIT:2>,label='<STR_LIT>')<EOL>pyl.plot(xaxisarray[t0_model:]-t0_mod,he4_boundary_mass[t0_model:],color='<STR_LIT>',linewidth=<NUM_LIT:2>,linestyle='<STR_LIT>',label='<STR_LIT>')<EOL>if c12_bm:<EOL><INDENT>pyl.plot(xaxisarray[t0_model:]-t0_mod,c12_boundary_mass[t0_model:],color='<STR_LIT>',linewidth=<NUM_LIT:2>,linestyle='<STR_LIT>',label='<STR_LIT>')<EOL><DEDENT><DEDENT>if plot_star_mass is True:<EOL><INDENT>pyl.plot(xaxisarray[t0_model:]-t0_mod,star_mass[t0_model:],label='<STR_LIT>')<EOL><DEDENT>pyl.ylabel('<STR_LIT>')<EOL>if print_legend:<EOL><INDENT>pyl.legend(loc=<NUM_LIT:2>)<EOL><DEDENT>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.

        Parameters
        ----------
        num_frame : integer
            Number of frame to plot this plot into, if <0 open no new
            figure.
        xax : string
            Either 'model', 'time' or 'logtimerev' to indicate what is
            to be used on the x-axis.
        t0_model : integer, optional
            If xax = 'time' then 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
            The figure title.  The default 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 default is 0. .
        t_eps : float, optional
            Final time for logtimerev.  The default is '5.e2'.
        plot_star_mass : boolean, optional
            If True, then plot the stellar mass as a line as well.  The
            default is True.
        symbol_size : integer, optional
            Size of convection boundary marker.  The default is 8.
        c12_bm : boolean, optional
            If we plot c12_boundary_mass or not.  The default is False.
        print_legend : boolean, optionla
            Show or do not show legend.  The defalut is True.