Bug Description
When supplied with an input that lies outside of the defined x ranges, openmc.data.Tabulated1D returns 0 if the input is wrapped as an Iterable; meanwhile if the input is a scalar value, then it returns the lowest-x/highest-x point's y-value (depending on which side it is on).
Explanation
The code inside openmc.data.Tabulated1D.call (which handles vector inputs) first initialize an array of zeros, then populates only points within range. Meanwhile, the code inside openmc.data.Tabulated1D._interpolate_scalar returns the nearest y values to the input if the input is outside of the valid x range.
Steps to Reproduce
import openmc
tab = openmc.data.Tabulated1D([1,2,3], [4,5,6], [], [2],)
print(tab([0])) # array([0])
print(tab(0)) # 4
Environment
latest/stable/v0.15.3
Bug Description
When supplied with an input that lies outside of the defined x ranges, openmc.data.Tabulated1D returns 0 if the input is wrapped as an Iterable; meanwhile if the input is a scalar value, then it returns the lowest-x/highest-x point's y-value (depending on which side it is on).
Explanation
The code inside openmc.data.Tabulated1D.call (which handles vector inputs) first initialize an array of zeros, then populates only points within range. Meanwhile, the code inside openmc.data.Tabulated1D._interpolate_scalar returns the nearest y values to the input if the input is outside of the valid x range.
Steps to Reproduce
Environment
latest/stable/v0.15.3