Mix_materials and s alpha beta

I’m running a spatially homogenized TRISO fuel case for my system as a comparison. Using mix_materials, which has been great for volume fraction homogenization, does not support mixing materials that contain s(\alpha,\beta) tables.

File "/home/lgross/gcmr/depletion/homogenized/make_homogenized_gcmr.py", line 217, in infinite_asembly
    homog_fuel = openmc.Material.mix_materials([graphite,fuel,buff,PyC1,SiC,PyC2],percent_type='vo',fracs=[v_frac_graphite_matrix,v_frac_fuel,v_frac_buffer,v_frac_PyC1,v_frac_SiC,v_frac_PyC2])
  File "/home/lgross/openmc/openmc/material.py", line 1405, in mix_materials
    raise NotImplementedError(msg)
NotImplementedError: Currently we do not support mixing materials containing S(a,b) tables

Since a decent amount of these materials contain carbon/graphite, I’m wondering which technically incorrect option is the more accurate choice:

  • Add an s(\alpha,\beta) to the material after mixing for graphite, even though the material contains non-graphite
  • Just omit the s(\alpha,\beta)

If anyone has strong (or less strong) opinions about the validity of these options, let me know!

TIL there is a fraction parameter for add_s_alpha_beta!

I’ll have to do a little work to compute the correct fraction, but this is neat! If anyone has extra info on how the fraction works, I’m all ears. Does it just multiply the cross section data for the s(\alpha,\beta) by the fraction? Also is it volume or atom fraction?

For example, another material I have is BeO, which has s(\alpha,\beta) data for both elements. Should I use

    reflector = openmc.Material(name="reflector")
    reflector.set_density('g/cm3',3.01)
    reflector.add_element('Be',1.0)
    reflector.add_element('O',1.0)
    reflector.add_s_alpha_beta('c_Be_in_BeO',fraction=0.5)
    reflector.add_s_alpha_beta('c_O_in_BeO',fraction=0.5)

Also, does anyone know if there’s an h5 format available for YH_{2} s(\alpha,\beta)? It looks like ENDFB-VII.1 has it but I don’t see it in the data I downloaded from OpenMC’s data page.

S(α,β) fractions are given as atom fractions. Here’s the relevant use of the fraction in the cross section routines:

YH2 thermal scattering data was introduced in ENDF/B-VIII.0, so if you use that library you should have “c_H_in_YH2” and “c_Y_in_YH2” thermal scattering data available to you.

1 Like

Returning to this post. I was informed that the system I’m modeling uses YH_{1.8} instead of YH_{2}

Would this then be the appropriate way to add_s_alpha_beta()?

    # YH1.8 Moderator
    moderator = openmc.Material(name="moderator")
    moderator.set_density("g/cm3", 4.085)
    moderator.add_element("H", 1.8)
    moderator.add_element("Y", 1.0)
    moderator.add_s_alpha_beta("c_H_in_YH2", fraction = float(1.8/2.8))
    moderator.add_s_alpha_beta("c_Y_in_YH2", fraction = float(1.0/2.8))

I’m assuming there’s no c_X_in_YH1.8, so maybe this is the best we can do?

@ligross The fraction argument on add_s_alpha_beta is only necessary if the nuclide/element in question is applied in two different contexts (e.g., a homogeneous mix of H2O and YH2, which both have H). For your case, it’s not necessary to apply a fraction, but as you said there’s no specific thermal scattering data for YH1.8 so using the data for YH2 may be a slight approximation.

1 Like