def _kip_vline(self, modstart, modstop, sparse, outfile,<EOL>xlims=[<NUM_LIT:0.>,<NUM_LIT:0.>], ylims=[<NUM_LIT:0.>,<NUM_LIT:0.>], ixaxis='<STR_LIT>',<EOL>mix_zones=<NUM_LIT:5>, burn_zones=<NUM_LIT:50>):
xxyy=[self.get('<STR_LIT>')[modstart:modstop],self.get('<STR_LIT>')[modstart:modstop]]<EOL>mup = max(float(self.get('<STR_LIT>')[<NUM_LIT:0>])*<NUM_LIT>,<NUM_LIT:1.0>)<EOL>nmodels=len(self.get('<STR_LIT>')[modstart:modstop])<EOL>Msol=<NUM_LIT><EOL>engenstyle = '<STR_LIT>'<EOL>dx = sparse<EOL>x = np.arange(<NUM_LIT:0>, nmodels, dx)<EOL>btypemax = <NUM_LIT:20><EOL>btypemin = -<NUM_LIT:20><EOL>btypealpha=<NUM_LIT:0.><EOL>fig = pl.figure()<EOL>fig.set_size_inches(<NUM_LIT:16>,<NUM_LIT:9>)<EOL>fsize=<NUM_LIT:15><EOL>ax=pl.axes()<EOL>if ixaxis == '<STR_LIT>':<EOL><INDENT>gage= self.get('<STR_LIT>')<EOL>lage=np.zeros(len(gage))<EOL>agemin = max(old_div(abs(gage[-<NUM_LIT:1>]-gage[-<NUM_LIT:2>]),<NUM_LIT>),<NUM_LIT>)<EOL>for i in np.arange(len(gage)):<EOL><INDENT>if gage[-<NUM_LIT:1>]-gage[i]>agemin:<EOL><INDENT>lage[i]=np.log10(gage[-<NUM_LIT:1>]-gage[i]+agemin)<EOL><DEDENT>else :<EOL><INDENT>lage[i]=np.log10(agemin)<EOL><DEDENT><DEDENT>xxx = lage[modstart:modstop]<EOL>print('<STR_LIT>')<EOL>ax.set_xlabel('<STR_LIT>',fontsize=fsize)<EOL><DEDENT>elif ixaxis =='<STR_LIT>':<EOL><INDENT>xxx= self.get('<STR_LIT>')[modstart:modstop]<EOL>print('<STR_LIT>')<EOL>ax.set_xlabel('<STR_LIT>',fontsize=fsize)<EOL><DEDENT>elif ixaxis =='<STR_LIT>':<EOL><INDENT>xxx= old_div(self.get('<STR_LIT>')[modstart:modstop],<NUM_LIT>)<EOL>print('<STR_LIT>')<EOL>ax.set_xlabel('<STR_LIT>',fontsize=fsize)<EOL><DEDENT>else:<EOL><INDENT>print('<STR_LIT>')<EOL>sys.exit()<EOL><DEDENT>if xlims == [<NUM_LIT:0.>,<NUM_LIT:0.>]:<EOL><INDENT>xlims[<NUM_LIT:0>] = xxx[<NUM_LIT:0>]<EOL>xlims[<NUM_LIT:1>] = xxx[-<NUM_LIT:1>]<EOL><DEDENT>if ylims == [<NUM_LIT:0.>,<NUM_LIT:0.>]:<EOL><INDENT>ylims[<NUM_LIT:0>] = <NUM_LIT:0.><EOL>ylims[<NUM_LIT:1>] = mup<EOL><DEDENT>print('<STR_LIT>')<EOL>ax.plot(xxx[::dx],self.get('<STR_LIT>')[modstart:modstop][::dx],'<STR_LIT>')<EOL>print('<STR_LIT>')<EOL>ax.plot(xxx,self.get('<STR_LIT>')[modstart:modstop],label='<STR_LIT>')<EOL>ax.plot(xxx,self.get('<STR_LIT>')[modstart:modstop],label='<STR_LIT>')<EOL>ax.plot(xxx,self.get('<STR_LIT>')[modstart:modstop],label='<STR_LIT>')<EOL>ax.axis([xlims[<NUM_LIT:0>],xlims[<NUM_LIT:1>],ylims[<NUM_LIT:0>],ylims[<NUM_LIT:1>]])<EOL>ax.set_ylabel('<STR_LIT>')<EOL>try:<EOL><INDENT>self.get('<STR_LIT>')<EOL><DEDENT>except:<EOL><INDENT>engenstyle = '<STR_LIT>'<EOL><DEDENT>old_percent = <NUM_LIT:0><EOL>if engenstyle == '<STR_LIT>':<EOL><INDENT>for i in range(len(x)):<EOL><INDENT>percent = int(i*<NUM_LIT:100>/(len(x) - <NUM_LIT:1>))<EOL>if percent >= old_percent + <NUM_LIT:5>:<EOL><INDENT>sys.stdout.flush()<EOL>sys.stdout.write("<STR_LIT>" + "<STR_LIT>" % percent)<EOL>old_percent = percent<EOL><DEDENT>for j in range(<NUM_LIT:1>,burn_zones+<NUM_LIT:1>):<EOL><INDENT>ulimit=self.get('<STR_LIT>'+str(j))[modstart:modstop][i*dx]*self.get('<STR_LIT>')[modstart:modstop][i*dx]<EOL>if j==<NUM_LIT:1>:<EOL><INDENT>llimit=<NUM_LIT:0.0><EOL><DEDENT>else:<EOL><INDENT>llimit=self.get('<STR_LIT>'+str(j-<NUM_LIT:1>))[modstart:modstop][i*dx]*self.get('<STR_LIT>')[modstart:modstop][i*dx]<EOL><DEDENT>btype=float(self.get('<STR_LIT>'+str(j))[modstart:modstop][i*dx])<EOL>if llimit!=ulimit:<EOL><INDENT>if btype><NUM_LIT:0.>:<EOL><INDENT>pass<EOL><DEDENT>if btype<<NUM_LIT:0.>:<EOL><INDENT>pass<EOL><DEDENT><DEDENT><DEDENT><DEDENT>print('<STR_LIT>')<EOL><DEDENT>old_percent = <NUM_LIT:0><EOL>if engenstyle == '<STR_LIT>':<EOL><INDENT>for i in range(len(x)):<EOL><INDENT>percent = int(i*<NUM_LIT:100>/(len(x) - <NUM_LIT:1>))<EOL>if percent >= old_percent + <NUM_LIT:5>:<EOL><INDENT>sys.stdout.flush()<EOL>sys.stdout.write("<STR_LIT>" + "<STR_LIT>" % percent)<EOL>old_percent = percent<EOL><DEDENT>llimitl1=old_div(self.get('<STR_LIT>')[modstart:modstop][i*dx],Msol)<EOL>ulimitl1=old_div(self.get('<STR_LIT>')[modstart:modstop][i*dx],Msol)<EOL>llimitl2=old_div(self.get('<STR_LIT>')[modstart:modstop][i*dx],Msol)<EOL>ulimitl2=old_div(self.get('<STR_LIT>')[modstart:modstop][i*dx],Msol)<EOL>llimith1=old_div(self.get('<STR_LIT>')[modstart:modstop][i*dx],Msol)<EOL>ulimith1=old_div(self.get('<STR_LIT>')[modstart:modstop][i*dx],Msol)<EOL>llimith2=old_div(self.get('<STR_LIT>')[modstart:modstop][i*dx],Msol)<EOL>ulimith2=old_div(self.get('<STR_LIT>')[modstart:modstop][i*dx],Msol)<EOL><DEDENT>print('<STR_LIT>')<EOL><DEDENT>mixstyle = '<STR_LIT>'<EOL>try:<EOL><INDENT>self.get('<STR_LIT>')<EOL><DEDENT>except:<EOL><INDENT>mixstyle = '<STR_LIT>'<EOL><DEDENT>old_percent = <NUM_LIT:0><EOL>if mixstyle == '<STR_LIT>':<EOL><INDENT>for i in range(len(x)):<EOL><INDENT>percent = int(i*<NUM_LIT:100>/(len(x) - <NUM_LIT:1>))<EOL>if percent >= old_percent + <NUM_LIT:5>:<EOL><INDENT>sys.stdout.flush()<EOL>sys.stdout.write("<STR_LIT>" + "<STR_LIT>" % percent)<EOL>old_percent = percent<EOL><DEDENT>for j in range(<NUM_LIT:1>,mix_zones+<NUM_LIT:1>):<EOL><INDENT>ulimit=self.get('<STR_LIT>'+str(j))[modstart:modstop][i*dx]*self.get('<STR_LIT>')[modstart:modstop][i*dx]<EOL>if j==<NUM_LIT:1>:<EOL><INDENT>llimit=<NUM_LIT:0.0><EOL><DEDENT>else:<EOL><INDENT>llimit=self.get('<STR_LIT>'+str(j-<NUM_LIT:1>))[modstart:modstop][i*dx]*self.get('<STR_LIT>')[modstart:modstop][i*dx]<EOL><DEDENT>mtype=self.get('<STR_LIT>'+str(j))[modstart:modstop][i*dx]<EOL>if llimit!=ulimit:<EOL><INDENT>if mtype == <NUM_LIT:1>:<EOL><INDENT>ax.axvline(xxx[i*dx],ymin=old_div((llimit-ylims[<NUM_LIT:0>]),(ylims[<NUM_LIT:1>]-ylims[<NUM_LIT:0>])),ymax=old_div((ulimit-ylims[<NUM_LIT:0>]),(ylims[<NUM_LIT:1>]-ylims[<NUM_LIT:0>])),color='<STR_LIT:k>',alpha=<NUM_LIT>, linewidth=<NUM_LIT>)<EOL><DEDENT><DEDENT><DEDENT><DEDENT>print('<STR_LIT>')<EOL><DEDENT>old_percent = <NUM_LIT:0><EOL>if mixstyle == '<STR_LIT>':<EOL><INDENT>for i in range(len(x)):<EOL><INDENT>percent = int(i*<NUM_LIT:100>/(len(x) - <NUM_LIT:1>))<EOL>if percent >= old_percent + <NUM_LIT:5>:<EOL><INDENT>sys.stdout.flush()<EOL>sys.stdout.write("<STR_LIT>" + "<STR_LIT>" % percent)<EOL>old_percent = percent<EOL><DEDENT>ulimit=self.get('<STR_LIT>')[modstart:modstop][i*dx]*self.get('<STR_LIT>')[modstart:modstop][i*dx]<EOL>llimit=self.get('<STR_LIT>')[modstart:modstop][i*dx]*self.get('<STR_LIT>')[modstart:modstop][i*dx]<EOL>if llimit!=ulimit:<EOL><INDENT>ax.axvline(xxx[i*dx],ymin=old_div((llimit-ylims[<NUM_LIT:0>]),(ylims[<NUM_LIT:1>]-ylims[<NUM_LIT:0>])),ymax=old_div((ulimit-ylims[<NUM_LIT:0>]),(ylims[<NUM_LIT:1>]-ylims[<NUM_LIT:0>])),color='<STR_LIT:k>',alpha=<NUM_LIT>,linewidth=<NUM_LIT>)<EOL><DEDENT>ulimit=self.get('<STR_LIT>')[modstart:modstop][i*dx]*self.get('<STR_LIT>')[modstart:modstop][i*dx]<EOL>llimit=self.get('<STR_LIT>')[modstart:modstop][i*dx]*self.get('<STR_LIT>')[modstart:modstop][i*dx]<EOL>if llimit!=ulimit:<EOL><INDENT>ax.axvline(xxx[i*dx],ymin=old_div((llimit-ylims[<NUM_LIT:0>]),(ylims[<NUM_LIT:1>]-ylims[<NUM_LIT:0>])),ymax=old_div((ulimit-ylims[<NUM_LIT:0>]),(ylims[<NUM_LIT:1>]-ylims[<NUM_LIT:0>])),color='<STR_LIT:k>',alpha=<NUM_LIT>,linewidth=<NUM_LIT>)<EOL><DEDENT><DEDENT>print('<STR_LIT>')<EOL><DEDENT>print('<STR_LIT>', engenstyle)<EOL>print('<STR_LIT>', mixstyle)<EOL>print('<STR_LIT>')<EOL>pl.show()<EOL>
*** DEPRECIATED and hence UNSUPPORTED ***
This function creates a Kippenhahn plot with energy flux using
vertical lines, better thermal pulse resolution.

For a more comprehensive plot, your history.data or star.log
file should contain columns called "mix_type_n", "mix_qtop_n",
"burn_type_n" and "burn_qtop_n".  The number of columns
(i.e. the bbiggest value of n) is what goes in the arguments as
mix_zones and burn_zones.

DO NOT WORRY! if you do not have these columns, just leave the
default values alone and the script should recognise that you
do not have these columns and make the most detailed plot that
is available to you.

Parameters
----------
modstart : integer
    Model from which you want to plot (be careful if your
    history.data or star.log output is sparse...).
modstop : integer
    Model to which you wish to plot.
sparse : integer
    x-axis sparsity.
outfile : string
    'filename + extension' where you want to save the figure.
xlims, ylims : list, optional
    plot limits, however these are somewhat obsolete now that
    we have modstart and modstop.  Leaving them as 0. is
    probably no slower, and you can always zoom in afterwards
    in mpl.  The default is [0., 0.,].
ixaxis : string, optional
    Either 'log_time_left', 'age', or 'model_number'.  The
    default "log_time_left".
mix_zones, burn_zones : integer
    As described above, if you have more detailed output about
    your convection and energy generation boundaries in columns
    mix_type_n, mix_qtop_n, burn_type_n and burn_qtop_n, you
    need to specify the total number of columns for mixing zones
    and burning zones that you have.  Can't work this out from
    your history.data or star.log file?  Check the
    history_columns.list that you used, it'll be the number
    after "mixing regions" and "burning regions".  Can't see
    these columns?  leave it and 2 conv zones and 2 burn zones
    will be drawn using other data that you certainly should
    have in your history.data or star.log file.  The default for
    mix_zones is 5, the defalut for burn_zones is 50.