With @dddijulio we came across an issue when plotting XS as a function of temperature. There are fluctuations in the scattering cross section that are bigger than the variation with temperature. This could be important for quantitative wavelength-dependent transmission analysis or other applications where you need the cross section as a function of temperature.
This is an example of what we are seeing:
E_thermal = 0.0253
cfg = 'Polyethylene_CH2.ncmat'
temperatures = np.linspace(250, 350, 101)
plt.figure()
for lux in (3,4):
xs_thermal = []
for T in temperatures:
mat = NC.load(cfg+f';temp={T};vdoslux={lux}')
xs_thermal.append(mat.scatter.xsect(E_thermal))
plt.plot(temperatures, xs_thermal, label=f'vdoslux={lux}')
plt.legend()
plt.xlabel('Temperature (K)')
plt.ylabel(f'Cross section @ E={E_thermal}')
plt.show()
A more intense effect is seen with the Debye Model, and perhaps it could be useful for debugging:
E = np.geomspace(1e-4,10,1000)
for T in (319., 319.001):
mat = NC.load(f'solid::C/1gcm3/TDebye400K;vdoslux=5;comp=inelas;temp={T}')
xs = mat.xsect(E)
plt.semilogx(E, xs, '-')
plt.xlabel('Energy [eV]')
plt.ylabel('Scattering XS')
temperatures = np.linspace(300,320,101)
E0 = 1e-3
xs25 = [NC.load(f'solid::C/1gcm3/TDebye400K;vdoslux=5;elas=0;temp={t}').xsect(E0) for t in temperatures]
plt.plot(temperatures, xs25, '.-')
plt.xlabel('Temperature [K]')
plt.ylabel('Scattering XS at 1 meV')

With @dddijulio we came across an issue when plotting XS as a function of temperature. There are fluctuations in the scattering cross section that are bigger than the variation with temperature. This could be important for quantitative wavelength-dependent transmission analysis or other applications where you need the cross section as a function of temperature.
This is an example of what we are seeing:
A more intense effect is seen with the Debye Model, and perhaps it could be useful for debugging: