Prompt Fission Neutron SpectrumΒΆ

[1]:
### initializations and import libraries
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
%matplotlib inline
%pylab inline

from CGMFtk import histories as fh
Populating the interactive namespace from numpy and matplotlib
[2]:
### rcParams are the default parameters for matplotlib
import matplotlib as mpl

print ("Matplotbib Version: ", mpl.__version__)

mpl.rcParams['font.size'] = 18
mpl.rcParams['font.family'] = 'Helvetica', 'serif'
#mpl.rcParams['font.color'] = 'darkred'
mpl.rcParams['font.weight'] = 'normal'

mpl.rcParams['axes.labelsize'] = 18.
mpl.rcParams['xtick.labelsize'] = 18.
mpl.rcParams['ytick.labelsize'] = 18.
mpl.rcParams['lines.linewidth'] = 2.

font = {'family' : 'serif',
        'color'  : 'darkred',
        'weight' : 'normal',
        'size'   : 18,
        }

mpl.rcParams['xtick.major.pad']='10'
mpl.rcParams['ytick.major.pad']='10'

mpl.rcParams['image.cmap'] = 'inferno'
Matplotbib Version:  3.1.3

First, we read the default CGMF output.

[3]:
hist = fh.Histories('98252sf.cgmf')

Neutron energies in the center-of-mass and laboratory reference frames can be obtained as:

[5]:
Ecm  = hist.getNeutronEcm()
Elab = hist.getNeutronElab()

Extracting the list of neutron energies in the center-of-mass frame of the emitting fragment for the fission fragment number 154 (light fragment of the 76th event):

[8]:
print (Ecm[154])
[6.987, 0.665, 0.88]

All neutron energies can then be binned in histograms, and analyzed and plotted that way. The CGMF python package Histories come with a function to directly extract PFNS:

[9]:
eout,pfns = hist.pfns()

which returns two arrays: (1) the outgoing energy grid (midpoints in MeV); (2) the prompt fission neutron spectrum (in n/MeV/nu-bar).

The result can be plotted using:

[10]:
fig=figure(figsize(14,6))

plt.subplot(1,2,1)
plt.step(eout,pfns,'r-',linewidth=3,where='mid')
plt.xlim(0.1,20.0)
plt.ylim(1e-5,1.0)
plt.xlabel("Outgoing Neutron Energy (MeV)")
plt.ylabel(r"PFNS (n/f/MeV/$\overline{\nu}$)")
plt.yscale('log')

plt.subplot(1,2,2)
plt.step(eout,pfns,'r-',linewidth=3,where='mid')
plt.xlim(0.1,20.0)
plt.xscale('log')
plt.xlabel("Outgoing Neutron Energy (MeV)")
plt.ylabel(r"PFNS (n/f/MeV/$\overline{\nu}$)")

plt.tight_layout()
plt.show()
_images/nb_pfns_12_0.png
[ ]: