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')
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')
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})
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 })
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})
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')
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')
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')
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')
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})
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')
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')
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')
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')
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')
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 })