Hi, hope this helps:
import openmc
import numpy as np
AmBeSource = openmc.IndependentSource()
# AmBe Spectrum (Ref: https://doi.org/10.1016/0020-708X(70)90066-9)
# Equally spaced (0.2 MeV) Bins from 0.2 to 11.2 (as in Ref)
lstEnergy = np.linspace(0.2e6, 11.2e6, 56).tolist()
lstProbability = [0.028, 0.028, 0.024, 0.0205, 0.024, 0.028, 0.0168, 0.0182, 0.0178,
0.0183, 0.0202, 0.0202, 0.0201, 0.0225, 0.0286, 0.0351, 0.0362, 0.0324,
0.0296, 0.0284, 0.0277, 0.0283, 0.0301, 0.0286, 0.0311, 0.0295, 0.0265,
0.0241, 0.0216, 0.0184, 0.0168, 0.0169, 0.0162, 0.0146, 0.0134, 0.0143,
0.0159, 0.0166, 0.0171, 0.0162, 0.0134, 0.0102, 0.0073, 0.0048, 0.0036,
0.0040, 0.0053, 0.0064, 0.0064, 0.0058, 0.0048, 0.0035, 0.0022, 0.0011, 0.0003, 0.0001]
# Energy distribution
AmBeSource.energy = openmc.stats.Tabular(lstEnergy, lstProbability,'histogram')
# Cylindrical Distribution, use your own values for source dimensions i.e., radius and length
r = openmc.stats.PowerLaw(0., radius, 1.)
phi = openmc.stats.Uniform(0., 2 * np.pi)
z = openmc.stats.Uniform(-length / 2, length / 2)
AmBeSource.space = openmc.stats.CylindricalIndependent(r, phi, z, origin = (x0, y0, z0)) # change origin
# Isotropic angular distribution
AmBeSource.angle = openmc.stats.Isotropic()
# Time Distribution
# AmBeSource.time = openmc.stats.Uniform(0, 1e-6)
AmBeSource.strength = 3.7e9
AmBeSource.particle = 'neutron'
# AmBeSource is ready to use as openmc.Settings().source