#!/usr/bin/env python from __future__ import division import sys import os fig_t = r"""\begin{{figure}}[htbp] \centering \begin{{tikzpicture}}[scale={scale},x=1in,y=1in]{tikzpic} {matrix} \end{{tikzpicture}} \caption[{shortcap}]{{{caption}\label{{{label}}}}} \end{{figure}}""" matrix_t = r""" \matrix [matrix of nodes,row sep=0,column sep=0] {{{rows} }}; """ row_t = """\n \draw (-1,{bot}) rectangle (1,{top}); & {fill} \\\\""" ## # order doesn't matter here: this will be put into a dictionary all_planes= [ ['Lowest Extent', struct_LowestExtent], ['Bottom of Support Plate', struct_SupportPlate_bot], ['Top of Support Plate', struct_SupportPlate_top], ['Bottom of Fuel Rod', fuel_Rod_bot], ['Bottom of Active Fuel', fuel_ActiveFuel_bot], ['Grid 1 Bottom', grid1_bot], ['Bot. of BPRA Rod', bpra_Rod_bot], ['Control Rod Step 0', rcca_Rod_bot], ['Bottom of Active Absorber', bpra_Active_bot], ['Grid 1 Top', grid1_top], ['Grid 2 Bottom', grid2_bot], ['Grid 2 Top', grid2_top], ['Grid 3 Bottom', grid3_bot], ['Grid 3 Top', grid3_top], ['Grid 4 Bottom', grid4_bot], ['Grid 4 Top', grid4_top], ['Grid 5 Bottom', grid5_bot], ['Grid 5 Top', grid5_top], ['Grid 6 Bottom', grid6_bot], ['Grid 6 Top', grid6_top], ['Grid 7 Bottom', grid7_bot], ['Grid 7 Top', grid7_top], ['Top of Active Absorber', bpra_Active_top], ['Top of Active Fuel', fuel_ActiveFuel_top], ['Control Rod Step 228', '{:.6g}'.format(float(rcca_StepWidth)*228+float(rcca_Rod_bot))], ['Grid 8 Bottom', grid8_bot], ['Grid 8 Top', grid8_top], ['Top of Fuel Rod Plenum', fuel_UpperFitting_bot], ['Top of BPRA Rod Plenum', bpra_Plenum_top], ['Top of Fuel Rod', fuel_Rod_top], ['Bottom of Upper Nozzle', struct_UpperNozzle_bot], ['Top of Upper Nozzle', struct_UpperNozzle_top], ['Highest Extent', struct_HighestExtent],] all_planes += [['Bottom of Lower Absorber (AIC)', rcca_AIC_bot], ['Bottom of Upper Absorber (B4C)', rcca_B4C_bot], ['Bottom of Spacer', rcca_Spacer_bot], ['Bottom of Control Rod Plenum', rcca_Plenum_bot], ['Top of Control Rod Plenum', rcca_Plenum_top],] # convert into a dictionary for use in figures d = {} d.update(all_planes) all_planes = d def main(base): make_aggregate_fig(base) make_fuel_rod(base) make_gtu_rod(base) make_instr_rod(base) make_ba_rod(base) make_cr_rod(base) def make_aggregate_fig(base): outp = os.path.join(base,"specifications{0}axial{0}figs{0}all_axials.tex".format(os.sep)) cap = "\emph{Left}: Scale view of row 8 axial cross section, with highlighted grid spacers and partial insertion of control rod bank D to the bite position. \emph{Right}: exhaustive list of all axial planes used in the model, excluding partial control rod insertion planes." scap = "Scale view of all axial planes." l = "fig_all_axials" s = 1 # if the planes change, this is the only place to update them axials = [ 'Lowest Extent', 'Bottom of Support Plate', 'Bottom of Fuel Rod', 'Bottom of Active Fuel', 'Grid 1 Bottom', 'Bot. of BPRA Rod', 'Control Rod Step 0', 'Grid 1 Top', 'Bottom of Active Absorber', 'Bottom of Lower Absorber (AIC)', 'Grid 2 Bottom', 'Grid 2 Top', 'Grid 3 Bottom', 'Grid 3 Top', 'Grid 4 Bottom', 'Grid 4 Top', 'Grid 5 Bottom', 'Grid 5 Top', 'Grid 6 Bottom', 'Grid 6 Top', 'Grid 7 Bottom', 'Grid 7 Top', 'Control Rod Step 228', 'Top of Active Absorber', 'Top of Active Fuel', 'Bottom of Control Rod Plenum', 'Grid 8 Bottom', 'Grid 8 Top', 'Top of Control Rod Plenum', 'Top of Fuel Rod Plenum', 'Top of Fuel Rod', 'Top of BPRA Rod Plenum', 'Bottom of Upper Nozzle', 'Top of Upper Nozzle', 'Highest Extent'] # get ordered list axials = [[a,all_planes[a]] for a in axials] # desired figure height figH = 4.0 # actual figure dimentions in inches picH = 27.774 picW = 27.774 figW = figH*picW/picH barrelIR = 161.2773*figH/float(axials[-1][1]) tikzpic = r""" \draw[white] (-{1},-{2}) rectangle ({1},{2}); \node {{\pgftext{{\includegraphics[width={0}in]{{specifications/axial/figs/row_8_mats_axial_grids_enhanced.png}}}}}};""".format( figW,figW/2,figH/2) for i,ax in enumerate(axials): tikzpic += "\n \draw[red] ({0},{1}) -- ({2},{1}) -- ({3},{4}) -- ({6},{4}) node[black,right,anchor=west,font=\scriptsize] {{{5}}};".format( barrelIR, float(ax[1])*figH/float(axials[-1][1])-figH/2, figW/2+0.2, figW/2+0.4, figH*i/(len(axials)-1)-figH/2, "~{0} ~~~~~~~~ {1}".format(ax[1],ax[0]), figW/2+0.55) tikzpic += "\n \draw ({0},{1}) node[left,anchor=west,font=\scriptsize] {{\underline{{Elevation (cm)}} ~~~ \underline{{Description}}}};".format(figW/2+0.4,figH/2 + figH/(len(axials)-1)) mat = "" outStr = fig_t.format(tikzpic=tikzpic,matrix=mat,shortcap=scap,caption=cap,label=l,scale=s) with open(outp,'w') as fh: fh.write(outStr) def make_fuel_rod(base): outp = os.path.join(base,"specifications{0}axial{0}figs{0}fuel_rod.tex".format(os.sep)) cap = "Fuel rod pincell axial specification." scap = "Fuel rod pincell axial specification" l = "fig_fuel_axials" s = 1 figH = 5.0 width = 3 # the third entry is the text above the specified plane ## changed so the axial height here isn't used - the global all_planes is axials = [ ['Lowest Extent', '0', 'Water', 'mat_water', r""], ['Bottom of Support Plate', '50.8', 'Nozzle / Support Plate Stainless Steel', 'mat_ss_spn', r"\ref{num:missing}"], ['Bottom of Fuel Rod', '66.18352', 'Zircaloy Pin', 'mat_zirc', r"\ref{num:catawba}"], ['Bottom of Active Fuel', '67.02172', 'Fuel Rod Pincell', 'fig_fuel_pin', r"\ref{num:fuelheight}"], ['Grid 1 Bottom', '68.16472', 'Fuel Rod Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 1 Top', '71.5226', 'Fuel Rod Pincell', 'fig_fuel_pin', r"\ref{num:fuelheight}"], ['Grid 2 Bottom', '130.21692', 'Fuel Rod Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 2 Top', '133.5748', 'Fuel Rod Pincell', 'fig_fuel_pin', r"\ref{num:fuelheight}"], ['Grid 3 Bottom', '182.41392', 'Fuel Rod Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 3 Top', '185.7718', 'Fuel Rod Pincell', 'fig_fuel_pin', r"\ref{num:fuelheight}"], ['Grid 4 Bottom', '234.61092', 'Fuel Rod Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 4 Top', '237.9688', 'Fuel Rod Pincell', 'fig_fuel_pin', r"\ref{num:fuelheight}"], ['Grid 5 Bottom', '286.80792', 'Fuel Rod Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 5 Top', '290.1658', 'Fuel Rod Pincell', 'fig_fuel_pin', r"\ref{num:fuelheight}"], ['Grid 6 Bottom', '339.00492', 'Fuel Rod Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 6 Top', '342.3628', 'Fuel Rod Pincell', 'fig_fuel_pin', r"\ref{num:fuelheight}"], ['Grid 7 Bottom', '391.20192', 'Fuel Rod Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 7 Top', '394.5598', 'Fuel Rod Pincell', 'fig_fuel_pin', r"\ref{num:fuelheight}"], ['Top of Active Fuel', '432.78172', 'Fuel Rod Plenum Pincell', 'fig_fuel_pin', r"\ref{num:catawba}"], ['Grid 8 Bottom', '443.50052', 'Fuel Rod Plenum Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 8 Top', '446.8584', 'Fuel Rod Plenum Pincell', 'fig_fuel_pin', r"\ref{num:catawba}"], ['Top of Fuel Rod Plenum', '452.23812', 'Zircaloy Pin', 'mat_zirc', r"\ref{num:catawba}"], ['Top of Fuel Rod', '454.29552', 'Water', 'mat_water', r"\ref{num:catawba}"], ['Bottom of Upper Nozzle', '457.6407', 'Nozzle / Support Plate Stainless Steel', 'mat_ss_spn', r"\ref{num:watts_bar}"], ['Top of Upper Nozzle', '466.4672', 'Water', 'mat_water', r"\ref{num:watts_bar}"], ['Highest Extent', '517.2672', 'Water', 'mat_water', ''],] axials = [[a[0],all_planes[a[0]],a[2],a[3],a[4]] for a in axials] mat = "" tikzpic = "" for i,ax in enumerate(axials[:-1]): tikzpic += """\n \\node[inner sep=0pt, text width={w} in, minimum size={h} in, draw=black, align=center, shift={{(0,{s})}}, hyperlink node={hyper}] (n{0}) {{{fill}}};""".format(i,fill=ax[2],w=width,h=figH/(len(axials)-1),s=i*figH/(len(axials)-1),hyper=ax[3]) tikzpic += """\n \draw[->] ({w2},{h}) node[right,anchor=west] {{{text}}} -- ({w},{h});""".format(w=width/2,h=(i-0.5)*figH/(len(axials)-1),w2=width/2+0.2,text="{0} ~~~~~~~ {1}".format(ax[1],ax[0])) tikzpic += """\n \\node[anchor=east] (s{0}) at (n{0}.west) {{{1}}};""".format(i,ax[4]) tikzpic += """\n \\path let \p1 = (n{0}.west) in node[anchor=west] (source) at (\\x1,{h}) {{\underline{{Source Reference}}}};""".format(i,w=0,h=(len(axials)-0.5)*figH/(len(axials)-1),) tikzpic += """\n \draw[->] (source.west) -| (s{0}.north);""".format(i) tikzpic += """\n \draw[->] ({w2},{h}) node[right,anchor=west] {{{text}}} -- ({w},{h});""".format(w=width/2,h=(len(axials)-1.5)*figH/(len(axials)-1),w2=width/2+0.2,text="{0} ~~~~~~~ {1}".format(axials[-1][1],axials[-1][0])) tikzpic += """\n \draw ({w},{h}) node[right,anchor=west] {{{text}}};""".format(w=width/2,h=(len(axials)-0.5)*figH/(len(axials)-1), text="\underline{Elevation (cm)} ~ \underline{Description}") outStr = fig_t.format(tikzpic=tikzpic,matrix=mat,shortcap=scap,caption=cap,label=l,scale=s) with open(outp,'w') as fh: fh.write(outStr) def make_gtu_rod(base): outp = os.path.join(base,"specifications{0}axial{0}figs{0}guide_tube.tex".format(os.sep)) cap = "Empty guide tube pincell axial specification." scap = "Empty guide tube pincell axial specification" l = "fig_gtu_axials" s = 1 figH = 5.0 width = 3 # the third entry is the text above the specified plane ## changed so the axial height here isn't used - the global all_planes is axials = [ ['Lowest Extent', '0', 'Water', 'mat_water', r""], ['Bottom of Support Plate', '20.0', 'Nozzle / Support Plate Borated Water', 'mat_water_spn', r"\ref{num:missing}"], ['Bottom of Fuel Rod', '66.18352', 'Dashpot Guide Tube', 'fig_guidetube_da_pin', r"\ref{num:gtu_axials}"], ['Grid 1 Bottom', '68.16472', 'Dashpot Guide Tube w/ Grid', 'fig_guidetube_da_pin', r"\ref{num:gtu_axials}"], ['Control Rod Step 0', '71.5226', 'Guide Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 1 Top', '74.59092', 'Guide Tube Pincell', 'fig_guidetube_pin', r"\ref{num:gtu_axials}"], ['Grid 2 Bottom', '130.21692', 'Guide Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 2 Top', '133.5748', 'Guide Tube Pincell', 'fig_guidetube_pin', r"\ref{num:gtu_axials}"], ['Grid 3 Bottom', '182.41392', 'Guide Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 3 Top', '185.7718', 'Guide Tube Pincell', 'fig_guidetube_pin', r"\ref{num:gtu_axials}"], ['Grid 4 Bottom', '234.61092', 'Guide Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 4 Top', '237.9688', 'Guide Tube Pincell', 'fig_guidetube_pin', r"\ref{num:gtu_axials}"], ['Grid 5 Bottom', '286.80792', 'Guide Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 5 Top', '290.1658', 'Guide Tube Pincell', 'fig_guidetube_pin', r"\ref{num:gtu_axials}"], ['Grid 6 Bottom', '339.00492', 'Guide Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 6 Top', '342.3628', 'Guide Tube Pincell', 'fig_guidetube_pin', r"\ref{num:gtu_axials}"], ['Grid 7 Bottom', '391.20192', 'Guide Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 7 Top', '394.5598', 'Guide Tube Pincell', 'fig_guidetube_pin', r"\ref{num:gtu_axials}"], ['Grid 8 Bottom', '443.50052', 'Guide Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 8 Top', '446.8584', 'Guide Tube Pincell', 'fig_guidetube_pin', r"\ref{num:gtu_axials}"], ['Bottom of Upper Nozzle', '517.2672', 'Nozzle / Support Plate Borated Water', 'mat_water_spn', r"\ref{num:watts_bar}"], ['Top of Upper Nozzle', '517.2672', 'Water', 'mat_water', r"\ref{num:watts_bar}"], ['Highest Extent', '517.2672', 'Water', 'mat_water', ''],] axials = [[a[0],all_planes[a[0]],a[2],a[3],a[4]] for a in axials] mat = "" tikzpic = "" for i,ax in enumerate(axials[:-1]): tikzpic += """\n \\node[inner sep=0pt, text width={w} in, minimum size={h} in, draw=black, align=center, shift={{(0,{s})}}, hyperlink node={hyper}] (n{0}) {{{fill}}};""".format(i,fill=ax[2],w=width,h=figH/(len(axials)-1),s=i*figH/(len(axials)-1),hyper=ax[3]) tikzpic += """\n \draw[->] ({w2},{h}) node[right,anchor=west] {{{text}}} -- ({w},{h});""".format(w=width/2,h=(i-0.5)*figH/(len(axials)-1),w2=width/2+0.2,text="{0} ~~~~~~~ {1}".format(ax[1],ax[0])) tikzpic += """\n \\node[anchor=east] (s{0}) at (n{0}.west) {{{1}}};""".format(i,ax[4]) tikzpic += """\n \\path let \p1 = (n{0}.west) in node[anchor=west] (source) at (\\x1,{h}) {{\underline{{Source Reference}}}};""".format(i,w=0,h=(len(axials)-0.5)*figH/(len(axials)-1),) tikzpic += """\n \draw[->] (source.west) -| (s{0}.north);""".format(i) tikzpic += """\n \draw ({w},{h}) node[right,anchor=west] {{{text}}};""".format(w=width/2,h=(len(axials)-0.5)*figH/(len(axials)-1), text="\underline{Elevation (cm)} ~ \underline{Description}") outStr = fig_t.format(tikzpic=tikzpic,matrix=mat,shortcap=scap,caption=cap,label=l,scale=s) with open(outp,'w') as fh: fh.write(outStr) def make_instr_rod(base): outp = os.path.join(base,"specifications{0}axial{0}figs{0}instr_tube.tex".format(os.sep)) cap = "Instrument tube pincell axial specification." scap = "Instrument tube pincell axial specification" l = "fig_instr_axials" s = 1 figH = 5.0 width = 3 # the third entry is the text above the specified plane ## changed so the axial height here isn't used - the global all_planes is axials = [ ['Lowest Extent', '0', 'Bare Instr. Tube', 'fig_instr_pin_bare', r"\ref{num:instr_axials}"], ['Bottom of Support Plate', '20.0', 'Support Plate / Nozzle Borated Water', 'mat_water_spn', r"\ref{num:missing}"], ['Bottom of Fuel Rod', '66.18352', 'Instr. Tube Pincell', 'fig_instr_pin', r"\ref{num:instr_axials}"], ['Grid 1 Bottom', '68.16472', 'Instr. Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 1 Top', '71.5226', 'Instr. Tube Pincell', 'fig_instr_pin', r"\ref{num:instr_axials}"], ['Grid 2 Bottom', '130.21692', 'Instr. Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 2 Top', '133.5748', 'Instr. Tube Pincell', 'fig_instr_pin', r"\ref{num:instr_axials}"], ['Grid 3 Bottom', '182.41392', 'Instr. Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 3 Top', '185.7718', 'Instr. Tube Pincell', 'fig_instr_pin', r"\ref{num:instr_axials}"], ['Grid 4 Bottom', '234.61092', 'Instr. Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 4 Top', '237.9688', 'Instr. Tube Pincell', 'fig_instr_pin', r"\ref{num:instr_axials}"], ['Grid 5 Bottom', '286.80792', 'Instr. Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 5 Top', '290.1658', 'Instr. Tube Pincell', 'fig_instr_pin', r"\ref{num:instr_axials}"], ['Grid 6 Bottom', '339.00492', 'Instr. Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 6 Top', '342.3628', 'Instr. Tube Pincell', 'fig_instr_pin', r"\ref{num:instr_axials}"], ['Grid 7 Bottom', '391.20192', 'Instr. Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 7 Top', '394.5598', 'Instr. Tube Pincell', 'fig_instr_pin', r"\ref{num:instr_axials}"], ['Grid 8 Bottom', '443.50052', 'Instr. Tube Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 8 Top', '446.8584', 'Instr. Tube Pincell', 'fig_instr_pin', r"\ref{num:instr_axials}"], ['Bottom of Upper Nozzle', '517.2672', 'Water', 'mat_water', r"\ref{num:watts_bar}"], ['Highest Extent', '517.2672', '', '', ''],] axials = [[a[0],all_planes[a[0]],a[2],a[3],a[4]] for a in axials] mat = "" tikzpic = "" for i,ax in enumerate(axials[:-1]): tikzpic += """\n \\node[inner sep=0pt, text width={w} in, minimum size={h} in, draw=black, align=center, shift={{(0,{s})}}, hyperlink node={hyper}] (n{0}) {{{fill}}};""".format(i,fill=ax[2],w=width,h=figH/(len(axials)-1),s=i*figH/(len(axials)-1),hyper=ax[3]) tikzpic += """\n \draw[->] ({w2},{h}) node[right,anchor=west] {{{text}}} -- ({w},{h});""".format(w=width/2,h=(i-0.5)*figH/(len(axials)-1),w2=width/2+0.2,text="{0} ~~~~~~~ {1}".format(ax[1],ax[0])) tikzpic += """\n \\node[anchor=east] (s{0}) at (n{0}.west) {{{1}}};""".format(i,ax[4]) tikzpic += """\n \\path let \p1 = (n{0}.west) in node[anchor=west] (source) at (\\x1,{h}) {{\underline{{Source Reference}}}};""".format(i,w=0,h=(len(axials)-0.5)*figH/(len(axials)-1),) tikzpic += """\n \draw[->] (source.west) -| (s{0}.north);""".format(i) tikzpic += """\n \draw[->] ({w2},{h}) node[right,anchor=west] {{{text}}} -- ({w},{h});""".format(w=width/2,h=(len(axials)-1.5)*figH/(len(axials)-1),w2=width/2+0.2,text="{0} ~~~~~~~ {1}".format(axials[-1][1],axials[-1][0])) tikzpic += """\n \draw ({w},{h}) node[right,anchor=west] {{{text}}};""".format(w=width/2,h=(len(axials)-0.5)*figH/(len(axials)-1), text="\underline{Elevation (cm)} ~ \underline{Description}") outStr = fig_t.format(tikzpic=tikzpic,matrix=mat,shortcap=scap,caption=cap,label=l,scale=s) with open(outp,'w') as fh: fh.write(outStr) def make_ba_rod(base): outp = os.path.join(base,"specifications{0}axial{0}figs{0}ba.tex".format(os.sep)) cap = "Burnable absorber pincell axial specification." scap = "Burnable absorber pincell axial specification" l = "fig_ba_axials" s = 1 figH = 6.0 width = 3 # the third entry is the text above the specified plane ## changed so the axial height here isn't used - the global all_planes is axials = [ ['Lowest Extent', '0', 'Water', 'mat_water', r""], ['Bottom of Support Plate', '20.0', 'Support Plate / Nozzle Borated Water', 'mat_water_spn', r"\ref{num:missing}"], ['Bottom of Fuel Rod', '', 'Dashpot Guide Tube', 'fig_guidetube_da_pin', r"\ref{num:gtu_axials}"], ['Grid 1 Bottom', '68.16472', 'Dashpot Guide Tube w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Bot. of BPRA Rod', '', 'SS Pin in Dashpot GT w/ Grid', 'mat_SS304', r"\ref{num:ba_axials}"], ['Control Rod Step 0', '74.59092', 'SS Pin in GT w/ Grid', 'mat_SS304', r"\ref{num:ba_axials}"], ['Grid 1 Top', '', 'Stainless Steel Pin in GT', 'mat_SS304', r"\ref{num:ba_axials}"], ['Bottom of Active Absorber', '', 'Burnable Absorber Pincell', 'fig_ba_pin', r"\ref{num:ba_axials}"], ['Grid 2 Bottom', '130.21692', 'Burnable Absorber Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 2 Top', '133.5748', 'Burnable Absorber Pincell', 'fig_ba_pin', r"\ref{num:ba_axials}"], ['Grid 3 Bottom', '182.41392', 'Burnable Absorber Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 3 Top', '185.7718', 'Burnable Absorber Pincell', 'fig_ba_pin', r"\ref{num:ba_axials}"], ['Grid 4 Bottom', '234.61092', 'Burnable Absorber Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 4 Top', '237.9688', 'Burnable Absorber Pincell', 'fig_ba_pin', r"\ref{num:ba_axials}"], ['Grid 5 Bottom', '286.80792', 'Burnable Absorber Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 5 Top', '290.1658', 'Burnable Absorber Pincell', 'fig_ba_pin', r"\ref{num:ba_axials}"], ['Grid 6 Bottom', '339.00492', 'Burnable Absorber Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 6 Top', '342.3628', 'Burnable Absorber Pincell', 'fig_ba_pin', r"\ref{num:ba_axials}"], ['Grid 7 Bottom', '391.20192', 'Burnable Absorber Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 7 Top', '394.5598', 'Burnable Absorber Pincell', 'fig_ba_pin', r"\ref{num:ba_axials}"], ['Top of Active Absorber', '', 'BPRA Rod Plenum Pincell', 'fig_ba_pin_plenum', r"\ref{num:ba_axials}"], ['Grid 8 Bottom', '443.50052', 'BPRA Rod Plenum Pincell w/ Grid', 'grid_spec', r"\ref{num:grid_spacer}"], ['Grid 8 Top', '446.8584', 'BPRA Rod Upper Plenum Pincell', 'fig_ba_pin_plenum', r"\ref{num:ba_axials}"], ['Top of BPRA Rod Plenum', '454.29552', 'Stainless Steel Pin in GT','mat_SS304', r"\ref{num:ba_axials}"], ['Bottom of Upper Nozzle', '', 'Stainless Steel Pin','mat_SS304', r"\ref{num:ba_axials}"], ['Top of Upper Nozzle', '454.29552', 'Water','mat_water', r"\ref{num:watts_bar}"], ['Highest Extent', '517.2672', '', '', ''],] axials = [[a[0],all_planes[a[0]],a[2],a[3],a[4]] for a in axials] mat = "" tikzpic = "" for i,ax in enumerate(axials[:-1]): tikzpic += """\n \\node[inner sep=0pt, text width={w} in, minimum size={h} in, draw=black, align=center, shift={{(0,{s})}}, hyperlink node={hyper}] (n{0}) {{{fill}}};""".format(i,fill=ax[2],w=width,h=figH/(len(axials)-1),s=i*figH/(len(axials)-1),hyper=ax[3]) tikzpic += """\n \draw[->] ({w2},{h}) node[right,anchor=west] {{{text}}} -- ({w},{h});""".format(w=width/2,h=(i-0.5)*figH/(len(axials)-1),w2=width/2+0.2,text="{0} ~~~~~~~ {1}".format(ax[1],ax[0])) tikzpic += """\n \\node[anchor=east] (s{0}) at (n{0}.west) {{{1}}};""".format(i,ax[4]) tikzpic += """\n \\path let \p1 = (n{0}.west) in node[anchor=west] (source) at (\\x1,{h}) {{\underline{{Source Reference}}}};""".format(i,w=0,h=(len(axials)-0.5)*figH/(len(axials)-1),) tikzpic += """\n \draw[->] (source.west) -| (s{0}.north);""".format(i) tikzpic += """\n \draw[->] ({w2},{h}) node[right,anchor=west] {{{text}}} -- ({w},{h});""".format(w=width/2,h=(len(axials)-1.5)*figH/(len(axials)-1),w2=width/2+0.2,text="{0} ~~~~~~~ {1}".format(axials[-1][1],axials[-1][0])) tikzpic += """\n \draw ({w},{h}) node[right,anchor=west] {{{text}}};""".format(w=width/2,h=(len(axials)-0.5)*figH/(len(axials)-1), text="\underline{Elevation (cm)} ~ \underline{Description}") outStr = fig_t.format(tikzpic=tikzpic,matrix=mat,shortcap=scap,caption=cap,label=l,scale=s) with open(outp,'w') as fh: fh.write(outStr) def make_cr_rod(base): outp = os.path.join(base,"specifications{0}axial{0}figs{0}cr.tex".format(os.sep)) cap = "Control rod pincell axial specification when fully-inserted. This only shows axial sections for the control rod itself, which is inside one of the guide tubes." scap = "Control rod pincell axial specification" l = "fig_cr_axials" s = 1 figH = 2.0 width = 3.4 # the third entry is the text above the specified plane ## changed so the axial height here isn't used - the global all_planes is axials = [ ['Lowest Extent', '0', 'Water', 'mat_water', r""], ['Bottom of Support Plate', '20.0', 'Support Plate / Nozzle Borated Water', 'mat_water_spn', r"\ref{num:missing}"], ['Bottom of Fuel Rod', '66.18352', 'Water', 'mat_water', r""], ['Control Rod Step 0', '', 'Stainless Steel Pin', 'mat_SS304', r"\ref{num:control_rod_axials}"], ['Bottom of Lower Absorber (AIC)', '', 'Control Rod Lower Absorber Pincell', 'fig_cr_pin', r"\ref{num:control_rod_axials}"], ['Bottom of Upper Absorber (B4C)', '', 'Control Rod Upper Absorber Pincell', 'fig_cr_pin_upper', r"\ref{num:control_rod_axials}"], ['Bottom of Spacer', '', 'Control Rod Spacer Pincell', 'fig_cr_pin_spacer', r"\ref{num:control_rod_axials}"], ['Bottom of Control Rod Plenum', '', 'Control Rod Upper Plenum', 'fig_cr_pin_plenum', r"\ref{num:control_rod_axials}"], ['Top of Control Rod Plenum', '', 'Stainless Steel Pin', 'mat_SS304', r"\ref{num:control_rod_axials}"], ['Highest Extent', '517.2672', 'Water', 'mat_water', ''],] axials = [[a[0],all_planes[a[0]],a[2],a[3],a[4]] for a in axials] mat = "" tikzpic = "" for i,ax in enumerate(axials[:-1]): if ax[0] == 'Control Rod Step 0': ax[0] = 'Bottom of Control Rod' d = 'black' tikzpic += """\n \\node[inner sep=0pt, text width={w} in, minimum size={h} in, draw={draw}, align=center, shift={{(0,{s})}}, hyperlink node={hyper}] (n{0}) {{{fill}}};""".format(i,fill=ax[2],w=width,h=figH/(len(axials)-1),s=i*figH/(len(axials)-1),hyper=ax[3],draw=d) tikzpic += """\n \draw[->] ({w2},{h}) node[right,anchor=west] {{{text}}} -- ({w},{h});""".format(w=width/2,h=(i-0.5)*figH/(len(axials)-1),w2=width/2+0.2,text="{0} ~~~~~~~ {1}".format(ax[1],ax[0])) tikzpic += """\n \\node[anchor=east] (s{0}) at (n{0}.west) {{{1}}};""".format(i,ax[4]) tikzpic += """\n \\path let \p1 = (n{0}.west) in node[anchor=west] (source) at (\\x1,{h}) {{\underline{{Source Reference}}}};""".format(i,w=0,h=(len(axials)-0.5)*figH/(len(axials)-1),) tikzpic += """\n \draw[->] (source.west) -| (s{0}.north);""".format(i) tikzpic += """\n \draw[->] ({w2},{h}) node[right,anchor=west] {{{text}}} -- ({w},{h});""".format(w=width/2,h=(len(axials)-1.5)*figH/(len(axials)-1),w2=width/2+0.2,text="{0} ~~~~~~~ {1}".format(axials[-1][1],axials[-1][0])) tikzpic += """\n \draw ({w},{h}) node[right,anchor=west] {{{text}}};""".format(w=width/2,h=(len(axials)-0.5)*figH/(len(axials)-1), text="\underline{Elevation (cm)} ~ \underline{Description}") outStr = fig_t.format(tikzpic=tikzpic,matrix=mat,shortcap=scap,caption=cap,label=l,scale=s) with open(outp,'w') as fh: fh.write(outStr) if __name__ == "__main__": try: basedir = sys.argv[1] except: basedir = ".." main(basedir)