-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #347 from SNEWS2/jpkneller-patch-3
Add `Fischer_2020` model
- Loading branch information
Showing
6 changed files
with
314 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,189 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"# Fischer 2020 Model\n", | ||
"\n", | ||
"CCSN neutrino model from Tobias Fischer\n", | ||
"\n", | ||
"The citation is: *Neutrino signal from proto-neutron star evolution: Effects of opacities from charged-current-neutrino interactions and inverse neutron decay*, Fischer, Tobias ; Guo, Gang ; Dzhioev, Alan A. ; Martínez-Pinedo, Gabriel ; Wu, Meng-Ru ; Lohs, Andreas ; Qian, Yong-Zhong, Physical Review C, Volume 101, Issue 2, article id.025804 (https://ui.adsabs.harvard.edu/link_gateway/2020PhRvC.101b5804F/doi:10.1103/PhysRevC.101.025804), [arXiv:1804.10890](https://arxiv.org/abs/1804.10890)." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"import matplotlib as mpl\n", | ||
"import matplotlib.pyplot as plt\n", | ||
"import numpy as np\n", | ||
"\n", | ||
"from astropy import units as u \n", | ||
"from snewpy.neutrino import Flavor\n", | ||
"from snewpy.models.ccsn import Fischer_2020\n", | ||
"from snewpy.flavor_transformation import NoTransformation, AdiabaticMSW, ThreeFlavorDecoherence\n", | ||
"\n", | ||
"mpl.rc('font', size=16)\n", | ||
"%matplotlib inline" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"## Initialize Models\n", | ||
"\n", | ||
"To start, let’s see what progenitors are available for the `Fischer_2020` model. We can use the `param` property to view all physics parameters and their possible values:" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"Fischer_2020.param" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"In this case, there’s just a single progenitor available; so let’s initialize it. If this is the first time you’re using this progenitor, snewpy will automatically download the required data files for you." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"F2020 = Fischer_2020()\n", | ||
"\n", | ||
"F2020" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"Plot the luminosity of different neutrino flavors for this model. " | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"fig, ax = plt.subplots(1, figsize=(8, 6), tight_layout=False)\n", | ||
"\n", | ||
"for flavor in Flavor:\n", | ||
" if flavor.is_electron == True:\n", | ||
" color='C0'\n", | ||
" else:\n", | ||
" color='C1'\n", | ||
" ls='-' if flavor.is_neutrino else ':'\n", | ||
" lw = 2\n", | ||
" \n", | ||
" ax.plot(F2020.time, F2020.luminosity[flavor]/1e51, # Report luminosity in units foe/s\n", | ||
" label=flavor.to_tex(), color=color, ls=ls, lw=lw)\n", | ||
" \n", | ||
"ax.set(xlim=(-0.1, 1), xlabel=r'$t-t_{\\rm bounce}$ [s]')\n", | ||
"ax.grid()\n", | ||
"ax.legend(loc='upper right', ncol=2, fontsize=18)\n", | ||
"ax.set(ylabel=r'luminosity [foe s$^{-1}$]');" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"## Initial and Oscillated Spectra\n", | ||
"\n", | ||
"Plot the neutrino spectra at the source and after the requested flavor transformation has been applied.\n", | ||
"\n", | ||
"### Adiabatic MSW Flavor Transformation: Normal mass ordering" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# Adiabatic MSW effect. NMO is used by default.\n", | ||
"xform_nmo = AdiabaticMSW()\n", | ||
"\n", | ||
"# Energy array and time to compute spectra.\n", | ||
"# Note that any convenient units can be used and the calculation will remain internally consistent.\n", | ||
"E = np.linspace(0,100,201) * u.MeV\n", | ||
"t = 50*u.ms\n", | ||
"\n", | ||
"ispec = F2020.get_initial_spectra(t, E)\n", | ||
"ospec_nmo = F2020.get_transformed_spectra(t, E, xform_nmo)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"fig, axes = plt.subplots(1,2, figsize=(12,5), sharex=True, sharey=True, tight_layout=True)\n", | ||
"\n", | ||
"for i, spec in enumerate([ispec, ospec_nmo]):\n", | ||
" ax = axes[i]\n", | ||
" for flavor in Flavor:\n", | ||
" if flavor.is_electron == True:\n", | ||
" color='C0'\n", | ||
" else:\n", | ||
" color='C1'\n", | ||
" ax.plot(E, spec[flavor],\n", | ||
" label=flavor.to_tex(),\n", | ||
" color=color,\n", | ||
" ls='-' if flavor.is_neutrino else ':', lw=2,\n", | ||
" alpha=0.7)\n", | ||
"\n", | ||
" ax.set(xlabel=r'$E$ [{}]'.format(E.unit),\n", | ||
" title='Initial Spectra: $t = ${:.1f}'.format(t) if i==0 else 'Oscillated Spectra: $t = ${:.1f}'.format(t))\n", | ||
" ax.grid()\n", | ||
" ax.legend(loc='upper right', ncol=2, fontsize=16)\n", | ||
"\n", | ||
"ax = axes[0]\n", | ||
"ax.set(ylabel=r'flux [erg$^{-1}$ s$^{-1}$]')\n", | ||
"\n", | ||
"fig.tight_layout();" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Python 3 (ipykernel)", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.12.3" | ||
}, | ||
"vscode": { | ||
"interpreter": { | ||
"hash": "e2528887d751495e023d57d695389d9a04f4c4d2e5866aaf6dc03a1ed45c573e" | ||
} | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 4 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters