diff --git a/examples/basic/materials.xml b/examples/basic/materials.xml
index 8070d64999..42cc3059f0 100644
--- a/examples/basic/materials.xml
+++ b/examples/basic/materials.xml
@@ -11,7 +11,7 @@
-
+
diff --git a/src/input_xml.f90 b/src/input_xml.f90
index b97d7c5a1e..95d42259ea 100644
--- a/src/input_xml.f90
+++ b/src/input_xml.f90
@@ -409,6 +409,7 @@ contains
character(MAX_LINE_LEN) :: msg
type(Material), pointer :: m => null()
type(nuclide_xml), pointer :: nuc => null()
+ type(sab_xml), pointer :: sab => null()
! Display output message
msg = "Reading materials XML file..."
@@ -494,6 +495,17 @@ contains
else
m % atom_percent(j) = -nuc % wo
end if
+
+ ! Read S(a,b) table information
+ if (size(material_(i) % sab) == 1) then
+ sab => material_(i) % sab(1)
+ name = trim(sab % name) // "." // trim(sab % xs)
+ m % sab_name = name
+ m % has_sab_table = .true.
+ elseif (size(material_(i) % sab) > 1) then
+ msg = "Cannot have multiple S(a,b) tables on a single material."
+ call fatal_error(msg)
+ end if
end do
! Add material to dictionary
diff --git a/src/material_header.f90 b/src/material_header.f90
index a6f4617c0f..8134612913 100644
--- a/src/material_header.f90
+++ b/src/material_header.f90
@@ -18,8 +18,10 @@ module material_header
real(8), allocatable :: total_xs(:) ! macroscopic cross-section
! S(a,b) data references
- integer :: sab_table ! index in sab_tables
- integer :: sab_nuclide ! index of nuclide which has S(a,b) table
+ logical :: has_sab_table = .false.
+ character(10) :: sab_name ! name of S(a,b) table
+ integer :: sab_table ! index in sab_tables
+ integer :: sab_nuclide ! index of nuclide which has S(a,b) table
end type Material
end module material_header
diff --git a/src/output.f90 b/src/output.f90
index 5fd9b5c60d..527463effe 100644
--- a/src/output.f90
+++ b/src/output.f90
@@ -492,16 +492,27 @@ contains
character(MAX_LINE_LEN) :: string
type(Nuclide), pointer :: nuc => null()
+ ! Write identifier for material
write(ou,*) 'Material ' // int_to_str(mat % uid)
+
+ ! Write total atom density in atom/b-cm
write(ou,*) ' Atom Density = ' // trim(real_to_str(mat % density)) &
& // ' atom/b-cm'
+
+ ! Write atom density for each nuclide in material
+ write(ou,*) ' Nuclides:'
do i = 1, mat % n_nuclides
nuc => nuclides(mat % nuclide(i))
density = mat % atom_density(i)
- string = ' ' // trim(nuc % name) // ' = ' // &
+ string = ' ' // trim(nuc % name) // ' = ' // &
& trim(real_to_str(density)) // ' atom/b-cm'
write(ou,*) trim(string)
end do
+
+ ! Write information on S(a,b) table
+ if (mat % has_sab_table) then
+ write(ou,*) ' S(a,b) table = ' // trim(mat % sab_name)
+ end if
write(ou,*)
nullify(nuc)
diff --git a/src/xml-fortran/templates/materials_t.xml b/src/xml-fortran/templates/materials_t.xml
index ac232dc3b4..41ca975ee2 100644
--- a/src/xml-fortran/templates/materials_t.xml
+++ b/src/xml-fortran/templates/materials_t.xml
@@ -34,7 +34,7 @@
-
+