In [ ]:
%matplotlib inline
import yt
import logging
logging.getLogger('yt').setLevel(logging.ERROR)
import numpy as np
import matplotlib
matplotlib.rcParams['font.family'] = 'stixgeneral'
matplotlib.rcParams['figure.dpi'] = 150
import matplotlib.pyplot as plt
import os
from mpl_toolkits.axes_grid1 import AxesGrid
from tools import setup_cl

In [ ]:
dirs = ['/home/ychen/data/0only_0525_hinf_nojiggle/',\
        '/home/ychen/data/0only_0314_h1_nojiggle/',\
        '/home/ychen/data/0only_0330_h0_nojiggle/',\
#        '/home/ychen/data/0only_0518_hydro_nojiggle/'
       ]
filenumbers = [130, 260]

iterator = []
for dir in dirs:
    for filenumber in filenumbers:
        iterator.append((dir, filenumber))

colors, labels = setup_cl(dirs)

In [ ]:
proj_axis = 'x'
field = 'magnetic_field_x'

fig = plt.figure()

grid = AxesGrid(fig, (0.075,0.075,0.85,0.85),
                nrows_ncols = (3, 2),
                axes_pad = 0.05,
                label_mode = "L",
                share_all = True,
                cbar_location="right",
                cbar_mode="single",
                cbar_size="1%",
                cbar_pad="0%")

for i, (dir, fno) in enumerate(iterator):
    # Load the data and create a single plot
    print(dir, fno)
    ds = yt.load(os.path.join(dir, 'data/MHD_Jet_nojiggle_hdf5_plt_cnt_%04d' % fno))# load data
    ds.coordinates.x_axis['x'] = 2
    ds.coordinates.x_axis[0] = 2
    ds.coordinates.y_axis['x'] = 1
    ds.coordinates.y_axis[0] = 1
    center = ds.arr([0, 0, 25], 'kpc')
    p = yt.SlicePlot(ds, proj_axis, field, center=center, origin='center-domain',\
                              width=((50, 'kpc'), (12, 'kpc')),)
    # Ensure the colorbar limits match for all plots
    #p.set_zlim('density', 1.67E-28, 1.67E-25)
    p.set_zlim(field, -1E-4, 1E-4)
    p.set_cmap(field, 'seismic')

    p.set_buff_size((1000,240))
    p.set_font_size(9)
    

    if i // len(filenumbers) == 0:
        p.annotate_timestamp(0.80, 0.80, time_format="{time:6.2f} {units}", time_unit='Myr', text_args={'color':'k'})
    if i % len(filenumbers) == 0:
        p.annotate_text((0.04, 0.80), labels[dir], coord_system='axis', text_args={'color':'k'})
    

    # This forces the ProjectionPlot to redraw itself on the AxesGrid axes.
    plot = p.plots[field]
    plot.figure = fig
    plot.axes = grid[i].axes
    plot.cax = grid.cbar_axes[i]

    # Finally, this actually redraws the plot.
    p._setup_plots()
fig.set_figwidth(8)

In [ ]:
for i, ax in enumerate(grid.axes_all):
    ax.tick_params(axis='x', color='grey')
    ax.tick_params(axis='y', color='grey')
    ax.set_ylim(-6, 6)
    ax.set_yticks([-5,0,5])
    ax.set_yticklabels([-5,0,5])
    ax.set_xlim(0, 50)
    ax.set_xticks(np.arange(0,55,5))
    ax.set_xticklabels([0,'',10,'',20,'',30,'',40,'',''50''])
    ax.minorticks_off()
    ax.tick_params(axis='x', color='grey')
    ax.tick_params(axis='y', color='grey')
    ax.grid(ls='--', alpha=0.3)
    if i == 2:
        ax.set_ylabel('y (kpc)')
    else:
        ax.set_ylabel('')
    if i // len(filenumbers) == len(dirs)-1:
        ax.set_xlabel('z (kpc)')
fig.set_figwidth(8)

fig.savefig('compare_3_nojiggle_magnetic_field_x.pdf', bbox_inches='tight')
fig

In [ ]:
proj_axis = 'x'
field = 'magnetic_field_z'

fig = plt.figure()

grid = AxesGrid(fig, (0.075,0.075,0.85,0.85),
                nrows_ncols = (3, 2),
                axes_pad = 0.05,
                label_mode = "L",
                share_all = True,
                cbar_location="right",
                cbar_mode="single",
                cbar_size="1%",
                cbar_pad="0%")

for i, (dir, fno) in enumerate(iterator):
    # Load the data and create a single plot
    print(dir, fno)
    ds = yt.load(os.path.join(dir, 'data/MHD_Jet_nojiggle_hdf5_plt_cnt_%04d' % fno))# load data
    ds.coordinates.x_axis['x'] = 2
    ds.coordinates.x_axis[0] = 2
    ds.coordinates.y_axis['x'] = 1
    ds.coordinates.y_axis[0] = 1
    center = ds.arr([0, 0, 25], 'kpc')
    p = yt.SlicePlot(ds, proj_axis, field, center=center, origin='center-domain',\
                              width=((50, 'kpc'), (12, 'kpc')),)
    # Ensure the colorbar limits match for all plots
    #p.set_zlim('density', 1.67E-28, 1.67E-25)
    p.set_zlim(field, -1E-4, 1E-4)
    p.set_cmap(field, 'seismic')

    p.set_buff_size((1000,240))
    p.set_font_size(9)
    

    if i // len(filenumbers) == 0:
        p.annotate_timestamp(0.80, 0.80, time_format="{time:6.2f} {units}", time_unit='Myr', text_args={'color':'k'})
    if i % len(filenumbers) == 0:
        p.annotate_text((0.04, 0.80), labels[dir], coord_system='axis', text_args={'color':'k'})
    

    # This forces the ProjectionPlot to redraw itself on the AxesGrid axes.
    plot = p.plots[field]
    plot.figure = fig
    plot.axes = grid[i].axes
    plot.cax = grid.cbar_axes[i]

    # Finally, this actually redraws the plot.
    p._setup_plots()
fig.set_figwidth(8)

In [ ]:
for i, ax in enumerate(grid.axes_all):
    ax.tick_params(axis='x', color='grey')
    ax.tick_params(axis='y', color='grey')
    ax.set_ylim(-6, 6)
    ax.set_yticks([-5,0,5])
    ax.set_yticklabels([-5,0,5])
    ax.set_xlim(0, 50)
    ax.set_xticks(np.arange(0,55,5))
    ax.set_xticklabels([0,'',10,'',20,'',30,'',40,'',''])
    ax.minorticks_off()
    ax.tick_params(axis='x', color='grey')
    ax.tick_params(axis='y', color='grey')
    ax.grid(ls='--', alpha=0.3)
    if i == 2:
        ax.set_ylabel('y (kpc)')
    else:
        ax.set_ylabel('')
    if i // len(filenumbers) == len(dirs)-1:
        ax.set_xlabel('z (kpc)')
fig.set_figwidth(8)

fig.savefig('compare_3_nojiggle_magnetic_field_z.pdf', bbox_inches='tight')
fig

In [ ]:
dirs = [
        '/home/ychen/data/0only_0525_hinf_nojiggle/',\
        '/home/ychen/data/0only_0314_h1_nojiggle/',\
        #'/home/ychen/data/0only_0330_h0_nojiggle/',\
        #'/home/ychen/data/0only_0518_hydro_nojiggle/'
       ]

filenumbers = [320]
iterator2 = []
for dir in dirs:
    for filenumber in filenumbers:
        iterator2.append((dir, filenumber))

proj_axis = 'x'
field = 'magnetic_field_x'

fig = plt.figure()

grid = AxesGrid(fig, (0.075,0.075,0.85,0.85),
                nrows_ncols = (2, 1),
                axes_pad = 0.05,
                label_mode = "L",
                share_all = True,
                cbar_location="right",
                cbar_mode="single",
                cbar_size="1%",
                cbar_pad="0%")

for i, (dir, fno) in enumerate(iterator2):
    # Load the data and create a single plot
    print(dir, fno)
    ds = yt.load(os.path.join(dir, 'data/MHD_Jet_nojiggle_hdf5_plt_cnt_%04d' % fno))# load data
    ds.coordinates.x_axis['x'] = 2
    ds.coordinates.x_axis[0] = 2
    ds.coordinates.y_axis['x'] = 1
    ds.coordinates.y_axis[0] = 1
    center = ds.arr([0, 0, 40], 'kpc')
    p = yt.SlicePlot(ds, proj_axis, field, center=center, origin='center-domain',\
                              width=((60, 'kpc'), (8, 'kpc')),)
    # Ensure the colorbar limits match for all plots
    #p.set_zlim('density', 1.67E-28, 1.67E-25)
    p.set_zlim(field, -1E-4, 1E-4)
    p.set_log(field, True, linthresh=1E-5)
    p.set_cmap(field, 'seismic')

    p.set_buff_size((1800,240))
    p.set_font_size(9)
    

    if i // len(filenumbers) == 0:
        p.annotate_timestamp(0.80, 0.83, time_format="{time:6.2f} {units}", time_unit='Myr', text_args={'color':'k'})
    if i % len(filenumbers) == 0:
        p.annotate_text((0.04, 0.83), labels[dir], coord_system='axis', text_args={'color':'k'})
    

    # This forces the ProjectionPlot to redraw itself on the AxesGrid axes.
    plot = p.plots[field]
    plot.figure = fig
    plot.axes = grid[i].axes
    plot.cax = grid.cbar_axes[i]

    # Finally, this actually redraws the plot.
    p._setup_plots()
fig.set_figwidth(10)

In [ ]:
dirs = [
        #'/home/ychen/data/0only_0525_hinf_nojiggle/',\
        '/home/ychen/data/0only_0314_h1_nojiggle/',\
        #'/home/ychen/data/0only_0330_h0_nojiggle/',\
        #'/home/ychen/data/0only_0518_hydro_nojiggle/'
       ]

filenumbers = [400]
iterator2 = []
for dir in dirs:
    for filenumber in filenumbers:
        iterator2.append((dir, filenumber))

proj_axis = 'x'
field = 'magnetic_field_x'

fig = plt.figure()

grid = AxesGrid(fig, (0.075,0.075,0.85,0.85),
                nrows_ncols = (1, 1),
                axes_pad = 0.05,
                label_mode = "L",
                share_all = True,
                cbar_location="right",
                cbar_mode="single",
                cbar_size="1%",
                cbar_pad="0%")

for i, (dir, fno) in enumerate(iterator2):
    # Load the data and create a single plot
    print(dir, fno)
    ds = yt.load(os.path.join(dir, 'data/MHD_Jet_nojiggle_hdf5_plt_cnt_%04d' % fno))# load data
    ds.coordinates.x_axis['x'] = 2
    ds.coordinates.x_axis[0] = 2
    ds.coordinates.y_axis['x'] = 1
    ds.coordinates.y_axis[0] = 1
    center = ds.arr([0, 0, 40], 'kpc')
    p = yt.SlicePlot(ds, proj_axis, field, center=center, origin='center-domain',\
                              width=((80, 'kpc'), (12, 'kpc')),)
    # Ensure the colorbar limits match for all plots
    #p.set_zlim('density', 1.67E-28, 1.67E-25)
    p.set_zlim(field, -1E-4, 1E-4)
    p.set_log(field, True, linthresh=1E-5)
    p.set_cmap(field, 'RdBu')

    p.set_buff_size((1600,240))
    p.set_font_size(9)
    

    if i // len(filenumbers) == 0:
        p.annotate_timestamp(0.90, 0.83, time_format="{time:6.2f} {units}", time_unit='Myr', text_args={'color':'k'})
    if i % len(filenumbers) == 0:
        p.annotate_text((0.04, 0.83), labels[dir], coord_system='axis', text_args={'color':'k'})
    

    # This forces the ProjectionPlot to redraw itself on the AxesGrid axes.
    plot = p.plots[field]
    plot.figure = fig
    plot.axes = grid[i].axes
    plot.cax = grid.cbar_axes[i]

    # Finally, this actually redraws the plot.
    p._setup_plots()
fig.set_figwidth(8)

In [ ]:
p.set_log(field, False)
p.set_zlim(field, -1E-4, 1E-4)
p.set_cmap(field, 'seismic')
p.show()

In [ ]:
p.set_log(field, True, linthresh=1E-5)
p.set_zlim(field, -1E-4, 1E-4)
p.set_cmap(field, 'seismic')
p.show()

In [ ]:
for i, ax in enumerate(grid.axes_all):
    ax.tick_params(axis='x', color='grey')
    ax.tick_params(axis='y', color='grey')
    ax.set_ylim(-6, 6)
    ax.set_yticks([-5,0,5])
    ax.set_yticklabels([-5,0,5])
    ax.set_xlim(0, 70)
    ax.set_xticks(np.arange(0,75,5))
    ax.set_xticklabels([0,'',10,'',20,'',30,'',40,'',50,'',60,'',70])
    ax.minorticks_off()
    ax.tick_params(axis='x', color='grey')
    ax.tick_params(axis='y', color='grey')
    ax.grid(ls='--', alpha=0.3)
    if i == 2:
        ax.set_ylabel('y (kpc)')
    else:
        ax.set_ylabel('')
    if i // len(filenumbers) == len(dirs)-1:
        ax.set_xlabel('z (kpc)')
fig.set_figwidth(8)

In [ ]:
dirs = [
        #'/home/ychen/data/0only_0525_hinf_nojiggle/',\
        '/home/ychen/data/0only_0314_h1_nojiggle/',\
        #'/home/ychen/data/0only_0330_h0_nojiggle/',\
        #'/home/ychen/data/0only_0518_hydro_nojiggle/'
       ]

filenumbers = [400]
iterator2 = []
for dir in dirs:
    for filenumber in filenumbers:
        iterator2.append((dir, filenumber))

proj_axis = 'x'
field = 'mach_alfven'

fig = plt.figure()

grid = AxesGrid(fig, (0.075,0.075,0.85,0.85),
                nrows_ncols = (1, 1),
                axes_pad = 0.05,
                label_mode = "L",
                share_all = True,
                cbar_location="right",
                cbar_mode="single",
                cbar_size="1%",
                cbar_pad="0%")

for i, (dir, fno) in enumerate(iterator2):
    # Load the data and create a single plot
    print(dir, fno)
    ds = yt.load(os.path.join(dir, 'data/MHD_Jet_nojiggle_hdf5_plt_cnt_%04d' % fno))# load data
    ds.coordinates.x_axis['x'] = 2
    ds.coordinates.x_axis[0] = 2
    ds.coordinates.y_axis['x'] = 1
    ds.coordinates.y_axis[0] = 1
    center = ds.arr([0, 0, 40], 'kpc')
    p = yt.SlicePlot(ds, proj_axis, field, center=center, origin='center-domain',\
                              width=((80, 'kpc'), (12, 'kpc')),)
    # Ensure the colorbar limits match for all plots
    #p.set_zlim('density', 1.67E-28, 1.67E-25)
    p.set_zlim(field, 0, 15)
    p.set_log(field, False)
    p.set_cmap(field, 'viridis')

    p.set_buff_size((1600,240))
    p.set_font_size(9)
    

    if i // len(filenumbers) == 0:
        p.annotate_timestamp(0.90, 0.83, time_format="{time:6.2f} {units}", time_unit='Myr', text_args={'color':'k'})
    if i % len(filenumbers) == 0:
        p.annotate_text((0.04, 0.83), labels[dir], coord_system='axis', text_args={'color':'k'})
    

    # This forces the ProjectionPlot to redraw itself on the AxesGrid axes.
    plot = p.plots[field]
    plot.figure = fig
    plot.axes = grid[i].axes
    plot.cax = grid.cbar_axes[i]

    # Finally, this actually redraws the plot.
    p._setup_plots()
fig.set_figwidth(8)

In [ ]: