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

#import fission.py #-- my own library
sys.path.append('/Users/talou/git/evaluation-tools/')
import fission as fission
import fissionHistories 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:  2.0.0

First, we read the default CGMF output.

[3]:
h = fh.FissionHistories ("cgmf-histories.dat", fmt="new")

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

[4]:
Ecm  = h.getNeutronEcm()
Elab = h.getNeutronElab()

Extracting the list of neutron energies in the center-of-mass frame of the emitting fragment for the fission event number 154:

[5]:
Ecm[154]
[5]:
[0.746, 0.582, 0.593, 1.111]

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

[6]:
eout,pfns =h.pfns()

which returns two arrays: (1) the outgoing energy grid (in MeV); (2) the prompt fission neutron spectrum (in n/MeV/nu-bar). Here’s how to plot the result:

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

plt.subplot(1,2,1)
plt.step(eout,pfns,'r-',linewidth=3)
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)
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

Average neutron energies can be simply obtained as:

[8]:
print (h.meanNeutronEcm(),h.meanNeutronElab())
1.33338324555 2.10256863337

or, equivalently:

[9]:
print (np.mean(Ecm.sum()), np.mean(Elab.sum()))
1.33338324555 2.10256863337
[ ]: