diff --git a/examples/python/pincell/build-xml.py b/examples/python/pincell/build-xml.py index 1e1e15d6d5..534c3ab821 100644 --- a/examples/python/pincell/build-xml.py +++ b/examples/python/pincell/build-xml.py @@ -51,7 +51,7 @@ o = openmc.Element('O') # Instantiate some Materials and register the appropriate Nuclides uo2 = openmc.Material(material_id=1, name='UO2 fuel at 2.4% wt enrichment') uo2.set_density('g/cm3', 10.29769) -uo2.add_element(u, 1., enrichment=0.05) +uo2.add_element(u, 1., enrichment=0.024) uo2.add_element(o, 2.) helium = openmc.Material(material_id=2, name='Helium for gap') diff --git a/src/constants.F90 b/src/constants.F90 index 8c321156cf..cc12969990 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -268,6 +268,14 @@ module constants JENDL_33 = 7, & JENDL_40 = 8 + ! Number of natural elements and nuclides in the global natural_elements + ! and natural_nuclides arrays. Note that some nuclides are repeated in order + ! to make it easy to expand natural elements for different cross section + ! libraries. + integer, parameter :: & + NUM_NATURAL_ELEMENTS = 84, & + NUM_NATURAL_NUCLIDES = 301 + ! Temperature treatment method integer, parameter :: & TEMPERATURE_NEAREST = 1, & diff --git a/src/global.F90 b/src/global.F90 index 042d530f37..40df06b4a2 100644 --- a/src/global.F90 +++ b/src/global.F90 @@ -4,6 +4,7 @@ module global use cmfd_header use constants use dict_header, only: DictCharInt, DictIntInt + use stl_vector, only: VectorChar, VectorReal use geometry_header, only: Cell, Universe, Lattice, LatticeContainer use material_header, only: Material use mesh_header, only: RegularMesh @@ -18,6 +19,7 @@ module global use trigger_header, only: KTrigger use timer_header, only: Timer use volume_header, only: VolumeCalculation + use string, only: to_str #ifdef MPIF08 use mpi_f08 @@ -129,6 +131,333 @@ module global ! Maximum Data Order integer :: max_order + ! ============================================================================ + ! ELEMENT AND NUCLIDE RELATED VARIABLES + + ! List of all possible natural element expansion isotopes + character (len=5), dimension (NUM_NATURAL_NUCLIDES), parameter :: & + natural_nuclides = [character(len=5) :: & + 'H1' , 'H2' , 'He3' , 'He4' , 'Li6' , 'Li7' , 'Be9' , 'B10' , & + 'B11' , 'C0' , 'N14' , 'N15' , 'O16' , 'O17' , 'O18' , 'O16' , & + 'O16' , 'O17' , 'F19' , 'Ne20' , 'Ne21' , 'Ne22' , 'Na23' , 'Mg24' , & + 'Mg25' , 'Mg26' , 'Al27' , 'Si28' , 'Si29' , 'Si30' , 'P31' , 'S32' , & + 'S33' , 'S34' , 'S35' , 'Cl35' , 'Cl37' , 'Ar36' , 'Ar38' , 'Ar40' , & + 'K39' , 'K40' , 'K41' , 'Ca40' , 'Ca42' , 'Ca43' , 'Ca44' , 'Ca46' , & + 'Ca48' , 'Sc45' , 'Ti46' , 'Ti47' , 'Ti48' , 'Ti49' , 'Ti50' , 'V0' , & + 'V50' , 'V51' , 'Cr50' , 'Cr52' , 'Cr53' , 'Cr54' , 'Mn55' , 'Fe54' , & + 'Fe56' , 'Fe57' , 'Fe58' , 'Co59' , 'Ni58' , 'Ni60' , 'Ni61' , 'Ni62' , & + 'Ni64' , 'Cu63' , 'Cu65' , 'Zn0' , 'Zn64' , 'Zn66' , 'Zn67' , 'Zn68' , & + 'Zn70' , 'Ga0' , 'Ga69' , 'Ga71' , 'Ge70' , 'Ge72' , 'Ge73' , 'Ge74' , & + 'Ge76' , 'As75' , 'Se74' , 'Se76' , 'Se77' , 'Se78' , 'Se80' , 'Se82' , & + 'Br79' , 'Br81' , 'Kr78' , 'Kr80' , 'Kr82' , 'Kr83' , 'Kr84' , 'Kr86' , & + 'Rb85' , 'Rb87' , 'Sr84' , 'Sr86' , 'Sr87' , 'Sr88' , 'Y89' , 'Zr90' , & + 'Zr91' , 'Zr92' , 'Zr94' , 'Zr96' , 'Nb93' , 'Mo92' , 'Mo94' , 'Mo95' , & + 'Mo96' , 'Mo97' , 'Mo98' , 'Mo100', 'Ru96' , 'Ru98' , 'Ru99' , 'Ru100', & + 'Ru101', 'Ru102', 'Ru104', 'Rh103', 'Pd102', 'Pd104', 'Pd105', 'Pd106', & + 'Pd108', 'Pd110', 'Ag107', 'Ag109', 'Cd106', 'Cd108', 'Cd110', 'Cd111', & + 'Cd112', 'Cd113', 'Cd114', 'Cd116', 'In113', 'In115', 'Sn112', 'Sn114', & + 'Sn115', 'Sn116', 'Sn117', 'Sn118', 'Sn119', 'Sn120', 'Sn122', 'Sn124', & + 'Sb121', 'Sb123', 'Te120', 'Te122', 'Te123', 'Te124', 'Te125', 'Te126', & + 'Te128', 'Te130', 'I127' , 'Xe124', 'Xe126', 'Xe128', 'Xe129', 'Xe130', & + 'Xe131', 'Xe132', 'Xe134', 'Xe136', 'Cs133', 'Ba130', 'Ba132', 'Ba134', & + 'Ba135', 'Ba136', 'Ba137', 'Ba138', 'La138', 'La139', 'Ce136', 'Ce138', & + 'Ce140', 'Ce142', 'Pr141', 'Nd142', 'Nd143', 'Nd144', 'Nd145', 'Nd146', & + 'Nd148', 'Nd150', 'Sm144', 'Sm147', 'Sm148', 'Sm149', 'Sm150', 'Sm152', & + 'Sm154', 'Eu151', 'Eu153', 'Gd152', 'Gd154', 'Gd155', 'Gd156', 'Gd157', & + 'Gd158', 'Gd160', 'Tb159', 'Dy156', 'Dy158', 'Dy160', 'Dy161', 'Dy162', & + 'Dy163', 'Dy164', 'Ho165', 'Er162', 'Er164', 'Er166', 'Er167', 'Er168', & + 'Er170', 'Tm169', 'Yb168', 'Yb170', 'Yb171', 'Yb172', 'Yb173', 'Yb174', & + 'Yb176', 'Lu175', 'Lu176', 'Hf174', 'Hf176', 'Hf177', 'Hf178', 'Hf179', & + 'Hf180', 'Ta181', 'Ta180', 'Ta181', 'W182' , 'W183' , 'W184' , 'W186' , & + 'W180' , 'W182' , 'W183' , 'W184' , 'W186' , 'Re185', 'Re187', 'Os0' , & + 'Os184', 'Os186', 'Os187', 'Os188', 'Os189', 'Os190', 'Os192', 'Ir191', & + 'Ir193', 'Pt0' , 'Pt190', 'Pt192', 'Pt194', 'Pt195', 'Pt196', 'Pt198', & + 'Au197', 'Hg196', 'Hg198', 'Hg199', 'Hg200', 'Hg201', 'Hg202', 'Hg204', & + 'Tl0' , 'Tl203', 'Tl205', 'Pb204', 'Pb206', 'Pb207', 'Pb208', 'Bi209', & + 'Th232', 'Pa231', 'U234' , 'U235' , 'U238'] + + character (len=2), dimension (NUM_NATURAL_ELEMENTS), parameter :: & + natural_elements = [character(len=2) :: & + 'h' , 'he', 'li', 'be', 'b' , 'c' , 'n' , 'o' , 'f' , 'ne', & + 'na', 'mg', 'al', 'si', 'p' , 's' , 'cl', 'ar', 'k' , 'ca', & + 'sc', 'ti', 'v' , 'cr', 'mn', 'fe', 'co', 'ni', 'cu', 'zn', & + 'ga', 'ge', 'as', 'se', 'br', 'kr', 'rb', 'sr', 'y' , 'zr', & + 'nb', 'mo', 'ru', 'rh', 'pd', 'ag', 'cd', 'in', 'sn', 'sb', & + 'te', 'i' , 'xe', 'cs', 'ba', 'la', 'ce', 'pr', 'nd', 'sm', & + 'eu', 'gd', 'tb', 'dy', 'ho', 'er', 'tm', 'yb', 'lu', 'hf', & + 'ta', 'w' , 're', 'os', 'ir', 'pt', 'au', 'hg', 'tl', 'pb', & + 'bi', 'th', 'pa', 'u'] + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_ENDF_BVII0_start = (/ & + 1 , 3 , 5 , 7 , 8 , 10 , 11 , 17 , 19 , 20 , & + 23 , 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , & + 50 , 51 , 56 , 59 , 63 , 64 , 68 , 69 , 74 , 76 , & + 83 , 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , & + 117 , 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , & + 163 , 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , & + 210 , 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , & + 250 , 253 , 262 , 265 , 272 , 275 , 281 , 282 , 290 , 292 , & + 296 , 297 , 298 , 299 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_ENDF_BVII0_end = (/ & + 3 , 5 , 7 , 8 , 10 , 11 , 13 , 19 , 20 , 23 , & + 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , 50 , & + 51 , 56 , 57 , 63 , 64 , 68 , 69 , 74 , 76 , 77 , & + 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , 117 , & + 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , 163 , & + 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , 210 , & + 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , 250 , & + 251 , 257 , 264 , 272 , 274 , 281 , 282 , 289 , 292 , 296 , & + 297 , 298 , 299 , 302 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_ENDF_BVII1_start = (/ & + 1 , 3 , 5 , 7 , 8 , 10 , 11 , 17 , 19 , 20 , & + 23 , 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , & + 50 , 51 , 57 , 59 , 63 , 64 , 68 , 69 , 74 , 77 , & + 83 , 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , & + 117 , 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , & + 163 , 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , & + 210 , 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , & + 251 , 257 , 262 , 265 , 272 , 275 , 281 , 282 , 290 , 292 , & + 296 , 297 , 298 , 299 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_ENDF_BVII1_end = (/ & + 3 , 5 , 7 , 8 , 10 , 11 , 13 , 19 , 20 , 23 , & + 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , 50 , & + 51 , 56 , 59 , 63 , 64 , 68 , 69 , 74 , 76 , 82 , & + 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , 117 , & + 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , 163 , & + 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , 210 , & + 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , 250 , & + 253 , 262 , 264 , 272 , 274 , 281 , 282 , 289 , 292 , 296 , & + 297 , 298 , 299 , 302 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JEFF_311_start = (/ & + 1 , 3 , 5 , 7 , 8 , 10 , 11 , 17 , 19 , 20 , & + 23 , 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , & + 50 , 51 , 56 , 59 , 63 , 64 , 68 , 69 , 74 , 76 , & + 82 , 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , & + 117 , 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , & + 163 , 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , & + 210 , 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , & + 250 , 253 , 262 , 264 , 272 , 274 , 281 , 282 , 289 , 292 , & + 296 , 297 , 298 , 299 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JEFF_311_end = (/ & + 3 , 5 , 7 , 8 , 10 , 11 , 13 , 19 , 20 , 23 , & + 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , 50 , & + 51 , 56 , 57 , 63 , 64 , 68 , 69 , 74 , 76 , 77 , & + 83 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , 117 , & + 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , 163 , & + 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , 210 , & + 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , 250 , & + 251 , 257 , 264 , 265 , 274 , 275 , 282 , 289 , 290 , 296 , & + 297 , 298 , 299 , 302 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JEFF_312_start = (/ & + 1 , 3 , 5 , 7 , 8 , 10 , 11 , 17 , 19 , 20 , & + 23 , 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , & + 50 , 51 , 57 , 59 , 63 , 64 , 68 , 69 , 74 , 76 , & + 82 , 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , & + 117 , 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , & + 163 , 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , & + 210 , 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , & + 250 , 253 , 262 , 264 , 272 , 274 , 281 , 282 , 289 , 292 , & + 296 , 297 , 298 , 299 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JEFF_312_end = (/ & + 3 , 5 , 7 , 8 , 10 , 11 , 13 , 19 , 20 , 23 , & + 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , 50 , & + 51 , 56 , 59 , 63 , 64 , 68 , 69 , 74 , 76 , 77 , & + 83 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , 117 , & + 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , 163 , & + 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , 210 , & + 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , 250 , & + 251 , 257 , 264 , 265 , 274 , 275 , 282 , 289 , 290 , 296 , & + 297 , 298 , 299 , 302 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JEFF_32_start = (/ & + 1 , 3 , 5 , 7 , 8 , 10 , 11 , 13 , 19 , 20 , & + 23 , 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , & + 50 , 51 , 56 , 59 , 63 , 64 , 68 , 69 , 74 , 77 , & + 83 , 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , & + 117 , 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , & + 163 , 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , & + 210 , 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , & + 251 , 257 , 262 , 265 , 272 , 275 , 281 , 282 , 290 , 292 , & + 296 , 297 , 298 , 299 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JEFF_32_end = (/ & + 3 , 5 , 7 , 8 , 10 , 11 , 13 , 16 , 20 , 23 , & + 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , 50 , & + 51 , 56 , 57 , 63 , 64 , 68 , 69 , 74 , 76 , 82 , & + 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , 117 , & + 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , 163 , & + 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , 210 , & + 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , 250 , & + 253 , 262 , 264 , 272 , 274 , 281 , 282 , 289 , 292 , 296 , & + 297 , 298 , 299 , 302 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JENDL_32_start = (/ & + 1 , 3 , 5 , 7 , 8 , 10 , 11 , 16 , 19 , 20 , & + 23 , 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , & + 50 , 51 , 56 , 59 , 63 , 64 , 68 , 69 , 74 , 77 , & + 83 , 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , & + 117 , 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , & + 163 , 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , & + 210 , 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , & + 250 , 253 , 262 , 265 , 272 , 275 , 281 , 282 , 290 , 292 , & + 296 , 297 , 298 , 299 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JENDL_32_end = (/ & + 3 , 5 , 7 , 8 , 10 , 11 , 13 , 17 , 20 , 23 , & + 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , 50 , & + 51 , 56 , 57 , 63 , 64 , 68 , 69 , 74 , 76 , 82 , & + 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , 117 , & + 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , 163 , & + 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , 210 , & + 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , 250 , & + 251 , 257 , 264 , 272 , 274 , 281 , 282 , 289 , 292 , 296 , & + 297 , 298 , 299 , 302 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JENDL_33_start = (/ & + 1 , 3 , 5 , 7 , 8 , 10 , 11 , 16 , 19 , 20 , & + 23 , 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , & + 50 , 51 , 56 , 59 , 63 , 64 , 68 , 69 , 74 , 77 , & + 83 , 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , & + 117 , 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , & + 163 , 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , & + 210 , 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , & + 250 , 253 , 262 , 265 , 272 , 275 , 281 , 282 , 290 , 292 , & + 296 , 297 , 298 , 299 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JENDL_33_end = (/ & + 3 , 5 , 7 , 8 , 10 , 11 , 13 , 17 , 20 , 23 , & + 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , 50 , & + 51 , 56 , 57 , 63 , 64 , 68 , 69 , 74 , 76 , 82 , & + 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , 117 , & + 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , 163 , & + 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , 210 , & + 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , 250 , & + 251 , 257 , 264 , 272 , 274 , 281 , 282 , 289 , 292 , 296 , & + 297 , 298 , 299 , 302 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JENDL_40_start = (/ & + 1 , 3 , 5 , 7 , 8 , 10 , 11 , 16 , 19 , 20 , & + 23 , 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , & + 50 , 51 , 57 , 59 , 63 , 64 , 68 , 69 , 74 , 77 , & + 83 , 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , & + 117 , 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , & + 163 , 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , & + 210 , 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , & + 250 , 257 , 262 , 265 , 272 , 275 , 281 , 282 , 290 , 292 , & + 296 , 297 , 298 , 299 /) + + integer, dimension(NUM_NATURAL_ELEMENTS) :: & + natural_nuclides_JENDL_40_end = (/ & + 3 , 5 , 7 , 8 , 10 , 11 , 13 , 17 , 20 , 23 , & + 24 , 27 , 28 , 31 , 32 , 36 , 38 , 41 , 44 , 50 , & + 51 , 56 , 59 , 63 , 64 , 68 , 69 , 74 , 76 , 82 , & + 85 , 90 , 90 , 97 , 99 , 105 , 107 , 111 , 112 , 117 , & + 118 , 125 , 132 , 133 , 139 , 141 , 149 , 151 , 161 , 163 , & + 171 , 172 , 181 , 182 , 189 , 191 , 195 , 196 , 203 , 210 , & + 212 , 219 , 220 , 227 , 228 , 234 , 235 , 242 , 244 , 250 , & + 251 , 262 , 264 , 272 , 274 , 281 , 282 , 289 , 292 , 296 , & + 297 , 298 , 299 , 302 /) + + real(8), dimension (NUM_NATURAL_NUCLIDES) :: natural_nuclides_mf = (/ & + 0.999885_8 , 0.000115_8 , 0.00000134_8, 0.99999866_8, & + 0.0759_8 , 0.9241_8 , ONE , 0.199_8 , & + 0.801_8 , ONE , 0.99636_8 , 0.00364_8 , & + 0.99757_8 , 0.00038_8 , 0.00205_8 , ONE , & + 0.99962_8 , 0.00038_8 , ONE , 0.9048_8 , & + 0.0027_8 , 0.0925_8 , ONE , 0.7899_8 , & + 0.1000_8 , 0.1101_8 , ONE , 0.92223_8 , & + 0.04685_8 , 0.03092_8 , ONE , 0.9499_8 , & + 0.0075_8 , 0.0425_8 , 0.0001_8 , 0.7576_8 , & + 0.2424_8 , 0.003336_8 , 0.000629_8 , 0.996035_8 , & + 0.932581_8 , 0.000117_8 , 0.067302_8 , 0.96941_8 , & + 0.00647_8 , 0.00135_8 , 0.02086_8 , 0.00004_8 , & + 0.00187_8 , ONE , 0.0825_8 , 0.0744_8 , & + 0.7372_8 , 0.0541_8 , 0.0518_8 , ONE , & + 0.0025_8 , 0.9975_8 , 0.04345_8 , 0.83789_8 , & + 0.09501_8 , 0.02365_8 , ONE , 0.05845_8 , & + 0.91754_8 , 0.02119_8 , 0.00282_8 , ONE , & + 0.68077_8 , 0.26223_8 , 0.011399_8 , 0.036346_8 , & + 0.009255_8 , 0.6915_8 , 0.3085_8 , ONE , & + 0.4917_8 , 0.2773_8 , 0.0404_8 , 0.1845_8 , & + 0.0061_8 , ONE , 0.60108_8 , 0.39892_8 , & + 0.2057_8 , 0.2745_8 , 0.0775_8 , 0.3650_8 , & + 0.0773_8 , ONE , 0.0089_8 , 0.0937_8 , & + 0.0763_8 , 0.2377_8 , 0.4961_8 , 0.0873_8 , & + 0.5069_8 , 0.4931_8 , 0.00355_8 , 0.02286_8 , & + 0.11593_8 , 0.11500_8 , 0.56987_8 , 0.17279_8 , & + 0.7217_8 , 0.2783_8 , 0.0056_8 , 0.0986_8 , & + 0.0700_8 , 0.8258_8 , ONE , 0.5145_8 , & + 0.1122_8 , 0.1715_8 , 0.1738_8 , 0.0280_8 , & + ONE , 0.1453_8 , 0.0915_8 , 0.1584_8 , & + 0.1667_8 , 0.0960_8 , 0.2439_8 , 0.0982_8 , & + 0.0554_8 , 0.0187_8 , 0.1276_8 , 0.1260_8 , & + 0.1706_8 , 0.3155_8 , 0.1862_8 , ONE , & + 0.0102_8 , 0.1114_8 , 0.2233_8 , 0.2733_8 , & + 0.2646_8 , 0.1172_8 , 0.51839_8 , 0.48161_8 , & + 0.0125_8 , 0.0089_8 , 0.1249_8 , 0.1280_8 , & + 0.2413_8 , 0.1222_8 , 0.2873_8 , 0.0749_8 , & + 0.0429_8 , 0.9571_8 , 0.0097_8 , 0.0066_8 , & + 0.0034_8 , 0.1454_8 , 0.0768_8 , 0.2422_8 , & + 0.0859_8 , 0.3258_8 , 0.0463_8 , 0.0579_8 , & + 0.5721_8 , 0.4279_8 , 0.0009_8 , 0.0255_8 , & + 0.0089_8 , 0.0474_8 , 0.0707_8 , 0.1884_8 , & + 0.3174_8 , 0.3408_8 , ONE , 0.000952_8 , & + 0.000890_8 , 0.019102_8 , 0.264006_8 , 0.040710_8 , & + 0.212324_8 , 0.269086_8 , 0.104357_8 , 0.088573_8 , & + ONE , 0.00106_8 , 0.00101_8 , 0.02417_8 , & + 0.06592_8 , 0.07854_8 , 0.11232_8 , 0.71698_8 , & + 0.0008881_8 , 0.9991119_8 , 0.00185_8 , 0.00251_8 , & + 0.88450_8 , 0.11114_8 , ONE , 0.27152_8 , & + 0.12174_8 , 0.23798_8 , 0.08293_8 , 0.17189_8 , & + 0.05756_8 , 0.05638_8 , 0.0307_8 , 0.1499_8 , & + 0.1124_8 , 0.1382_8 , 0.0738_8 , 0.2675_8 , & + 0.2275_8 , 0.4781_8 , 0.5219_8 , 0.0020_8 , & + 0.0218_8 , 0.1480_8 , 0.2047_8 , 0.1565_8 , & + 0.2484_8 , 0.2186_8 , ONE , 0.00056_8 , & + 0.00095_8 , 0.02329_8 , 0.18889_8 , 0.25475_8 , & + 0.24896_8 , 0.28260_8 , ONE , 0.00139_8 , & + 0.01601_8 , 0.33503_8 , 0.22869_8 , 0.26978_8 , & + 0.14910_8 , ONE , 0.00123_8 , 0.02982_8 , & + 0.1409_8 , 0.2168_8 , 0.16103_8 , 0.32026_8 , & + 0.12996_8 , 0.97401_8 , 0.02599_8 , 0.0016_8 , & + 0.0526_8 , 0.1860_8 , 0.2728_8 , 0.1362_8 , & + 0.3508_8 , ONE , 0.0001201_8 , 0.9998799_8 , & + 0.2662_8 , 0.1431_8 , 0.3064_8 , 0.2843_8 , & + 0.0012_8 , 0.2650_8 , 0.1431_8 , 0.3064_8 , & + 0.2843_8 , 0.3740_8 , 0.6260_8 , ONE , & + 0.0002_8 , 0.0159_8 , 0.0196_8 , 0.1324_8 , & + 0.1615_8 , 0.2626_8 , 0.4078_8 , 0.373_8 , & + 0.627_8 , ONE , 0.00012_8 , 0.00782_8 , & + 0.3286_8 , 0.3378_8 , 0.2521_8 , 0.07356_8 , & + ONE , 0.0015_8 , 0.0997_8 , 0.1687_8 , & + 0.2310_8 , 0.1318_8 , 0.2986_8 , 0.0687_8 , & + ONE , 0.2952_8 , 0.7048_8 , 0.014_8 , & + 0.241_8 , 0.221_8 , 0.524_8 , ONE , & + ONE , ONE , 0.000054_8 , 0.007204_8 , & + 0.992742_8 /) + ! ============================================================================ ! TALLY-RELATED VARIABLES diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 8bf3f2825f..9e309899e6 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -4583,521 +4583,69 @@ contains character(*), intent(in) :: name type(VectorChar), intent(inout) :: names + integer :: i character(2) :: element_name + integer :: natural_elements_loc + integer :: nuclide_start + integer :: nuclide_end - element_name = name(1:2) + ! Convert the element name to lower case + element_name = to_lower(name(1:2)) - select case (to_lower(element_name)) - case ('h') - call names % push_back('H1') - call names % push_back('H2') - case ('he') - call names % push_back('He3') - call names % push_back('He4') - - case ('li') - call names % push_back('Li6') - call names % push_back('Li7') - - case ('be') - call names % push_back('Be9') - - case ('b') - call names % push_back('B10') - call names % push_back('B11') - - case ('c') - ! No evaluations split up Carbon into isotopes yet - call names % push_back('C0') - - case ('n') - call names % push_back('N14') - call names % push_back('N15') - - case ('o') - if (default_expand == JEFF_32) then - call names % push_back('O16') - call names % push_back('O17') - call names % push_back('O18') - elseif (default_expand >= JENDL_32 .and. default_expand <= JENDL_40) then - call names % push_back('O16') - else - call names % push_back('O16') - call names % push_back('O17') + ! Find location of element name in natural_elements + i = -1 + do i = 1, num_natural_elements + if (natural_elements(i) == element_name) then + natural_elements_loc = i end if + end do - case ('f') - call names % push_back('F19') - - case ('ne') - call names % push_back('Ne20') - call names % push_back('Ne21') - call names % push_back('Ne22') - - case ('na') - call names % push_back('Na23') - - case ('mg') - call names % push_back('Mg24') - call names % push_back('Mg25') - call names % push_back('Mg26') - - case ('al') - call names % push_back('Al27') - - case ('si') - call names % push_back('Si28') - call names % push_back('Si29') - call names % push_back('Si30') - - case ('p') - call names % push_back('P31') - - case ('s') - call names % push_back('S32') - call names % push_back('S33') - call names % push_back('S34') - call names % push_back('S36') - - case ('cl') - call names % push_back('Cl35') - call names % push_back('Cl37') - - case ('ar') - call names % push_back('Ar36') - call names % push_back('Ar38') - call names % push_back('Ar40') - - case ('k') - call names % push_back('K39') - call names % push_back('K40') - call names % push_back('K41') - - case ('ca') - call names % push_back('Ca40') - call names % push_back('Ca42') - call names % push_back('Ca43') - call names % push_back('Ca44') - call names % push_back('Ca46') - call names % push_back('Ca48') - - case ('sc') - call names % push_back('Sc45') - - case ('ti') - call names % push_back('Ti46') - call names % push_back('Ti47') - call names % push_back('Ti48') - call names % push_back('Ti49') - call names % push_back('Ti50') - - case ('v') - if (default_expand == ENDF_BVII0 .or. default_expand == JEFF_311 & - .or. default_expand == JEFF_32 .or. & - (default_expand >= JENDL_32 .and. default_expand <= JENDL_33)) then - call names % push_back('V0') - else - call names % push_back('V50') - call names % push_back('V51') - end if - - case ('cr') - call names % push_back('Cr50') - call names % push_back('Cr52') - call names % push_back('Cr53') - call names % push_back('Cr54') - - case ('mn') - call names % push_back('Mn55') - - case ('fe') - call names % push_back('Fe54') - call names % push_back('Fe56') - call names % push_back('Fe57') - call names % push_back('Fe58') - - case ('co') - call names % push_back('Co59') - - case ('ni') - call names % push_back('Ni58') - call names % push_back('Ni60') - call names % push_back('Ni61') - call names % push_back('Ni62') - call names % push_back('Ni64') - - case ('cu') - call names % push_back('Cu63') - call names % push_back('Cu65') - - case ('zn') - if (default_expand == ENDF_BVII0 .or. default_expand == & - JEFF_311 .or. default_expand == JEFF_312) then - call names % push_back('Zn0') - else - call names % push_back('Zn64') - call names % push_back('Zn66') - call names % push_back('Zn67') - call names % push_back('Zn68') - call names % push_back('Zn70') - end if - - case ('ga') - if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call names % push_back('Ga0') - else - call names % push_back('Ga69') - call names % push_back('Ga71') - end if - - case ('ge') - call names % push_back('Ge70') - call names % push_back('Ge72') - call names % push_back('Ge73') - call names % push_back('Ge74') - call names % push_back('Ge76') - - case ('as') - call names % push_back('As75') - - case ('se') - call names % push_back('Se74') - call names % push_back('Se76') - call names % push_back('Se77') - call names % push_back('Se78') - call names % push_back('Se80') - call names % push_back('Se82') - - case ('br') - call names % push_back('Br79') - call names % push_back('Br81') - - case ('kr') - call names % push_back('Kr78') - call names % push_back('Kr80') - call names % push_back('Kr82') - call names % push_back('Kr83') - call names % push_back('Kr84') - call names % push_back('Kr86') - - case ('rb') - call names % push_back('Rb85') - call names % push_back('Rb87') - - case ('sr') - call names % push_back('Sr84') - call names % push_back('Sr86') - call names % push_back('Sr87') - call names % push_back('Sr88') - - case ('y') - call names % push_back('Y89') - - case ('zr') - call names % push_back('Zr90') - call names % push_back('Zr91') - call names % push_back('Zr92') - call names % push_back('Zr94') - call names % push_back('Zr96') - - case ('nb') - call names % push_back('Nb93') - - case ('mo') - call names % push_back('Mo92') - call names % push_back('Mo94') - call names % push_back('Mo95') - call names % push_back('Mo96') - call names % push_back('Mo97') - call names % push_back('Mo98') - call names % push_back('Mo100') - - case ('ru') - call names % push_back('Ru96') - call names % push_back('Ru98') - call names % push_back('Ru99') - call names % push_back('Ru100') - call names % push_back('Ru101') - call names % push_back('Ru102') - call names % push_back('Ru104') - - case ('rh') - call names % push_back('Rh103') - - case ('pd') - call names % push_back('Pd102') - call names % push_back('Pd104') - call names % push_back('Pd105') - call names % push_back('Pd106') - call names % push_back('Pd108') - call names % push_back('Pd110') - - case ('ag') - call names % push_back('Ag107') - call names % push_back('Ag109') - - case ('cd') - call names % push_back('Cd106') - call names % push_back('Cd108') - call names % push_back('Cd110') - call names % push_back('Cd111') - call names % push_back('Cd112') - call names % push_back('Cd113') - call names % push_back('Cd114') - call names % push_back('Cd116') - - case ('in') - call names % push_back('In113') - call names % push_back('In115') - - case ('sn') - call names % push_back('Sn112') - call names % push_back('Sn114') - call names % push_back('Sn115') - call names % push_back('Sn116') - call names % push_back('Sn117') - call names % push_back('Sn118') - call names % push_back('Sn119') - call names % push_back('Sn120') - call names % push_back('Sn122') - call names % push_back('Sn124') - - case ('sb') - call names % push_back('Sb121') - call names % push_back('Sb123') - - case ('te') - call names % push_back('Te120') - call names % push_back('Te122') - call names % push_back('Te123') - call names % push_back('Te124') - call names % push_back('Te125') - call names % push_back('Te126') - call names % push_back('Te128') - call names % push_back('Te130') - - case ('i') - call names % push_back('I127') - - case ('xe') - call names % push_back('Xe124') - call names % push_back('Xe126') - call names % push_back('Xe128') - call names % push_back('Xe129') - call names % push_back('Xe130') - call names % push_back('Xe131') - call names % push_back('Xe132') - call names % push_back('Xe134') - call names % push_back('Xe136') - - case ('cs') - call names % push_back('Cs133') - - case ('ba') - call names % push_back('Ba130') - call names % push_back('Ba132') - call names % push_back('Ba134') - call names % push_back('Ba135') - call names % push_back('Ba136') - call names % push_back('Ba137') - call names % push_back('Ba138') - - case ('la') - call names % push_back('La138') - call names % push_back('La139') - - case ('ce') - call names % push_back('Ce136') - call names % push_back('Ce138') - call names % push_back('Ce140') - call names % push_back('Ce142') - - case ('pr') - call names % push_back('Pr141') - - case ('nd') - call names % push_back('Nd142') - call names % push_back('Nd143') - call names % push_back('Nd144') - call names % push_back('Nd145') - call names % push_back('Nd146') - call names % push_back('Nd148') - call names % push_back('Nd150') - - case ('sm') - call names % push_back('Sm144') - call names % push_back('Sm147') - call names % push_back('Sm148') - call names % push_back('Sm149') - call names % push_back('Sm150') - call names % push_back('Sm152') - call names % push_back('Sm154') - - case ('eu') - call names % push_back('Eu151') - call names % push_back('Eu153') - - case ('gd') - call names % push_back('Gd152') - call names % push_back('Gd154') - call names % push_back('Gd155') - call names % push_back('Gd156') - call names % push_back('Gd157') - call names % push_back('Gd158') - call names % push_back('Gd160') - - case ('tb') - call names % push_back('Tb159') - - case ('dy') - call names % push_back('Dy156') - call names % push_back('Dy158') - call names % push_back('Dy160') - call names % push_back('Dy161') - call names % push_back('Dy162') - call names % push_back('Dy163') - call names % push_back('Dy164') - - case ('ho') - call names % push_back('Ho165') - - case ('er') - call names % push_back('Er162') - call names % push_back('Er164') - call names % push_back('Er166') - call names % push_back('Er167') - call names % push_back('Er168') - call names % push_back('Er170') - - case ('tm') - call names % push_back('Tm169') - - case ('yb') - call names % push_back('Yb168') - call names % push_back('Yb170') - call names % push_back('Yb171') - call names % push_back('Yb172') - call names % push_back('Yb173') - call names % push_back('Yb174') - call names % push_back('Yb176') - - case ('lu') - call names % push_back('Lu175') - call names % push_back('Lu176') - - case ('hf') - call names % push_back('Hf174') - call names % push_back('Hf176') - call names % push_back('Hf177') - call names % push_back('Hf178') - call names % push_back('Hf179') - call names % push_back('Hf180') - - case ('ta') - if (default_expand == ENDF_BVII0 .or. & - (default_expand >= JEFF_311 .and. default_expand <= JEFF_312) .or. & - (default_expand >= JENDL_32 .and. default_expand <= JENDL_40)) then - call names % push_back('Ta181') - else - call names % push_back('Ta180') - call names % push_back('Ta181') - end if - - case ('w') - if (default_expand == ENDF_BVII0 .or. default_expand == JEFF_311 & - .or. default_expand == JEFF_312 .or. & - (default_expand >= JENDL_32 .and. default_expand <= JENDL_33)) then - ! Combine W-180 with W-182 - call names % push_back('W182') - call names % push_back('W183') - call names % push_back('W184') - call names % push_back('W186') - else - call names % push_back('W180') - call names % push_back('W182') - call names % push_back('W183') - call names % push_back('W184') - call names % push_back('W186') - end if - - case ('re') - call names % push_back('Re185') - call names % push_back('Re187') - - case ('os') - if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call names % push_back('Os0') - else - call names % push_back('Os184') - call names % push_back('Os186') - call names % push_back('Os187') - call names % push_back('Os188') - call names % push_back('Os189') - call names % push_back('Os190') - call names % push_back('Os192') - end if - - case ('ir') - call names % push_back('Ir191') - call names % push_back('Ir193') - - case ('pt') - if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call names % push_back('Pt0') - else - call names % push_back('Pt190') - call names % push_back('Pt192') - call names % push_back('Pt194') - call names % push_back('Pt195') - call names % push_back('Pt196') - call names % push_back('Pt198') - end if - - case ('au') - call names % push_back('Au197') - - case ('hg') - call names % push_back('Hg196') - call names % push_back('Hg198') - call names % push_back('Hg199') - call names % push_back('Hg200') - call names % push_back('Hg201') - call names % push_back('Hg202') - call names % push_back('Hg204') - - case ('tl') - if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - call names % push_back('Tl0') - else - call names % push_back('Tl203') - call names % push_back('Tl205') - end if - - case ('pb') - call names % push_back('Pb204') - call names % push_back('Pb206') - call names % push_back('Pb207') - call names % push_back('Pb208') - - case ('bi') - call names % push_back('Bi209') - - case ('th') - call names % push_back('Th232') - - case ('pa') - call names % push_back('Pa231') - - case ('u') - call names % push_back('U234') - call names % push_back('U235') - call names % push_back('U238') - - case default + ! Issue error if element not found + if (i == -1) then call fatal_error("Cannot expand element: " // name) + end if + + ! Get start and end locations in natural_nuclides arrays + select case (default_expand) + case (ENDF_BVII0) + nuclide_start = natural_nuclides_ENDF_BVII0_start(natural_elements_loc) + nuclide_end = natural_nuclides_ENDF_BVII0_end(natural_elements_loc) + + case (ENDF_BVII1) + nuclide_start = natural_nuclides_ENDF_BVII1_start(natural_elements_loc) + nuclide_end = natural_nuclides_ENDF_BVII1_end(natural_elements_loc) + + case (JEFF_311) + nuclide_start = natural_nuclides_JEFF_311_start(natural_elements_loc) + nuclide_end = natural_nuclides_JEFF_311_end(natural_elements_loc) + + case (JEFF_312) + nuclide_start = natural_nuclides_JEFF_312_start(natural_elements_loc) + nuclide_end = natural_nuclides_JEFF_312_end(natural_elements_loc) + + case (JEFF_32) + nuclide_start = natural_nuclides_JEFF_32_start(natural_elements_loc) + nuclide_end = natural_nuclides_JEFF_32_end(natural_elements_loc) + + case (JENDL_32) + nuclide_start = natural_nuclides_JENDL_32_start(natural_elements_loc) + nuclide_end = natural_nuclides_JENDL_32_end(natural_elements_loc) + + case (JENDL_33) + nuclide_start = natural_nuclides_JENDL_33_start(natural_elements_loc) + nuclide_end = natural_nuclides_JENDL_33_end(natural_elements_loc) + + case (JENDL_40) + nuclide_start = natural_nuclides_JENDL_40_start(natural_elements_loc) + nuclide_end = natural_nuclides_JENDL_40_end(natural_elements_loc) end select + ! Add the nuclide names to the names array + do i = nuclide_start, nuclide_end-1 + call names % push_back(natural_nuclides(i)) + end do + end subroutine expand_natural_element_names !=============================================================================== @@ -5116,2169 +4664,112 @@ contains real(8), intent(in) :: enrichment ! enrichment in weight % type(VectorReal), intent(inout) :: densities ! isotope densities vector - integer :: i ! iterator - integer :: n_isotopes ! number of isotopes in the element - character(2) :: element_name ! element atomic symbol - real(8) :: element_awr ! element atomic weight ratio - real(8), allocatable :: awr(:) ! isotope atomic weight ratios - real(8), allocatable :: mf(:) ! isotope mole fractions - - element_name = name(1:2) - - select case (to_lower(element_name)) - case ('h') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.999885_8 - mf(2) = 0.000115_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('h1')) % awr - awr(2) = nuclides(nuclide_dict % get_key('h2')) % awr - end if - - case ('he') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.00000134_8 - mf(2) = 0.99999866_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('he3')) % awr - awr(2) = nuclides(nuclide_dict % get_key('he4')) % awr - end if - - case ('li') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0759_8 - mf(2) = 0.9241_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('li6')) % awr - awr(2) = nuclides(nuclide_dict % get_key('li7')) % awr - end if - - case ('be') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('be9')) % awr - end if - - case ('b') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.199_8 - mf(2) = 0.801_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('b10')) % awr - awr(2) = nuclides(nuclide_dict % get_key('b11')) % awr - end if - - case ('c') - - ! No evaluations split up Carbon into isotopes yet - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('c0')) % awr - end if - - case ('n') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.99636_8 - mf(2) = 0.00364_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('n14')) % awr - awr(2) = nuclides(nuclide_dict % get_key('n15')) % awr - end if - - case ('o') - if (default_expand == JEFF_32) then - - ! Set the number of isotopes in this element - n_isotopes = 3 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.99757_8 - mf(2) = 0.00038_8 - mf(3) = 0.00205_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('o16')) % awr - awr(2) = nuclides(nuclide_dict % get_key('o17')) % awr - awr(3) = nuclides(nuclide_dict % get_key('o18')) % awr - end if - elseif (default_expand >= JENDL_32 .and. default_expand <= JENDL_40) then - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('o16')) % awr - end if - else - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.99962_8 - mf(2) = 0.00038_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('o16')) % awr - awr(2) = nuclides(nuclide_dict % get_key('o17')) % awr - end if - end if - - case ('f') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('f19')) % awr - end if - - case ('ne') - - ! Set the number of isotopes in this element - n_isotopes = 3 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.9048_8 - mf(2) = 0.0027_8 - mf(3) = 0.0925_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ne20')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ne21')) % awr - awr(3) = nuclides(nuclide_dict % get_key('ne22')) % awr - end if - - case ('na') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('na23')) % awr - end if - - case ('mg') - - ! Set the number of isotopes in this element - n_isotopes = 3 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.7899_8 - mf(2) = 0.1000_8 - mf(3) = 0.1101_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('mg24')) % awr - awr(2) = nuclides(nuclide_dict % get_key('mg25')) % awr - awr(3) = nuclides(nuclide_dict % get_key('mg26')) % awr - end if - - case ('al') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('al27')) % awr - end if - - case ('si') - - ! Set the number of isotopes in this element - n_isotopes = 3 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.92223_8 - mf(2) = 0.04685_8 - mf(3) = 0.03092_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('si28')) % awr - awr(2) = nuclides(nuclide_dict % get_key('si29')) % awr - awr(3) = nuclides(nuclide_dict % get_key('si30')) % awr - end if - - case ('p') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('p31')) % awr - end if - - case ('s') - - ! Set the number of isotopes in this element - n_isotopes = 4 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.9499_8 - mf(2) = 0.0075_8 - mf(3) = 0.0425_8 - mf(4) = 0.0001_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('s32')) % awr - awr(2) = nuclides(nuclide_dict % get_key('s33')) % awr - awr(3) = nuclides(nuclide_dict % get_key('s34')) % awr - awr(4) = nuclides(nuclide_dict % get_key('s36')) % awr - end if - - case ('cl') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.7576_8 - mf(2) = 0.2424_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('cl35')) % awr - awr(2) = nuclides(nuclide_dict % get_key('cl37')) % awr - end if - - case ('ar') - - ! Set the number of isotopes in this element - n_isotopes = 3 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.003336_8 - mf(2) = 0.000629_8 - mf(3) = 0.996035_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ar36')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ar38')) % awr - awr(3) = nuclides(nuclide_dict % get_key('ar40')) % awr - end if - - case ('k') - - ! Set the number of isotopes in this element - n_isotopes = 3 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.932581_8 - mf(2) = 0.000117_8 - mf(3) = 0.067302_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('k39')) % awr - awr(2) = nuclides(nuclide_dict % get_key('k40')) % awr - awr(3) = nuclides(nuclide_dict % get_key('k41')) % awr - end if - - case ('ca') - - ! Set the number of isotopes in this element - n_isotopes = 6 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.96941_8 - mf(2) = 0.00647_8 - mf(3) = 0.00135_8 - mf(4) = 0.02086_8 - mf(5) = 0.00004_8 - mf(6) = 0.00187_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ca40')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ca42')) % awr - awr(3) = nuclides(nuclide_dict % get_key('ca43')) % awr - awr(4) = nuclides(nuclide_dict % get_key('ca44')) % awr - awr(5) = nuclides(nuclide_dict % get_key('ca46')) % awr - awr(6) = nuclides(nuclide_dict % get_key('ca48')) % awr - end if - - case ('sc') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('sc45')) % awr - end if - - case ('ti') - - ! Set the number of isotopes in this element - n_isotopes = 5 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0825_8 - mf(2) = 0.0744_8 - mf(3) = 0.7372_8 - mf(4) = 0.0541_8 - mf(5) = 0.0518_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ti46')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ti47')) % awr - awr(3) = nuclides(nuclide_dict % get_key('ti48')) % awr - awr(4) = nuclides(nuclide_dict % get_key('ti49')) % awr - awr(5) = nuclides(nuclide_dict % get_key('ti50')) % awr - end if - - case ('v') - if (default_expand == ENDF_BVII0 .or. default_expand == JEFF_311 & - .or. default_expand == JEFF_32 .or. & - (default_expand >= JENDL_32 .and. default_expand <= JENDL_33)) then - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('v0')) % awr - end if - - else - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0025_8 - mf(2) = 0.9975_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('v50')) % awr - awr(2) = nuclides(nuclide_dict % get_key('v51')) % awr - end if - end if - - case ('cr') - - ! Set the number of isotopes in this element - n_isotopes = 4 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.04345_8 - mf(2) = 0.83789_8 - mf(3) = 0.09501_8 - mf(4) = 0.02365_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('cr50')) % awr - awr(2) = nuclides(nuclide_dict % get_key('cr52')) % awr - awr(3) = nuclides(nuclide_dict % get_key('cr53')) % awr - awr(4) = nuclides(nuclide_dict % get_key('cr54')) % awr - end if - - case ('mn') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('mn55')) % awr - end if - - case ('fe') - - ! Set the number of isotopes in this element - n_isotopes = 4 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.05845_8 - mf(2) = 0.91754_8 - mf(3) = 0.02119_8 - mf(4) = 0.00282_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('fe54')) % awr - awr(2) = nuclides(nuclide_dict % get_key('fe56')) % awr - awr(3) = nuclides(nuclide_dict % get_key('fe57')) % awr - awr(4) = nuclides(nuclide_dict % get_key('fe58')) % awr - end if - - case ('co') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('co59')) % awr - end if - - case ('ni') - - ! Set the number of isotopes in this element - n_isotopes = 5 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.68077_8 - mf(2) = 0.26223_8 - mf(3) = 0.011399_8 - mf(4) = 0.036346_8 - mf(5) = 0.009255_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ni58')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ni60')) % awr - awr(3) = nuclides(nuclide_dict % get_key('ni61')) % awr - awr(4) = nuclides(nuclide_dict % get_key('ni62')) % awr - awr(5) = nuclides(nuclide_dict % get_key('ni64')) % awr - end if - - case ('cu') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.6915_8 - mf(2) = 0.3085_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('cu63')) % awr - awr(2) = nuclides(nuclide_dict % get_key('cu65')) % awr - end if - - case ('zn') - if (default_expand == ENDF_BVII0 .or. default_expand == & - JEFF_311 .or. default_expand == JEFF_312) then - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('zn0')) % awr - end if - - else - - ! Set the number of isotopes in this element - n_isotopes = 5 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.4917_8 - mf(2) = 0.2773_8 - mf(3) = 0.0404_8 - mf(4) = 0.1845_8 - mf(5) = 0.0061_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('zn64')) % awr - awr(2) = nuclides(nuclide_dict % get_key('zn66')) % awr - awr(3) = nuclides(nuclide_dict % get_key('zn67')) % awr - awr(4) = nuclides(nuclide_dict % get_key('zn68')) % awr - awr(5) = nuclides(nuclide_dict % get_key('zn70')) % awr - end if - end if - - case ('ga') - if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ga0')) % awr - end if - else - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.60108_8 - mf(2) = 0.39892_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ga69')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ga71')) % awr - end if - end if - - case ('ge') - - ! Set the number of isotopes in this element - n_isotopes = 5 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.2057_8 - mf(2) = 0.2745_8 - mf(3) = 0.0775_8 - mf(4) = 0.3650_8 - mf(5) = 0.0773_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ge70')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ge72')) % awr - awr(3) = nuclides(nuclide_dict % get_key('ge73')) % awr - awr(4) = nuclides(nuclide_dict % get_key('ge74')) % awr - awr(5) = nuclides(nuclide_dict % get_key('ge76')) % awr - end if - - case ('as') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('as75')) % awr - end if - - case ('se') - - ! Set the number of isotopes in this element - n_isotopes = 6 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0089_8 - mf(2) = 0.0937_8 - mf(3) = 0.0763_8 - mf(4) = 0.2377_8 - mf(5) = 0.4961_8 - mf(6) = 0.0873_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('se74')) % awr - awr(2) = nuclides(nuclide_dict % get_key('se76')) % awr - awr(3) = nuclides(nuclide_dict % get_key('se77')) % awr - awr(4) = nuclides(nuclide_dict % get_key('se78')) % awr - awr(5) = nuclides(nuclide_dict % get_key('se80')) % awr - awr(6) = nuclides(nuclide_dict % get_key('se82')) % awr - end if - - case ('br') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.5069_8 - mf(2) = 0.4931_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('br79')) % awr - awr(2) = nuclides(nuclide_dict % get_key('br81')) % awr - end if - - case ('kr') - - ! Set the number of isotopes in this element - n_isotopes = 6 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.00355_8 - mf(2) = 0.02286_8 - mf(3) = 0.11593_8 - mf(4) = 0.11500_8 - mf(5) = 0.56987_8 - mf(6) = 0.17279_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('kr78')) % awr - awr(2) = nuclides(nuclide_dict % get_key('kr80')) % awr - awr(3) = nuclides(nuclide_dict % get_key('kr82')) % awr - awr(4) = nuclides(nuclide_dict % get_key('kr83')) % awr - awr(5) = nuclides(nuclide_dict % get_key('kr84')) % awr - awr(6) = nuclides(nuclide_dict % get_key('kr86')) % awr - end if - - case ('rb') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.7217_8 - mf(2) = 0.2783_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('rb85')) % awr - awr(2) = nuclides(nuclide_dict % get_key('rb87')) % awr - end if - - case ('sr') - - ! Set the number of isotopes in this element - n_isotopes = 4 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0056_8 - mf(2) = 0.0986_8 - mf(3) = 0.0700_8 - mf(4) = 0.8258_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('sr84')) % awr - awr(2) = nuclides(nuclide_dict % get_key('sr86')) % awr - awr(3) = nuclides(nuclide_dict % get_key('sr87')) % awr - awr(4) = nuclides(nuclide_dict % get_key('sr88')) % awr - end if - - case ('y') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('y89')) % awr - end if - - case ('zr') - - ! Set the number of isotopes in this element - n_isotopes = 5 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.5145_8 - mf(2) = 0.1122_8 - mf(3) = 0.1715_8 - mf(4) = 0.1738_8 - mf(5) = 0.0280_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('zr90')) % awr - awr(2) = nuclides(nuclide_dict % get_key('zr91')) % awr - awr(3) = nuclides(nuclide_dict % get_key('zr92')) % awr - awr(4) = nuclides(nuclide_dict % get_key('zr94')) % awr - awr(5) = nuclides(nuclide_dict % get_key('zr96')) % awr - end if - - case ('nb') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('nb93')) % awr - end if - - case ('mo') - - ! Set the number of isotopes in this element - n_isotopes = 7 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.1453_8 - mf(2) = 0.0915_8 - mf(3) = 0.1584_8 - mf(4) = 0.1667_8 - mf(5) = 0.0960_8 - mf(6) = 0.2439_8 - mf(7) = 0.0982_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('mo92')) % awr - awr(2) = nuclides(nuclide_dict % get_key('mo94')) % awr - awr(3) = nuclides(nuclide_dict % get_key('mo95')) % awr - awr(4) = nuclides(nuclide_dict % get_key('mo96')) % awr - awr(5) = nuclides(nuclide_dict % get_key('mo97')) % awr - awr(6) = nuclides(nuclide_dict % get_key('mo98')) % awr - awr(7) = nuclides(nuclide_dict % get_key('mo100')) % awr - end if - - case ('ru') - - ! Set the number of isotopes in this element - n_isotopes = 7 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0554_8 - mf(2) = 0.0187_8 - mf(3) = 0.1276_8 - mf(4) = 0.1260_8 - mf(5) = 0.1706_8 - mf(6) = 0.3155_8 - mf(7) = 0.1862_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ru96')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ru98')) % awr - awr(3) = nuclides(nuclide_dict % get_key('ru99')) % awr - awr(4) = nuclides(nuclide_dict % get_key('ru100')) % awr - awr(5) = nuclides(nuclide_dict % get_key('ru101')) % awr - awr(6) = nuclides(nuclide_dict % get_key('ru102')) % awr - awr(7) = nuclides(nuclide_dict % get_key('ru104')) % awr - end if - - case ('rh') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('rh103')) % awr - end if - - case ('pd') - - ! Set the number of isotopes in this element - n_isotopes = 6 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0102_8 - mf(2) = 0.1114_8 - mf(3) = 0.2233_8 - mf(4) = 0.2733_8 - mf(5) = 0.2646_8 - mf(6) = 0.1172_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('pd102')) % awr - awr(2) = nuclides(nuclide_dict % get_key('pd104')) % awr - awr(3) = nuclides(nuclide_dict % get_key('pd105')) % awr - awr(4) = nuclides(nuclide_dict % get_key('pd106')) % awr - awr(5) = nuclides(nuclide_dict % get_key('pd108')) % awr - awr(6) = nuclides(nuclide_dict % get_key('pd110')) % awr - end if - - case ('ag') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.51839_8 - mf(2) = 0.48161_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ag107')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ag109')) % awr - end if - - case ('cd') - - ! Set the number of isotopes in this element - n_isotopes = 8 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0125_8 - mf(2) = 0.0089_8 - mf(3) = 0.1249_8 - mf(4) = 0.1280_8 - mf(5) = 0.2413_8 - mf(6) = 0.1222_8 - mf(7) = 0.2873_8 - mf(8) = 0.0749_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('cd106')) % awr - awr(2) = nuclides(nuclide_dict % get_key('cd108')) % awr - awr(3) = nuclides(nuclide_dict % get_key('cd110')) % awr - awr(4) = nuclides(nuclide_dict % get_key('cd111')) % awr - awr(5) = nuclides(nuclide_dict % get_key('cd112')) % awr - awr(6) = nuclides(nuclide_dict % get_key('cd113')) % awr - awr(7) = nuclides(nuclide_dict % get_key('cd114')) % awr - awr(8) = nuclides(nuclide_dict % get_key('cd116')) % awr - end if - - case ('in') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0429_8 - mf(2) = 0.9571_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('in113')) % awr - awr(2) = nuclides(nuclide_dict % get_key('in115')) % awr - end if - - case ('sn') - - ! Set the number of isotopes in this element - n_isotopes = 10 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0097_8 - mf(2) = 0.0066_8 - mf(3) = 0.0034_8 - mf(4) = 0.1454_8 - mf(5) = 0.0768_8 - mf(6) = 0.2422_8 - mf(7) = 0.0859_8 - mf(8) = 0.3258_8 - mf(9) = 0.0463_8 - mf(10) = 0.0579_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('sn112')) % awr - awr(2) = nuclides(nuclide_dict % get_key('sn114')) % awr - awr(3) = nuclides(nuclide_dict % get_key('sn115')) % awr - awr(4) = nuclides(nuclide_dict % get_key('sn116')) % awr - awr(5) = nuclides(nuclide_dict % get_key('sn117')) % awr - awr(6) = nuclides(nuclide_dict % get_key('sn118')) % awr - awr(7) = nuclides(nuclide_dict % get_key('sn119')) % awr - awr(8) = nuclides(nuclide_dict % get_key('sn120')) % awr - awr(9) = nuclides(nuclide_dict % get_key('sn122')) % awr - awr(10) = nuclides(nuclide_dict % get_key('sn124')) % awr - end if - - case ('sb') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.5721_8 - mf(2) = 0.4279_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('sb121')) % awr - awr(2) = nuclides(nuclide_dict % get_key('sb123')) % awr - end if - - case ('te') - - ! Set the number of isotopes in this element - n_isotopes = 8 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0009_8 - mf(2) = 0.0255_8 - mf(3) = 0.0089_8 - mf(4) = 0.0474_8 - mf(5) = 0.0707_8 - mf(6) = 0.1884_8 - mf(7) = 0.3174_8 - mf(8) = 0.3408_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('te120')) % awr - awr(2) = nuclides(nuclide_dict % get_key('te122')) % awr - awr(3) = nuclides(nuclide_dict % get_key('te123')) % awr - awr(4) = nuclides(nuclide_dict % get_key('te124')) % awr - awr(5) = nuclides(nuclide_dict % get_key('te125')) % awr - awr(6) = nuclides(nuclide_dict % get_key('te126')) % awr - awr(7) = nuclides(nuclide_dict % get_key('te128')) % awr - awr(8) = nuclides(nuclide_dict % get_key('te130')) % awr - end if - - case ('i') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('i127')) % awr - end if - - case ('xe') - - ! Set the number of isotopes in this element - n_isotopes = 9 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.000952_8 - mf(2) = 0.000890_8 - mf(3) = 0.019102_8 - mf(4) = 0.264006_8 - mf(5) = 0.040710_8 - mf(6) = 0.212324_8 - mf(7) = 0.269086_8 - mf(8) = 0.104357_8 - mf(9) = 0.088573_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('xe124')) % awr - awr(2) = nuclides(nuclide_dict % get_key('xe126')) % awr - awr(3) = nuclides(nuclide_dict % get_key('xe128')) % awr - awr(4) = nuclides(nuclide_dict % get_key('xe129')) % awr - awr(5) = nuclides(nuclide_dict % get_key('xe130')) % awr - awr(6) = nuclides(nuclide_dict % get_key('xe131')) % awr - awr(7) = nuclides(nuclide_dict % get_key('xe132')) % awr - awr(8) = nuclides(nuclide_dict % get_key('xe134')) % awr - awr(9) = nuclides(nuclide_dict % get_key('xe136')) % awr - end if - - case ('cs') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('cs133')) % awr - end if - - case ('ba') - - ! Set the number of isotopes in this element - n_isotopes = 7 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.00106_8 - mf(2) = 0.00101_8 - mf(3) = 0.02417_8 - mf(4) = 0.06592_8 - mf(5) = 0.07854_8 - mf(6) = 0.11232_8 - mf(7) = 0.71698_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ba130')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ba132')) % awr - awr(3) = nuclides(nuclide_dict % get_key('ba134')) % awr - awr(4) = nuclides(nuclide_dict % get_key('ba135')) % awr - awr(5) = nuclides(nuclide_dict % get_key('ba136')) % awr - awr(6) = nuclides(nuclide_dict % get_key('ba137')) % awr - awr(7) = nuclides(nuclide_dict % get_key('ba138')) % awr - end if - - case ('la') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0008881_8 - mf(2) = 0.9991119_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('la138')) % awr - awr(2) = nuclides(nuclide_dict % get_key('la139')) % awr - end if - - case ('ce') - - ! Set the number of isotopes in this element - n_isotopes = 4 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.00185_8 - mf(2) = 0.00251_8 - mf(3) = 0.88450_8 - mf(4) = 0.11114_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ce136')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ce138')) % awr - awr(3) = nuclides(nuclide_dict % get_key('ce140')) % awr - awr(4) = nuclides(nuclide_dict % get_key('ce142')) % awr - end if - - case ('pr') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('pr141')) % awr - end if - - case ('nd') - - ! Set the number of isotopes in this element - n_isotopes = 7 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.27152_8 - mf(2) = 0.12174_8 - mf(3) = 0.23798_8 - mf(4) = 0.08293_8 - mf(5) = 0.17189_8 - mf(6) = 0.05756_8 - mf(7) = 0.05638_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('nd142')) % awr - awr(2) = nuclides(nuclide_dict % get_key('nd143')) % awr - awr(3) = nuclides(nuclide_dict % get_key('nd144')) % awr - awr(4) = nuclides(nuclide_dict % get_key('nd145')) % awr - awr(5) = nuclides(nuclide_dict % get_key('nd146')) % awr - awr(6) = nuclides(nuclide_dict % get_key('nd148')) % awr - awr(7) = nuclides(nuclide_dict % get_key('nd150')) % awr - end if - - case ('sm') - - ! Set the number of isotopes in this element - n_isotopes = 7 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0307_8 - mf(2) = 0.1499_8 - mf(3) = 0.1124_8 - mf(4) = 0.1382_8 - mf(5) = 0.0738_8 - mf(6) = 0.2675_8 - mf(7) = 0.2275_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('sm144')) % awr - awr(2) = nuclides(nuclide_dict % get_key('sm147')) % awr - awr(3) = nuclides(nuclide_dict % get_key('sm148')) % awr - awr(4) = nuclides(nuclide_dict % get_key('sm149')) % awr - awr(5) = nuclides(nuclide_dict % get_key('sm150')) % awr - awr(6) = nuclides(nuclide_dict % get_key('sm152')) % awr - awr(7) = nuclides(nuclide_dict % get_key('sm154')) % awr - end if - - case ('eu') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.4781_8 - mf(2) = 0.5219_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('eu151')) % awr - awr(2) = nuclides(nuclide_dict % get_key('eu153')) % awr - end if - - case ('gd') - - ! Set the number of isotopes in this element - n_isotopes = 7 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0020_8 - mf(2) = 0.0218_8 - mf(3) = 0.1480_8 - mf(4) = 0.2047_8 - mf(5) = 0.1565_8 - mf(6) = 0.2484_8 - mf(7) = 0.2186_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('gd152')) % awr - awr(2) = nuclides(nuclide_dict % get_key('gd154')) % awr - awr(3) = nuclides(nuclide_dict % get_key('gd155')) % awr - awr(4) = nuclides(nuclide_dict % get_key('gd156')) % awr - awr(5) = nuclides(nuclide_dict % get_key('gd157')) % awr - awr(6) = nuclides(nuclide_dict % get_key('gd158')) % awr - awr(7) = nuclides(nuclide_dict % get_key('gd160')) % awr - end if - - case ('tb') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('tb159')) % awr - end if - - case ('dy') - - ! Set the number of isotopes in this element - n_isotopes = 7 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.00056_8 - mf(2) = 0.00095_8 - mf(3) = 0.02329_8 - mf(4) = 0.18889_8 - mf(5) = 0.25475_8 - mf(6) = 0.24896_8 - mf(7) = 0.28260_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('dy156')) % awr - awr(2) = nuclides(nuclide_dict % get_key('dy158')) % awr - awr(3) = nuclides(nuclide_dict % get_key('dy160')) % awr - awr(4) = nuclides(nuclide_dict % get_key('dy161')) % awr - awr(5) = nuclides(nuclide_dict % get_key('dy162')) % awr - awr(6) = nuclides(nuclide_dict % get_key('dy163')) % awr - awr(7) = nuclides(nuclide_dict % get_key('dy164')) % awr - end if - - case ('ho') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ho165')) % awr - end if - - case ('er') - - ! Set the number of isotopes in this element - n_isotopes = 6 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.00139_8 - mf(2) = 0.01601_8 - mf(3) = 0.33503_8 - mf(4) = 0.22869_8 - mf(5) = 0.26978_8 - mf(6) = 0.14910_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('er162')) % awr - awr(2) = nuclides(nuclide_dict % get_key('er164')) % awr - awr(3) = nuclides(nuclide_dict % get_key('er166')) % awr - awr(4) = nuclides(nuclide_dict % get_key('er167')) % awr - awr(5) = nuclides(nuclide_dict % get_key('er168')) % awr - awr(6) = nuclides(nuclide_dict % get_key('er170')) % awr - end if - - case ('tm') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('tm169')) % awr - end if - - case ('yb') - - ! Set the number of isotopes in this element - n_isotopes = 7 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.00123_8 - mf(2) = 0.02982_8 - mf(3) = 0.1409_8 - mf(4) = 0.2168_8 - mf(5) = 0.16103_8 - mf(6) = 0.32026_8 - mf(7) = 0.12996_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('yb168')) % awr - awr(2) = nuclides(nuclide_dict % get_key('yb170')) % awr - awr(3) = nuclides(nuclide_dict % get_key('yb171')) % awr - awr(4) = nuclides(nuclide_dict % get_key('yb172')) % awr - awr(5) = nuclides(nuclide_dict % get_key('yb173')) % awr - awr(6) = nuclides(nuclide_dict % get_key('yb174')) % awr - awr(7) = nuclides(nuclide_dict % get_key('yb176')) % awr - end if - - case ('lu') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.97401_8 - mf(2) = 0.02599_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('lu175')) % awr - awr(2) = nuclides(nuclide_dict % get_key('lu176')) % awr - end if - - case ('hf') - - ! Set the number of isotopes in this element - n_isotopes = 6 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0016_8 - mf(2) = 0.0526_8 - mf(3) = 0.1860_8 - mf(4) = 0.2728_8 - mf(5) = 0.1362_8 - mf(6) = 0.3508_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('hf174')) % awr - awr(2) = nuclides(nuclide_dict % get_key('hf176')) % awr - awr(3) = nuclides(nuclide_dict % get_key('hf177')) % awr - awr(4) = nuclides(nuclide_dict % get_key('hf178')) % awr - awr(5) = nuclides(nuclide_dict % get_key('hf179')) % awr - awr(6) = nuclides(nuclide_dict % get_key('hf180')) % awr - end if - - case ('ta') - if (default_expand == ENDF_BVII0 .or. & - (default_expand >= JEFF_311 .and. default_expand <= JEFF_312) .or. & - (default_expand >= JENDL_32 .and. default_expand <= JENDL_40)) then - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ta181')) % awr - end if - else - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0001201_8 - mf(2) = 0.9998799_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ta180')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ta181')) % awr - end if - end if - - case ('w') - if (default_expand == ENDF_BVII0 .or. default_expand == JEFF_311 & - .or. default_expand == JEFF_312 .or. & - (default_expand >= JENDL_32 .and. default_expand <= JENDL_33)) then - ! Combine W-180 with W-182 - - ! Set the number of isotopes in this element - n_isotopes = 4 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.2662_8 - mf(2) = 0.1431_8 - mf(3) = 0.3064_8 - mf(4) = 0.2843_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('w182')) % awr - awr(2) = nuclides(nuclide_dict % get_key('w183')) % awr - awr(3) = nuclides(nuclide_dict % get_key('w184')) % awr - awr(4) = nuclides(nuclide_dict % get_key('w186')) % awr - end if - else - - ! Set the number of isotopes in this element - n_isotopes = 5 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0012_8 - mf(2) = 0.2650_8 - mf(3) = 0.1431_8 - mf(4) = 0.3064_8 - mf(5) = 0.2843_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('w180')) % awr - awr(2) = nuclides(nuclide_dict % get_key('w182')) % awr - awr(3) = nuclides(nuclide_dict % get_key('w183')) % awr - awr(4) = nuclides(nuclide_dict % get_key('w184')) % awr - awr(5) = nuclides(nuclide_dict % get_key('w186')) % awr - end if - end if - - case ('re') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.3740_8 - mf(2) = 0.6260_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('re185')) % awr - awr(2) = nuclides(nuclide_dict % get_key('re187')) % awr - end if - - case ('os') - if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('os0')) % awr - end if - else - - ! Set the number of isotopes in this element - n_isotopes = 7 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0002_8 - mf(2) = 0.0159_8 - mf(3) = 0.0196_8 - mf(4) = 0.1324_8 - mf(5) = 0.1615_8 - mf(6) = 0.2626_8 - mf(7) = 0.4078_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('os184')) % awr - awr(2) = nuclides(nuclide_dict % get_key('os186')) % awr - awr(3) = nuclides(nuclide_dict % get_key('os187')) % awr - awr(4) = nuclides(nuclide_dict % get_key('os188')) % awr - awr(5) = nuclides(nuclide_dict % get_key('os189')) % awr - awr(6) = nuclides(nuclide_dict % get_key('os190')) % awr - awr(7) = nuclides(nuclide_dict % get_key('os192')) % awr - end if - end if - - case ('ir') - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.373_8 - mf(2) = 0.627_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('ir191')) % awr - awr(2) = nuclides(nuclide_dict % get_key('ir193')) % awr - end if - - case ('pt') - if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('pt0')) % awr - end if - - else - - ! Set the number of isotopes in this element - n_isotopes = 6 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.00012_8 - mf(2) = 0.00782_8 - mf(3) = 0.3286_8 - mf(4) = 0.3378_8 - mf(5) = 0.2521_8 - mf(6) = 0.07356_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('pt190')) % awr - awr(2) = nuclides(nuclide_dict % get_key('pt192')) % awr - awr(3) = nuclides(nuclide_dict % get_key('pt194')) % awr - awr(4) = nuclides(nuclide_dict % get_key('pt195')) % awr - awr(5) = nuclides(nuclide_dict % get_key('pt196')) % awr - awr(6) = nuclides(nuclide_dict % get_key('pt198')) % awr - end if - end if - - case ('au') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('au197')) % awr - end if - - case ('hg') - - ! Set the number of isotopes in this element - n_isotopes = 7 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.0015_8 - mf(2) = 0.0997_8 - mf(3) = 0.1687_8 - mf(4) = 0.2310_8 - mf(5) = 0.1318_8 - mf(6) = 0.2986_8 - mf(7) = 0.0687_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('hg196')) % awr - awr(2) = nuclides(nuclide_dict % get_key('hg198')) % awr - awr(3) = nuclides(nuclide_dict % get_key('hg199')) % awr - awr(4) = nuclides(nuclide_dict % get_key('hg200')) % awr - awr(5) = nuclides(nuclide_dict % get_key('hg201')) % awr - awr(6) = nuclides(nuclide_dict % get_key('hg202')) % awr - awr(7) = nuclides(nuclide_dict % get_key('hg204')) % awr - end if - - case ('tl') - if (default_expand == JEFF_311 .or. default_expand == JEFF_312) then - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('tl0')) % awr - end if - else - - ! Set the number of isotopes in this element - n_isotopes = 2 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.2952_8 - mf(2) = 0.7048_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('tl203')) % awr - awr(2) = nuclides(nuclide_dict % get_key('tl205')) % awr - end if - end if - - case ('pb') - - ! Set the number of isotopes in this element - n_isotopes = 4 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.014_8 - mf(2) = 0.241_8 - mf(3) = 0.221_8 - mf(4) = 0.524_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('pb204')) % awr - awr(2) = nuclides(nuclide_dict % get_key('pb206')) % awr - awr(3) = nuclides(nuclide_dict % get_key('pb207')) % awr - awr(4) = nuclides(nuclide_dict % get_key('pb208')) % awr - end if - - case ('bi') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('bi209')) % awr - end if - - case ('th') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('th232')) % awr - end if - - case ('pa') - - ! Set the number of isotopes in this element - n_isotopes = 1 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = ONE - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('pa231')) % awr - end if - - case ('u') - - ! Set the number of isotopes in this element - n_isotopes = 3 - - ! Allocate and initialize array for the atomic weight ratios - allocate(awr(n_isotopes)) - awr = ONE - - ! Allocate and initialize array for mole fractions - allocate(mf(n_isotopes)) - mf(1) = 0.000054_8 - mf(2) = 0.007204_8 - mf(3) = 0.992742_8 - - ! Get the atomic weight ratios - if (expand_by == "wo") then - awr(1) = nuclides(nuclide_dict % get_key('u234')) % awr - awr(2) = nuclides(nuclide_dict % get_key('u235')) % awr - awr(3) = nuclides(nuclide_dict % get_key('u238')) % awr - end if - - ! Modify mole fractions if enrichment provided - if (enrichment /= -ONE) then - - ! Calculate the mass fractions of isotopes - mf(1) = 0.008 * enrichment - mf(2) = enrichment - mf(3) = 1.0 - 1.008 * enrichment - - ! Convert the mass fractions to mole fractions - do i = 1, n_isotopes - mf(i) = mf(i) / awr(i) - end do - - ! Normalize the mole fractions to ONE - element_awr = sum(mf(:)) - - do i = 1, n_isotopes - mf(i) = mf(i) / element_awr - end do - end if - - case default + integer :: i ! iterators + integer :: n_isotopes ! number of isotopes in the element + integer :: natural_elements_loc ! location in global array + integer :: nuclide_start ! ending nuclide in global array + integer :: nuclide_end ! starting nuclide in global array + character(2) :: element_name ! element atomic symbol + real(8) :: element_awr ! element atomic weight ratio + real(8), allocatable :: awr(:) ! isotope atomic weight ratios + real(8), allocatable :: mf(:) ! isotope mole fractions + + element_name = to_lower(name(1:2)) + + ! Find location of element name in natural_elements + i = -1 + do i = 1, num_natural_elements + if (natural_elements(i) == element_name) then + natural_elements_loc = i + end if + end do + + ! Issue error if element not found + if (i == -1) then call fatal_error("Cannot expand element: " // name) + end if + + ! Get start and end locations in natural_nuclides arrays + select case (default_expand) + case (ENDF_BVII0) + nuclide_start = natural_nuclides_ENDF_BVII0_start(natural_elements_loc) + nuclide_end = natural_nuclides_ENDF_BVII0_end(natural_elements_loc) + + case (ENDF_BVII1) + nuclide_start = natural_nuclides_ENDF_BVII1_start(natural_elements_loc) + nuclide_end = natural_nuclides_ENDF_BVII1_end(natural_elements_loc) + + case (JEFF_311) + nuclide_start = natural_nuclides_JEFF_311_start(natural_elements_loc) + nuclide_end = natural_nuclides_JEFF_311_end(natural_elements_loc) + + case (JEFF_312) + nuclide_start = natural_nuclides_JEFF_312_start(natural_elements_loc) + nuclide_end = natural_nuclides_JEFF_312_end(natural_elements_loc) + + case (JEFF_32) + nuclide_start = natural_nuclides_JEFF_32_start(natural_elements_loc) + nuclide_end = natural_nuclides_JEFF_32_end(natural_elements_loc) + + case (JENDL_32) + nuclide_start = natural_nuclides_JENDL_32_start(natural_elements_loc) + nuclide_end = natural_nuclides_JENDL_32_end(natural_elements_loc) + + case (JENDL_33) + nuclide_start = natural_nuclides_JENDL_33_start(natural_elements_loc) + nuclide_end = natural_nuclides_JENDL_33_end(natural_elements_loc) + + case (JENDL_40) + nuclide_start = natural_nuclides_JENDL_40_start(natural_elements_loc) + nuclide_end = natural_nuclides_JENDL_40_end(natural_elements_loc) end select + ! Set the number of isotopes in this element + n_isotopes = nuclide_end - nuclide_start + + ! Allocate and initialize array for the atomic weight ratios + allocate(awr(n_isotopes)) + awr = ONE + + ! Allocate and initialize array for mole fractions + allocate(mf(n_isotopes)) + + ! Add the nuclide names to the names array + do i = nuclide_start, nuclide_end-1 + mf(i - nuclide_start + 1) = natural_nuclides_mf(i) + end do + + ! Get the atomic weight ratios + if (expand_by == "wo") then + do i = nuclide_start, nuclide_end-1 + awr(i - nuclide_start + 1) = nuclides(nuclide_dict % & + get_key(to_lower(natural_nuclides(i)))) % awr + end do + end if + + ! Modify mole fractions if enrichment provided + if (enrichment /= -ONE .and. element_name == 'u') then + + ! Calculate the mass fractions of isotopes + mf(1) = 0.008 * enrichment + mf(2) = enrichment + mf(3) = 1.0 - 1.008 * enrichment + + ! Convert the mass fractions to mole fractions + do i = 1, n_isotopes + mf(i) = mf(i) / awr(i) + end do + + ! Normalize the mole fractions to ONE + element_awr = sum(mf(:)) + do i = 1, n_isotopes + mf(i) = mf(i) / element_awr + end do + end if + + ! Compute the ratio of the nuclide atomic weights to the element atomic + ! weight if (expand_by == "wo") then ! Compute the element awr @@ -7293,6 +4784,7 @@ contains end do end if + ! Add the densities to the master array do i = 1, n_isotopes call densities % push_back(density * mf(i) * awr(i)) end do diff --git a/tests/test_element_wo/inputs_true.dat b/tests/test_element_wo/inputs_true.dat index 136eedb7a4..d1c378eda0 100644 --- a/tests/test_element_wo/inputs_true.dat +++ b/tests/test_element_wo/inputs_true.dat @@ -1 +1 @@ -7db97c5303ca1f0beaba1b610c0d57cede072af2200b7494515caeca7f0ca43b1e1dbda1968f4f052af6c632cbba8c92203cd53670c19350c55d2339d28b2fb2 \ No newline at end of file +d9d8fda898e7c324c48c42ab64744acfd463a385cde30c827b0d757a4b52caee6bab87d45ad82fb40e8aa949b7fadbcd511a0ba2325ed707ff8cb9e9da7375c5 \ No newline at end of file diff --git a/tests/test_element_wo/results_true.dat b/tests/test_element_wo/results_true.dat index 2c37e7f782..0b4e58f946 100644 --- a/tests/test_element_wo/results_true.dat +++ b/tests/test_element_wo/results_true.dat @@ -1,5 +1,5 @@ k-combined: -8.863826E-01 5.114399E-02 +8.550315E-01 1.245826E-01 tally 1: -7.906207E+01 -1.251720E+03 +7.975160E+01 +1.273177E+03 diff --git a/tests/test_element_wo/test_element_wo.py b/tests/test_element_wo/test_element_wo.py index 1efc3e81bf..1d8422acac 100644 --- a/tests/test_element_wo/test_element_wo.py +++ b/tests/test_element_wo/test_element_wo.py @@ -23,6 +23,18 @@ class ElementWOTestHarness(PyAPITestHarness): fuel.add_element("U", 0.88, 'wo') fuel.add_element("O", 0.12, 'wo') + # Add the natural elements that are in the NNDC data to the fuel + for element in ['H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', \ + 'Na', 'Mg', 'Al', 'Si', 'P', 'Cl', 'Ar', 'K', \ + 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', \ + 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', \ + 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Ru', 'Rh', 'Pd', 'Ag', \ + 'Cd', 'In', 'Sn', 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', \ + 'La', 'Ce', 'Pr', 'Nd', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', \ + 'Ho', 'Er', 'Tm', 'Lu', 'Hf', 'Ta', 'W', 'Re', \ + 'Ir', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Th', 'Pa']: + fuel.add_element(element, 1.e-8, 'wo') + clad = openmc.Material(name='Cladding') clad.set_density('g/cm3', 6.55) clad.add_element("Zr", 1.0, 'wo')