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 @@ - +