Closed ThePeer closed 2 years ago
It appears that the buildup factor data for lead provided in ANSI/ANS 6.4.3 do not extend below 30 keV. Hence the low energy photons from Tc-99 are out of range for the lead buildup factor. Possible solutions to be evaluated in a patch will include extrapolating the buildup factors or using the lower energy data of the existing buildup factors. The former may be somewhat non-physical. The latter may be problematic if only low energy photons are present in the source.
The ANSI/ANS 6.4.3 lead buildup factor parameters at 30 keV have been extended for use down to 15 keV. This is consistent with general industry practice, given the data available in the ANSI standard.
For some nuclides (alpha and beta emitters?) "ValueError: Photon energy is out of range" when using "lead" as buildup_factor_material. The issue does not appear when using e.g. "iron" as buildup_factor_material using same isotopes. The error can be replicated by modifying the test example as follows: from zap_me_not import model,source,shield,detector,material
sample_sink = model.Model()
create the source
a_source = source.PointSource(x=0, y=0, z=0) a_source.add_isotope_curies('Tc-99',2.1) a_source.add_isotope_curies('Cs-137',0.3) sample_sink.add_source(a_source)
define the location where the dose will be calculated
exposure_detector = detector.Detector(x=200, y=40, z=40) sample_sink.add_detector(exposure_detector)
define a shield and add it to the model
first_shield = shield.SemiInfiniteXSlab('lead', x_start=12, x_end=32.1) sample_sink.add_shield(first_shield)
define a second shield and add it to the model
second_shield = shield.SemiInfiniteXSlab('iron', x_start=32.1, x_end=33.1) sample_sink.add_shield(second_shield)
declare which shield material will be used for buildup factor calculations
buildup_factor_material = material.Material('lead') sample_sink.set_buildup_factor_material(buildup_factor_material)
(optionally) declare a meterial to fill all non-defined regions
sample_sink.set_filler_material('air')
calculate exposure in mR/hr
exposure = sample_sink.calculate_exposure() print('The exposure is ', exposure, ' mR/hr')