ax4.set_xlabel('Distance x (cm)')
ax4.set_ylabel('By')
ax4.set_xlim([xmin, xmax])

# Bz
ax5.plot(x_mesh, MagBz, 'o', mec=colors[4], mfc='None', label='simulation')
ax5.plot(x_ana, data_ana[:, 6], color=colors[4], label='analytical')
ax5.set_xlabel('Distance x (cm)')
ax5.set_ylabel('Bz')
ax5.set_xlim([xmin, xmax])

# Errors
icol = [1, 2, 3, 5, 6]
var = [rho, ux, uy, MagBy, MagBz]
names = ['rho', 'Vx', 'Vy', 'By', 'Bz']
for i in range(5):
    y1 = data_ana[:, icol[i]]
    f1 = interp1d(x_ana, y1)
    err1 = var[i] - f1(x_mesh)
    ax6.plot(x_mesh, err1, color=colors[i], label=names[i])
ax6.legend(loc=1, fontsize=8)
ax6.set_xlabel('Distance x (cm)')
ax6.set_ylabel('Error')
ax6.set_xlim([xmin, xmax])

fig.subplots_adjust(wspace=0.33)
fig.savefig('nimhd-cshock-hall.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data, 'nimhd-cshock-hall')
예제 #2
0
cb2 = plt.colorbar(im2, ax=ax2, label='B^2')
cb3 = plt.colorbar(im3, ax=ax3, label='Pressure')
cb4 = plt.colorbar(im4, ax=ax4, label='Velocity^2')

ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax3.set_xlabel('x')
ax3.set_ylabel('y')
ax4.set_xlabel('x')
ax4.set_ylabel('y')
ax1.set_aspect('equal')
ax2.set_aspect('equal')
ax3.set_aspect('equal')
ax4.set_aspect('equal')
ax1.set_xlim([xmin, xmax])
ax1.set_ylim([ymin, ymax])
ax2.set_xlim([xmin, xmax])
ax2.set_ylim([ymin, ymax])
ax3.set_xlim([xmin, xmax])
ax3.set_ylim([ymin, ymax])
ax4.set_xlim([xmin, xmax])
ax4.set_ylim([ymin, ymax])

fig.subplots_adjust(wspace=0.25)
fig.savefig('orszag-tang.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data, 'orszag-tang')
예제 #3
0
                   ypx,
                   map_d,
                   cmap='Blues',
                   levels=np.linspace(np.nanmin(map_d), np.nanmax(map_d), 10))
stm = ax3.streamplot(xpx, ypx, map_bx, map_bz, color="k")
im2 = ax4.contourf(xpx, ypx, map_p, cmap='Reds')
vskip = 4
vec = ax4.quiver(xpx[::vskip],
                 ypx[::vskip],
                 map_ux[::vskip, ::vskip],
                 map_uz[::vskip, ::vskip],
                 color="k",
                 pivot='mid',
                 scale=40)
cb1 = plt.colorbar(im1, ax=ax3, label='log(Density)')
cb2 = plt.colorbar(im2, ax=ax4, label='log(Pressure)')
ax3.set_xlabel('Distance x (pc)')
ax3.set_ylabel('Distance z (pc)')
ax3.set_xlim([xmin, xmax])
ax3.set_ylim([ymin, ymax])
ax4.set_xlabel('Distance x (pc)')
ax4.set_ylabel('Distance z (pc)')
ax4.set_xlim([xmin, xmax])
ax4.set_ylim([ymin, ymax])

fig.subplots_adjust(wspace=0.35)
fig.savefig('rt-dirac.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data, 'rt-dirac', tolerance={"all": 8.0e-11})
예제 #4
0
ax3.set_ylabel('Distance z (cm)')
ax3.set_xlim([xmin, xmax])
ax3.set_ylim([ymin, ymax])

# Er(x,y) map
cube = np.where(np.abs(z) <= 0.51 * data["dx"])
slice_x = x[cube]
slice_y = y[cube]
slice_E = np.log10(Er[cube])
points = np.transpose([slice_x, slice_y])
map_E = griddata(points, slice_E, (grid_x, grid_y), method='nearest')

im3 = ax4.contourf(xpx, ypx, map_E)
cb3 = plt.colorbar(im3, ax=ax4, label='log(Er)')
ax4.set_xlabel('Distance x (cm)')
ax4.set_ylabel('Distance y (cm)')
ax4.set_xlim([xmin, xmax])
ax4.set_ylim([ymin, ymax])

fig.subplots_adjust(wspace=0.25)
fig.savefig('dirac3d.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data,
                           'dirac3d',
                           tolerance={
                               "velocity_x": 1.5e-12,
                               "velocity_y": 1.5e-12,
                               "velocity_z": 1.5e-12
                           })
예제 #5
0
ax1.set_ylabel('P')
ax5.yaxis.set_major_locator(majorLocatorY)
ax5.plot(x, amrlev, color='black', ls='dotted')
ax5.set_ylabel('AMR Level')

# Velocity
ax2.semilogy(x, ux + 1., 'o', color='black', markerfacecolor='none')
ax2.set_xlabel('Distance (cm)')
ax2.set_ylabel('Velocity (cm/s)')

# Relative error
ax3.semilogy(x, abs(pr - ana) / ana, color='red')
ax3.set_xlabel('Distance (cm)')
ax3.set_ylabel('Relative error')
ax6.yaxis.set_major_locator(majorLocatorY)
ax6.plot(x, amrlev, color='black', ls='dotted')
ax6.set_ylabel('AMR Level')

# Pressure ratio
ax4.semilogy(x, pr / p, 'o', color='black', markerfacecolor='none')
ax4.set_xlabel('Distance (cm)')
ax4.set_ylabel('Cosmic rays Pressure/Thermal pressure')

fig.subplots_adjust(wspace=0.33)
fig.savefig('heaviside-cr.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data,
                           'heaviside-cr',
                           tolerance={"velocity_x": 1.5e-12})
예제 #6
0
ax2.set_xlabel('Distance (cm)')
ax2.set_ylabel('Velocity (cm/s)')

# Pressure
ax3.plot(x, p, 'o', color='black', markerfacecolor='none')
ax3.set_xlabel('Distance (cm)')
ax3.set_ylabel('Pressure (g/cm/s2)')

# B field
ax4.plot(x, By, 'o', color='black', markerfacecolor='none')
ax4.set_xlabel('Distance (cm)')
ax4.set_ylabel('By (G)')

# Read analytical solution
data_ana = np.loadtxt('imhd-tube-ana.dat')
x_ana = data_ana[:, 0]
rho_ana = data_ana[:, 1]
u_ana = data_ana[:, 2]
p_ana = data_ana[:, 8]
By_ana = data_ana[:, 6]
ax1.plot(x_ana, rho_ana, color='red')
ax2.plot(x_ana, u_ana, color='red')
ax3.plot(x_ana, p_ana, color='red')
ax4.plot(x_ana, By_ana, color='red')

fig.subplots_adjust(wspace=0.3)
fig.savefig('imhd-tube.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data["data"], 'imhd-tube')
ax2.set_xlim([xmin, xmax])

# Pressure
ax3.plot(x, p, 'o-', color='black', markerfacecolor='none')
ax3.set_xlabel('Distance (cm)')
ax3.set_ylabel('Pressure (g/cm/s2)')
ax3.set_xlim([xmin, xmax])

# Temperature
lw = 2
ax4.plot(x, T, color='black', label='T', lw=lw)
ax4.set_xlabel('Distance (cm)')
ax4.set_ylabel('Temperature (K)')
for ig in range(ngr):
    ax4.plot(x, Tr[:, ig], label='Tr(' + str(ig + 1) + ')', lw=lw)
ax4.plot(x, Tr_tot, label='Tr tot', lw=lw)
ax4.set_xlabel('Distance (cm)')
ax4.set_ylabel('Temperature (K)')
ax4.set_xlim([xmin, xmax])
ax4.legend(loc=1, fontsize=12)

ax5.plot(x, amrlev, color='black', ls='dotted', label='AMR Level')
ax5.set_ylabel('AMR Level')
ax5.legend(loc=7, fontsize=12)

fig.subplots_adjust(wspace=0.3)
fig.savefig('radiative-shock.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data, 'radiative-shock')
예제 #8
0
ax2.set_xlabel('Distance (cm)')
ax2.set_ylabel('Velocity (cm/s)')

# Pressure
ax3.plot(x,p,'o',color='black',markerfacecolor='none')
ax3.set_xlabel('Distance (cm)')
ax3.set_ylabel('Pressure (g/cm/s2)')

# Temperature
ax4.plot(x,T,'o',color='black',markerfacecolor='none')
ax4.set_xlabel('Distance (cm)')
ax4.set_ylabel('Temperature (K)')

# Read analytical solution
data_ana = np.loadtxt('sod-tube-ana.dat')
x_ana    = data_ana[:,1]
rho_ana  = data_ana[:,3]
u_ana    = data_ana[:,2]
p_ana    = data_ana[:,4]
T_ana    = data_ana[:,5]*1.2027e-8/2.5
ax1.plot(x_ana,rho_ana,color='red')
ax2.plot(x_ana,u_ana,color='red')
ax3.plot(x_ana,p_ana,color='red')
ax4.plot(x_ana,T_ana,color='red')

fig.subplots_adjust(wspace=0.3)
fig.savefig('sod-tube.pdf',bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data,'sod-tube')
예제 #9
0
cb2.ax.yaxis.set_label_coords(-1.1, 0.5)
cb3.ax.yaxis.set_label_coords(-1.1, 0.5)
cb4.ax.yaxis.set_label_coords(-1.1, 0.5)

ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax3.set_xlabel('x')
ax3.set_ylabel('y')
ax4.set_xlabel('x')
ax4.set_ylabel('y')
ax1.set_aspect('equal')
ax2.set_aspect('equal')
ax3.set_aspect('equal')
ax4.set_aspect('equal')
ax1.set_xlim([xmin, xmax])
ax1.set_ylim([ymin, ymax])
ax2.set_xlim([xmin, xmax])
ax2.set_ylim([ymin, ymax])
ax3.set_xlim([xmin, xmax])
ax3.set_ylim([ymin, ymax])
ax4.set_xlim([xmin, xmax])
ax4.set_ylim([ymin, ymax])

fig.subplots_adjust(wspace=0.25)
fig.savefig('implosion.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data, 'implosion')
예제 #10
0
ax2.set_xlabel('Distance (cm)')
ax2.set_ylabel('Velocity (cm/s)')

# Pressure
ax3.plot(x,p,'o',color='black',markerfacecolor='none')
ax3.set_xlabel('Distance (cm)')
ax3.set_ylabel('Pressure (g/cm/s2)')

# Temperature
ax4.plot(x,T,'o',color='black',markerfacecolor='none')
ax4.set_xlabel('Distance (cm)')
ax4.set_ylabel('Temperature (K)')

# Read analytical solution
data_ana = np.loadtxt('sod-cr-ana.dat',skiprows=3)
x_ana    = data_ana[:,1]
rho_ana  = data_ana[:,3]
u_ana    = data_ana[:,2]
p_ana    = data_ana[:,4]
T_ana    = data_ana[:,5]*1.2027e-8/2.5
ax1.plot(x_ana,rho_ana,color='red')
ax2.plot(x_ana,u_ana,color='red')
ax3.plot(x_ana,p_ana,color='red')
ax4.plot(x_ana,T_ana,color='red')

fig.subplots_adjust(wspace=0.3)
fig.savefig('sod-cr.pdf',bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data,'sod-cr')
예제 #11
0
                   map_d,
                   cmap='Blues',
                   levels=np.linspace(np.nanmin(map_d), np.nanmax(map_d), 10))
im2 = ax4.contourf(xpx, ypx, map_p, cmap='Reds')
vskip = 4
vec = ax4.quiver(xpx[::vskip],
                 ypx[::vskip],
                 map_ux[::vskip, ::vskip],
                 map_uy[::vskip, ::vskip],
                 color="k",
                 pivot='mid',
                 scale=0.05)
cb1 = plt.colorbar(im1, ax=ax3, label='log(Density)')
cb2 = plt.colorbar(im2, ax=ax4, label='log(Pressure)')
ax3.set_xlabel('Distance x (pc)')
ax3.set_ylabel('Distance z (pc)')
ax3.set_xlim([xmin, xmax])
ax3.set_ylim([ymin, ymax])
ax4.set_xlabel('Distance x (pc)')
ax4.set_ylabel('Distance z (pc)')
ax4.set_xlim([xmin, xmax])
ax4.set_ylim([ymin, ymax])

fig.subplots_adjust(wspace=0.35)
fig.savefig('stromgren2d.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data["data"],
                           'stromgren2d',
                           tolerance={"all": 3.0e-06})
예제 #12
0
cb2 = plt.colorbar(im2, ax=ax2, label='B^2')
cb3 = plt.colorbar(im3, ax=ax3, label='Pressure')
cb4 = plt.colorbar(im4, ax=ax4, label='Velocity^2')

ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax3.set_xlabel('x')
ax3.set_ylabel('y')
ax4.set_xlabel('x')
ax4.set_ylabel('y')
ax1.set_aspect('equal')
ax2.set_aspect('equal')
ax3.set_aspect('equal')
ax4.set_aspect('equal')
ax1.set_xlim([xmin, xmax])
ax1.set_ylim([ymin, ymax])
ax2.set_xlim([xmin, xmax])
ax2.set_ylim([ymin, ymax])
ax3.set_xlim([xmin, xmax])
ax3.set_ylim([ymin, ymax])
ax4.set_xlim([xmin, xmax])
ax4.set_ylim([ymin, ymax])

fig.subplots_adjust(wspace=0.25)
fig.savefig('loop-cr.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data, 'loop-cr')
예제 #13
0
    yr = 86400.0 * 365.25
    time = data["info"]["time"] * data["info"]["unit_t"] / yr / 1000.0

    u_m = data["info"]["unit_d"] * data["info"]["unit_l"]**3
    msun = 1.98847e33
    rate = data["sinks"]["acc_rate"] * u_m * yr / msun

    return time, rate


times = []
rates = []

for i in range(2, 16):
    t, r = get_accretion_rate(i)
    times.append(t)
    rates.append(r)


fig = plt.figure()
axis = fig.add_subplot(111)
axis.semilogy(times, rates, '-+')
axis.set_xlabel('Time [kyr]')
axis.set_ylabel(r'$\dot{M}_{\mathrm{Bondi}}~[M_{\odot}/\mathrm{yr}]$')
fig.savefig('smbh-bondi.pdf', bbox_inches="tight")

data = visu_ramses.load_snapshot(15)
for key in data["sinks"].keys():
    data["data"]["sink_"+key] = data["sinks"][key]
visu_ramses.check_solution(data["data"],'smbh-bondi')
예제 #14
0
ypx = np.linspace(ymin + 0.5 * dpy, ymax - 0.5 * dpy, nx)
grid_x, grid_y = np.meshgrid(xpx, ypx)
points = np.transpose([im_x, im_y])
z1 = griddata(points, rho[cube], (grid_x, grid_y), method='nearest')
z3 = griddata(points, ux[cube], (grid_x, grid_y), method='nearest')
z4 = griddata(points, uz[cube], (grid_x, grid_y), method='nearest')

z3 = z3 / np.sqrt(z3**2 + z4**2)
z4 = z4 / np.sqrt(z3**2 + z4**2)

im4 = ax6.contourf(xpx, ypx, z1, nc, cmap='jet')
vskip = 6
vec = ax6.quiver(xpx[::vskip],
                 ypx[::vskip],
                 z3[::vskip, ::vskip],
                 z4[::vskip, ::vskip],
                 color="w")
cb4 = plt.colorbar(im4, ax=ax6, label='log(Density)')
cb4.ax.yaxis.set_label_coords(-1.1, 0.5)
ax6.set_xlabel('x')
ax6.set_ylabel('y')
ax6.set_aspect('equal')
ax6.set_xlim([xmin, xmax])
ax6.set_ylim([ymin, ymax])

#fig.subplots_adjust(wspace=0.25)
fig.savefig('collapse-baro.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data, 'collapse-baro')
예제 #15
0
ypx = np.linspace(ymin + 0.5 * dpy, ymax - 0.5 * dpy, nx)
grid_x, grid_y = np.meshgrid(xpx, ypx)
points = np.transpose([im_x, im_y])
z1 = griddata(points, rho[cube], (grid_x, grid_y), method='nearest')
z3 = griddata(points, ux[cube], (grid_x, grid_y), method='nearest')
z4 = griddata(points, uz[cube], (grid_x, grid_y), method='nearest')

z3 = z3 / np.sqrt(z3**2 + z4**2)
z4 = z4 / np.sqrt(z3**2 + z4**2)

im4 = ax6.contourf(xpx, ypx, z1, nc, cmap='jet')
vskip = 6
vec = ax6.quiver(xpx[::vskip],
                 ypx[::vskip],
                 z3[::vskip, ::vskip],
                 z4[::vskip, ::vskip],
                 color="w")
cb4 = plt.colorbar(im4, ax=ax6, label='log(Density)')
cb4.ax.yaxis.set_label_coords(-1.1, 0.5)
ax6.set_xlabel('x')
ax6.set_ylabel('y')
ax6.set_aspect('equal')
ax6.set_xlim([xmin, xmax])
ax6.set_ylim([ymin, ymax])

#fig.subplots_adjust(wspace=0.25)
fig.savefig('collapse-rhd.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data, 'collapse-rhd')
cb1.ax.yaxis.set_label_coords(-1.1, 0.5)
ax2.set_xlabel('Distance x (cm)')
ax2.set_ylabel('Distance z (cm)')
ax2.set_xlim([-0.25, 0.25])
ax2.set_ylim([-0.25, 0.25])

map_E = np.zeros([nx, nx])
for j in range(nx):
    r = np.sqrt(xpx**2 + ypx[j]**2)
    map_E[:, j] = (map_B[:, j] - analytical_solution(
        r, dxmin, t)) / analytical_solution(r, dxmin, t)

im2 = ax3.contourf(xpx,
                   ypx,
                   map_E,
                   cmap='RdBu',
                   levels=np.linspace(-0.01, 0.01, 11),
                   extend='both')
cb2 = plt.colorbar(im2, ax=ax3, label='Error')
cb2.ax.yaxis.set_label_coords(-1.1, 0.5)
ax3.set_xlabel('Distance x (cm)')
ax3.set_ylabel('Distance z (cm)')
ax3.set_xlim([-0.25, 0.25])
ax3.set_ylim([-0.25, 0.25])

fig.subplots_adjust(wspace=0.25)
fig.savefig('nimhd-diffusion-ohm.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data, 'nimhd-diffusion-ohm')
예제 #17
0
         data_ana[:, 3] * 100.0,
         color='orange',
         lw=lw,
         label='T_ana')
ax4.plot(x,
         Tr,
         's',
         markeredgecolor='r',
         lw=lw,
         markerfacecolor='none',
         label='Tr_simu')
ax4.plot(data_ana[:, 4],
         data_ana[:, 5] * 100.0,
         color='cyan',
         lw=lw,
         label='Tr_ana')
ax4.set_xlabel('Distance (cm)')
ax4.set_ylabel('Temperature (K)')
ax4.set_xlim([xmin, xmax])
ax4.legend(loc=2, fontsize=12)

ax5.plot(x, amrlev, color='grey', ls='dotted', label='AMR Level')
ax5.set_ylabel('AMR Level')
ax5.legend(loc=7, fontsize=12)

#fig.subplots_adjust(wspace=0.3)
fig.savefig('rshock-mach2.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data, 'rshock-mach2')
예제 #18
0
msink = data["sink1"][1]
asink = data["sink1"][15]
ax8.text(-230,
         220,
         'Sink 2: %.3f Msun' % msink,
         color='k',
         bbox=dict(facecolor='w', edgecolor='k'),
         ha='left',
         va='center')
ax9.text(-230,
         220,
         'Sink 2: %.1f yr' % asink,
         color='k',
         bbox=dict(facecolor='w', edgecolor='k'),
         ha='left',
         va='center')

#fig.subplots_adjust(wspace=0.25)
fig.savefig('collapse-sink.pdf', bbox_inches='tight')

# Check results against reference solution
visu_ramses.check_solution(data,
                           'collapse-sink',
                           tolerance={
                               "all": 1.e-06,
                               "passive_scalar_1": 4.5e-5,
                               "radiative_energy_1": 4.5e-5,
                               "temperature": 4.5e-5,
                               "thermal_pressure": 4.5e-5
                           })