From b48dc23e6946ba363a69f76ea4f8c4c555d20359 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 1 Apr 2015 18:32:01 -0400 Subject: [PATCH 01/12] Added labels to cells, surfaces, lattices and materials --- src/geometry_header.F90 | 3 +++ src/hdf5_summary.F90 | 16 ++++++++++++++++ src/input_xml.F90 | 31 +++++++++++++++++++++++++++++++ src/material_header.F90 | 1 + src/output.F90 | 12 ++++++++++++ src/utils/openmc/summary.py | 34 +++++++++++++++++++--------------- 6 files changed, 82 insertions(+), 15 deletions(-) diff --git a/src/geometry_header.F90 b/src/geometry_header.F90 index 6f6cfaece..3ac1bc6fa 100644 --- a/src/geometry_header.F90 +++ b/src/geometry_header.F90 @@ -22,6 +22,7 @@ module geometry_header type, abstract :: Lattice integer :: id ! Universe number for lattice + character(len=52) :: label = "" ! User-defined label real(8), allocatable :: pitch(:) ! Pitch along each axis integer, allocatable :: universes(:,:,:) ! Specified universes integer :: outside ! Material to fill area outside @@ -116,6 +117,7 @@ module geometry_header type Surface integer :: id ! Unique ID + character(len=52) :: label = "" ! User-defined label integer :: type ! Type of surface real(8), allocatable :: coeffs(:) ! Definition of surface integer, allocatable :: & @@ -130,6 +132,7 @@ module geometry_header type Cell integer :: id ! Unique ID + character(len=52) :: label = "" ! User-defined label integer :: type ! Type of cell (normal, universe, lattice) integer :: universe ! universe # this cell is in integer :: fill ! universe # filling this cell diff --git a/src/hdf5_summary.F90 b/src/hdf5_summary.F90 index c4ad25eb5..8f93d80c8 100644 --- a/src/hdf5_summary.F90 +++ b/src/hdf5_summary.F90 @@ -127,6 +127,10 @@ contains call su % write_data(i, "index", & group="geometry/cells/cell " // trim(to_str(c % id))) + ! Write label for this cell + call su % write_data(c % label, "label", & + group="geometry/cells/cell " // trim(to_str(c % id))) + ! Write universe for this cell call su % write_data(universes(c % universe) % id, "universe", & group="geometry/cells/cell " // trim(to_str(c % id))) @@ -200,6 +204,10 @@ contains call su % write_data(i, "index", & group="geometry/surfaces/surface " // trim(to_str(s % id))) + ! Write label for this surface + call su % write_data(s % label, "label", & + group="geometry/surfaces/surface " // trim(to_str(s % id))) + ! Write surface type select case (s % type) case (SURF_PX) @@ -311,6 +319,10 @@ contains call su % write_data(i, "index", & group="geometry/lattices/lattice " // trim(to_str(lat % id))) + ! Write label for this lattice + call su % write_data(lat % label, "label", & + group="geometry/lattices/lattice " // trim(to_str(lat % id))) + ! Write lattice type select type (lat) type is (RectLattice) @@ -437,6 +449,10 @@ contains call su % write_data(i, "index", & group="materials/material " // trim(to_str(m % id))) + ! Write label for this material + call su % write_data(m % label, "label", & + group="materials/material " // trim(to_str(m % id))) + ! Write atom density with units call su % write_data(m % density, "atom_density", & group="materials/material " // trim(to_str(m % id))) diff --git a/src/input_xml.F90 b/src/input_xml.F90 index cdc917604..7f5587ea1 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -972,6 +972,13 @@ contains else call fatal_error("Must specify id of cell in geometry XML file.") end if + + ! Copy cell label + c % label = '' + if (check_for_node(node_cell, "label")) then + call get_node_value(node_cell, "label", c % label) + end if + if (check_for_node(node_cell, "universe")) then call get_node_value(node_cell, "universe", c % universe) else @@ -1151,6 +1158,12 @@ contains &// to_str(s % id)) end if + ! Copy surface label + s % label = '' + if (check_for_node(node_surf, "label")) then + call get_node_value(node_surf, "label", s % label) + end if + ! Copy and interpret surface type word = '' if (check_for_node(node_surf, "type")) & @@ -1273,6 +1286,12 @@ contains &// to_str(lat % id)) end if + ! Copy lattice label + lat % label = '' + if (check_for_node(node_lat, "label")) then + call get_node_value(node_lat, "label", lat % label) + end if + ! Read number of lattice cells in each dimension n = get_arraysize_integer(node_lat, "dimension") if (n == 2) then @@ -1396,6 +1415,12 @@ contains &// to_str(lat % id)) end if + ! Copy lattice label + lat % label = '' + if (check_for_node(node_lat, "label")) then + call get_node_value(node_lat, "label", lat % label) + end if + ! Read number of lattice cells in each dimension call get_node_value(node_lat, "n_rings", lat % n_rings) if (check_for_node(node_lat, "n_axial")) then @@ -1641,6 +1666,12 @@ contains &// to_str(mat % id)) end if + ! Copy material label + mat % label = '' + if (check_for_node(node_mat, "label")) then + call get_node_value(node_mat, "label", mat % label) + end if + if (run_mode == MODE_PLOTTING) then ! add to the dictionary and skip xs processing call material_dict % add_key(mat % id, i) diff --git a/src/material_header.F90 b/src/material_header.F90 index fca735fd2..61aa5e558 100644 --- a/src/material_header.F90 +++ b/src/material_header.F90 @@ -8,6 +8,7 @@ module material_header type Material integer :: id ! unique identifier + character(len=52) :: label = "" ! User-defined label integer :: n_nuclides ! number of nuclides integer, allocatable :: nuclide(:) ! index in nuclides array real(8) :: density ! total atom density in atom/b-cm diff --git a/src/output.F90 b/src/output.F90 index 5599d8c56..185a96d5b 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -369,6 +369,9 @@ contains ! Write user-specified id for cell write(unit_,*) 'Cell ' // to_str(c % id) + ! Write user-specified label for cell + write(unit_,*) ' Label = ' // c % label + ! Find index in cells array and write index_cell = cell_dict % get_key(c % id) write(unit_,*) ' Array Index = ' // to_str(index_cell) @@ -487,6 +490,9 @@ contains ! Write information about lattice write(unit_,*) 'Lattice ' // to_str(lat % id) + ! Write user-specified label for lattice + write(unit_,*) ' Label = ' // lat % label + select type(lat) type is (RectLattice) ! Write dimension of lattice. @@ -572,6 +578,9 @@ contains ! Write user-specified id of surface write(unit_,*) 'Surface ' // to_str(surf % id) + ! Write user-specified label for surface + write(unit_,*) ' Label = ' // surf % label + ! Write type of surface select case (surf % type) case (SURF_PX) @@ -668,6 +677,9 @@ contains ! Write identifier for material write(unit_,*) 'Material ' // to_str(mat % id) + ! Write user-specified label for material + write(unit_,*) ' Label = ' // mat % label + ! Write total atom density in atom/b-cm write(unit_,*) ' Atom Density = ' // trim(to_str(mat % density)) & // ' atom/b-cm' diff --git a/src/utils/openmc/summary.py b/src/utils/openmc/summary.py index 81e0b3bf5..43ab01854 100644 --- a/src/utils/openmc/summary.py +++ b/src/utils/openmc/summary.py @@ -106,6 +106,7 @@ class Summary(object): material_id = int(key.lstrip('material ')) index = self._f['materials'][key]['index'][0] + name = self._f['materials'][key]['label'][0] density = self._f['materials'][key]['atom_density'][0] nuc_densities = self._f['materials'][key]['nuclide_densities'][...] nuclides = self._f['materials'][key]['nuclides'][...] @@ -124,7 +125,7 @@ class Summary(object): sab_xs.append(sab_table.split('.')[1]) # Create the Material - material = openmc.Material(material_id=material_id) + material = openmc.Material(material_id=material_id, name=name) # Set the Material's density to g/cm3 - this is what is used in OpenMC material.set_density(density=density, units='g/cm3') @@ -165,6 +166,7 @@ class Summary(object): surface_id = int(key.lstrip('surface ')) index = self._f['geometry/surfaces'][key]['index'][0] + name = self._f['geometry/surfaces'][key]['label'][0] surf_type = self._f['geometry/surfaces'][key]['type'][...][0] bc = self._f['geometry/surfaces'][key]['boundary_condition'][...][0] coeffs = self._f['geometry/surfaces'][key]['coefficients'][...] @@ -173,47 +175,47 @@ class Summary(object): if surf_type == 'X Plane': x0 = coeffs[0] - surface = openmc.XPlane(surface_id, bc, x0) + surface = openmc.XPlane(surface_id, bc, x0, name) elif surf_type == 'Y Plane': y0 = coeffs[0] - surface = openmc.YPlane(surface_id, bc, y0) + surface = openmc.YPlane(surface_id, bc, y0, name) elif surf_type == 'Z Plane': z0 = coeffs[0] - surface = openmc.ZPlane(surface_id, bc, z0) + surface = openmc.ZPlane(surface_id, bc, z0, name) elif surf_type == 'Plane': A = coeffs[0] B = coeffs[1] C = coeffs[2] D = coeffs[3] - surface = openmc.Plane(surface_id, bc, A, B, C, D) + surface = openmc.Plane(surface_id, bc, A, B, C, D, name) elif surf_type == 'X Cylinder': y0 = coeffs[0] z0 = coeffs[1] R = coeffs[2] - surface = openmc.XCylinder(surface_id, bc, y0, z0, R) + surface = openmc.XCylinder(surface_id, bc, y0, z0, R, name) elif surf_type == 'Y Cylinder': x0 = coeffs[0] z0 = coeffs[1] R = coeffs[2] - surface = openmc.YCylinder(surface_id, bc, x0, z0, R) + surface = openmc.YCylinder(surface_id, bc, x0, z0, R, name) elif surf_type == 'Z Cylinder': x0 = coeffs[0] y0 = coeffs[1] R = coeffs[2] - surface = openmc.ZCylinder(surface_id, bc, x0, y0, R) + surface = openmc.ZCylinder(surface_id, bc, x0, y0, R, name) elif surf_type == 'Sphere': x0 = coeffs[0] y0 = coeffs[1] z0 = coeffs[2] R = coeffs[3] - surface = openmc.Sphere(surface_id, bc, x0, y0, z0, R) + surface = openmc.Sphere(surface_id, bc, x0, y0, z0, R, name) elif surf_type in ['X Cone', 'Y Cone', 'Z Cone']: x0 = coeffs[0] @@ -222,11 +224,11 @@ class Summary(object): R2 = coeffs[3] if surf_type == 'X Cone': - surface = openmc.XCone(surface_id, bc, x0, y0, z0, R2) + surface = openmc.XCone(surface_id, bc, x0, y0, z0, R2, name) if surf_type == 'Y Cone': - surface = openmc.YCone(surface_id, bc, x0, y0, z0, R2) + surface = openmc.YCone(surface_id, bc, x0, y0, z0, R2, name) if surf_type == 'Z Cone': - surface = openmc.ZCone(surface_id, bc, x0, y0, z0, R2) + surface = openmc.ZCone(surface_id, bc, x0, y0, z0, R2, name) # Add Surface to global dictionary of all Surfaces self.surfaces[index] = surface @@ -256,6 +258,7 @@ class Summary(object): cell_id = int(key.lstrip('cell ')) index = self._f['geometry/cells'][key]['index'][0] + name = self._f['geometry/cells'][key]['label'][0] fill_type = self._f['geometry/cells'][key]['fill_type'][...][0] if fill_type == 'normal': @@ -271,7 +274,7 @@ class Summary(object): surfaces = list() # Create this Cell - cell = openmc.Cell(cell_id=cell_id) + cell = openmc.Cell(cell_id=cell_id, name) if fill_type == 'universe': translated = self._f['geometry/cells'][key]['translated'][0] @@ -349,6 +352,7 @@ class Summary(object): lattice_id = int(key.lstrip('lattice ')) index = self._f['geometry/lattices'][key]['index'][0] + name = self._f['geometry/lattices'][key]['label'][0] lattice_type = self._f['geometry/lattices'][key]['type'][...][0] if lattice_type == 'rectangular': @@ -364,7 +368,7 @@ class Summary(object): universe_ids = np.swapaxes(universe_ids, 1, 2) # Create the Lattice - lattice = openmc.RectLattice(lattice_id=lattice_id) + lattice = openmc.RectLattice(lattice_id=lattice_id, name=name) lattice.set_dimension(tuple(dimension)) lattice.set_lower_left(lower_left) lattice.set_pitch(pitch) @@ -404,7 +408,7 @@ class Summary(object): self._f['geometry/lattices'][key]['universes'][...] # Create the Lattice - lattice = openmc.HexLattice(lattice_id=lattice_id) + lattice = openmc.HexLattice(lattice_id=lattice_id, name=name) lattice.set_num_rings(n_rings) lattice.set_num_axial(n_axial) lattice.set_center(center) From aff76b82a199272b82aa553fbbeedb074df5b40a Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 1 Apr 2015 18:48:03 -0400 Subject: [PATCH 02/12] Python API cells, surfaces, lattices and materials now use labels --- src/utils/openmc/material.py | 7 +++---- src/utils/openmc/summary.py | 2 +- src/utils/openmc/surface.py | 6 +++++- src/utils/openmc/universe.py | 23 +++++++++-------------- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/utils/openmc/material.py b/src/utils/openmc/material.py index 7034feb6e..92c78bfdb 100644 --- a/src/utils/openmc/material.py +++ b/src/utils/openmc/material.py @@ -344,6 +344,9 @@ class Material(object): element = ET.Element("material") element.set("id", str(self._id)) + if len(self._name) > 0: + element.set("label", str(self._name)) + # Create density XML subelement subelement = ET.SubElement(element, "density") if self._density_units is not 'sum': @@ -470,10 +473,6 @@ class MaterialsFile(object): for material in self._materials: xml_element = material.get_material_xml() - - if len(material._name) > 0: - self._materials_file.append(ET.Comment(material._name)) - self._materials_file.append(xml_element) diff --git a/src/utils/openmc/summary.py b/src/utils/openmc/summary.py index 43ab01854..cde206721 100644 --- a/src/utils/openmc/summary.py +++ b/src/utils/openmc/summary.py @@ -274,7 +274,7 @@ class Summary(object): surfaces = list() # Create this Cell - cell = openmc.Cell(cell_id=cell_id, name) + cell = openmc.Cell(cell_id=cell_id, name=name) if fill_type == 'universe': translated = self._f['geometry/cells'][key]['translated'][0] diff --git a/src/utils/openmc/surface.py b/src/utils/openmc/surface.py index 269bfd1c7..5894cf250 100644 --- a/src/utils/openmc/surface.py +++ b/src/utils/openmc/surface.py @@ -110,6 +110,10 @@ class Surface(object): element = ET.Element("surface") element.set("id", str(self._id)) + + if len(self._name) > 0: + element.set("label", str(self._name)) + element.set("type", self._type) element.set("boundary", self._bc_type) @@ -592,4 +596,4 @@ class ZCone(Cone): # Initialize ZCone class attributes super(ZCone, self).__init__(surface_id, bc_type, x0, y0, z0, R2, name=name) - self._type = 'z-cone' \ No newline at end of file + self._type = 'z-cone' diff --git a/src/utils/openmc/universe.py b/src/utils/openmc/universe.py index e70b6effd..77d541e86 100644 --- a/src/utils/openmc/universe.py +++ b/src/utils/openmc/universe.py @@ -292,6 +292,9 @@ class Cell(object): element = ET.Element("cell") element.set("id", str(self._id)) + if len(self._name) > 0: + element.set("label", str(self._name)) + if isinstance(self._fill, openmc.Material): element.set("material", str(self._fill._id)) @@ -320,10 +323,6 @@ class Cell(object): # Create the XML subelement for this Surface surface = self._surfaces[surface_id][0] surface_subelement = surface.create_xml_subelement() - - if len(surface._name) > 0: - xml_element.append(ET.Comment(surface._name)) - xml_element.append(surface_subelement) # Append the halfspace and Surface ID @@ -547,10 +546,6 @@ class Universe(object): # Append the Universe ID to the subelement and add to Element cell_subelement.set("universe", str(self._id)) - - if len(cell._name) > 0: - xml_element.append(ET.Comment(cell._name)) - xml_element.append(cell_subelement) @@ -883,6 +878,9 @@ class RectLattice(Lattice): lattice_subelement = ET.Element("lattice") lattice_subelement.set("id", str(self._id)) + if len(self._name) > 0: + lattice_subelement.set("label", str(self._name)) + # Export the Lattice cell pitch if len(self._pitch) == 3: pitch = ET.SubElement(lattice_subelement, "pitch") @@ -966,9 +964,6 @@ class RectLattice(Lattice): universes = ET.SubElement(lattice_subelement, "universes") universes.text = universe_ids - if len(self._name) > 0: - xml_element.append(ET.Comment(self._name)) - # Append the XML subelement for this Lattice to the XML element xml_element.append(lattice_subelement) @@ -1190,6 +1185,9 @@ class HexLattice(Lattice): lattice_subelement = ET.Element("hex_lattice") lattice_subelement.set("id", str(self._id)) + if len(self._name) > 0: + lattice_subelement.set("label", str(self._name)) + # Export the Lattice cell pitch if len(self._pitch) == 2: pitch = ET.SubElement(lattice_subelement, "pitch") @@ -1260,9 +1258,6 @@ class HexLattice(Lattice): universes = ET.SubElement(lattice_subelement, "universes") universes.text = '\n' + universe_ids - if len(self._name) > 0: - xml_element.append(ET.Comment(self._name)) - # Append the XML subelement for this Lattice to the XML element xml_element.append(lattice_subelement) From f6d8cb779a69005439cd9d5a2e1ee7164ea7f16a Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 23 Apr 2015 21:59:27 -0400 Subject: [PATCH 03/12] Updated input docs with surface label descriptor --- docs/source/usersguide/input.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index d98804c86..b1186874a 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -708,6 +708,13 @@ Each ```` element can have the following attributes or sub-elements: *Default*: None + :label: + An optional string label to easily identify the surface in summary + output files. This string is limited to 52 characters for formatting + purposes. + + *Default*: None + :type: The type of the surfaces. This can be "x-plane", "y-plane", "z-plane", "plane", "x-cylinder", "y-cylinder", "z-cylinder", or "sphere". From d64ca1816e71d15afb51404b11b7dcfa4136ff03 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 23 Apr 2015 22:06:52 -0400 Subject: [PATCH 04/12] Updated input docs with cell, lattice and material label descriptor --- docs/source/usersguide/input.rst | 38 ++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index b1186874a..90deeb204 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -709,11 +709,10 @@ Each ```` element can have the following attributes or sub-elements: *Default*: None :label: - An optional string label to easily identify the surface in summary - output files. This string is limited to 52 characters for formatting - purposes. + An optional string label to identify the surface in summary output + files. This string is limited to 52 characters for formatting purposes. - *Default*: None + *Default*: "" :type: The type of the surfaces. This can be "x-plane", "y-plane", "z-plane", @@ -795,6 +794,12 @@ Each ```` element can have the following attributes or sub-elements: *Default*: None + :label: + An optional string label to identify the cell in summary output files. + This string is limmited to 52 characters for formatting purposes. + + *Default*: "" + :universe: The ``id`` of the universe that this cell is contained in. @@ -860,6 +865,12 @@ the following attributes or sub-elements: :id: A unique integer that can be used to identify the lattice. + :label: + An optional string label to identify the lattice in summary output + files. This string is limited to 52 characters for formatting purposes. + + *Default*: "" + :dimension: Two or three integers representing the number of lattice cells in the x- and y- (and z-) directions, respectively. @@ -919,6 +930,12 @@ the following attributes or sub-elements: :id: A unique integer that can be used to identify the lattice. + :label: + An optional string label to identify the hex_lattice in summary output + files. This string is limited to 52 characters for formatting purposes. + + *Default*: "" + :n_rings: An integer representing the number of radial ring positions in the xy-plane. Note that this number includes the degenerate center ring which only has one @@ -996,6 +1013,12 @@ Each ``material`` element can have the following attributes or sub-elements: :id: A unique integer that can be used to identify the material. + :label: + An optional string label to identify the material in summary output + files. This string is limited to 52 characters for formatting purposes. + + *Default*: "" + :density: An element with attributes/sub-elements called ``value`` and ``units``. The ``value`` attribute is the numeric value of the density while the ``units`` @@ -1099,9 +1122,10 @@ and ````. The ```` element accepts the following sub-elements: :label: - This is an optional sub-element specifying the name of this tally to be used - for output purposes. This string is limited to 52 characters for formatting - purposes. + An optional string label to identify the tally in summary output + files. This string is limited to 52 characters for formatting purposes. + + *Default*: "" :filter: Specify a filter that restricts contributions to the tally to particles From 9c7939ebbd6616107bcfffad82b60d25082bafa6 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 25 Apr 2015 16:36:30 -0400 Subject: [PATCH 05/12] Removed write_string_1Darray(...) and read_string_1Darray(...) --- src/mpiio_interface.F90 | 1 - src/output_interface.F90 | 85 ---------------------------------------- 2 files changed, 86 deletions(-) diff --git a/src/mpiio_interface.F90 b/src/mpiio_interface.F90 index 97ca73fb3..09fa7fcb5 100644 --- a/src/mpiio_interface.F90 +++ b/src/mpiio_interface.F90 @@ -38,7 +38,6 @@ module mpiio_interface module procedure mpi_read_integer_4Darray module procedure mpi_read_long module procedure mpi_read_string - !module procedure mpi_read_string_1Darray end interface mpi_read_data contains diff --git a/src/output_interface.F90 b/src/output_interface.F90 index 6d43de21f..d8134aa58 100644 --- a/src/output_interface.F90 +++ b/src/output_interface.F90 @@ -1761,91 +1761,6 @@ contains #endif end subroutine read_string -!=============================================================================== -! WRITE_STRING_1DARRAY writes 1-D string data -!=============================================================================== - - subroutine write_string_1Darray(self, buffer, name, group, length, collect) - - integer, intent(in) :: length ! length of array to write - character(*), intent(in) :: buffer(:) ! data to write - character(*), intent(in) :: name ! name of data - character(*), intent(in), optional :: group ! HDF5 group name - logical, intent(in), optional :: collect ! collective I/O - class(BinaryOutput) :: self - - character(len=MAX_WORD_LEN) :: name_ ! HDF5 dataset name - character(len=MAX_WORD_LEN) :: group_ ! HDF5 group name - integer :: n - logical :: collect_ - - ! Get string length - n = len_trim(buffer(1)) - - ! Set name - name_ = trim(name) - - ! Set group - if (present(group)) then - group_ = trim(group) - end if - - ! Set up collective vs. independent I/O - if (present(collect)) then - collect_ = collect - else - collect_ = .true. - end if - -#ifdef HDF5 - ! Check if HDF5 group should be created/opened - if (present(group)) then - call hdf5_open_group(self % hdf5_fh, group_, self % hdf5_grp) - else - self % hdf5_grp = self % hdf5_fh - endif - if (present(group)) call hdf5_close_group(self % hdf5_grp) -#endif - - end subroutine write_string_1Darray - -!=============================================================================== -! READ_STRING_1DARRAY reads 1-D string data -!=============================================================================== - - subroutine read_string_1Darray(self, buffer, name, group, length, collect) - - integer, intent(in) :: length ! length of array to write - character(*), intent(inout) :: buffer(:) ! data to write - character(*), intent(in) :: name ! name of data - character(*), intent(in), optional :: group ! HDF5 group name - logical, intent(in), optional :: collect ! collective I/O - class(BinaryOutput) :: self - - character(len=MAX_WORD_LEN) :: name_ ! HDF5 dataset name - character(len=MAX_WORD_LEN) :: group_ ! HDF5 group name - integer :: n - logical :: collect_ - - ! Get string length - n = len(buffer(1)) - - ! Set name - name_ = trim(name) - - ! Set group - if (present(group)) then - group_ = trim(group) - end if - - ! Set up collective vs. independent I/O - if (present(collect)) then - collect_ = collect - else - collect_ = .true. - end if - - end subroutine read_string_1Darray !=============================================================================== ! WRITE_ATTRIBUTE_STRING From fc353d8589ba4d37903517059c46820830c53e81 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 25 Apr 2015 16:41:50 -0400 Subject: [PATCH 06/12] Removed write_string_1Darray(...) stub in mpiio_interface.F90 --- src/mpiio_interface.F90 | 1 - 1 file changed, 1 deletion(-) diff --git a/src/mpiio_interface.F90 b/src/mpiio_interface.F90 index 09fa7fcb5..30093adec 100644 --- a/src/mpiio_interface.F90 +++ b/src/mpiio_interface.F90 @@ -21,7 +21,6 @@ module mpiio_interface module procedure mpi_write_integer_4Darray module procedure mpi_write_long module procedure mpi_write_string - !module procedure mpi_write_string_1Darray end interface mpi_write_data ! Generic HDF5 read procedure interface From c738c73486ca4edffc23dc1985dafb4c45a4426a Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 27 Apr 2015 08:20:30 -0400 Subject: [PATCH 07/12] Changed label to name --- docs/source/usersguide/input.rst | 24 +++++++------- examples/python/pincell/build-xml.py | 2 +- src/cmfd_input.F90 | 12 +++---- src/geometry_header.F90 | 6 ++-- src/hdf5_summary.F90 | 16 +++++----- src/input_xml.F90 | 48 ++++++++++++++-------------- src/material_header.F90 | 2 +- src/output.F90 | 20 ++++++------ src/state_point.F90 | 12 +++---- src/tally_header.F90 | 4 +-- src/utils/openmc/material.py | 2 +- src/utils/openmc/statepoint.py | 38 +++++++++++----------- src/utils/openmc/summary.py | 8 ++--- src/utils/openmc/surface.py | 2 +- src/utils/openmc/tallies.py | 34 ++++++++++---------- src/utils/openmc/universe.py | 6 ++-- tests/test_cmfd_feed/results.py | 6 ++-- tests/test_cmfd_jfnk/results.py | 6 ++-- tests/test_cmfd_nofeed/results.py | 6 ++-- 19 files changed, 127 insertions(+), 127 deletions(-) diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index 90deeb204..76b441d7f 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -708,8 +708,8 @@ Each ```` element can have the following attributes or sub-elements: *Default*: None - :label: - An optional string label to identify the surface in summary output + :name: + An optional string name to identify the surface in summary output files. This string is limited to 52 characters for formatting purposes. *Default*: "" @@ -794,8 +794,8 @@ Each ```` element can have the following attributes or sub-elements: *Default*: None - :label: - An optional string label to identify the cell in summary output files. + :name: + An optional string name to identify the cell in summary output files. This string is limmited to 52 characters for formatting purposes. *Default*: "" @@ -865,8 +865,8 @@ the following attributes or sub-elements: :id: A unique integer that can be used to identify the lattice. - :label: - An optional string label to identify the lattice in summary output + :name: + An optional string name to identify the lattice in summary output files. This string is limited to 52 characters for formatting purposes. *Default*: "" @@ -930,8 +930,8 @@ the following attributes or sub-elements: :id: A unique integer that can be used to identify the lattice. - :label: - An optional string label to identify the hex_lattice in summary output + :name: + An optional string name to identify the hex_lattice in summary output files. This string is limited to 52 characters for formatting purposes. *Default*: "" @@ -1013,8 +1013,8 @@ Each ``material`` element can have the following attributes or sub-elements: :id: A unique integer that can be used to identify the material. - :label: - An optional string label to identify the material in summary output + :name: + An optional string name to identify the material in summary output files. This string is limited to 52 characters for formatting purposes. *Default*: "" @@ -1121,8 +1121,8 @@ and ````. The ```` element accepts the following sub-elements: - :label: - An optional string label to identify the tally in summary output + :name: + An optional string name to identify the tally in summary output files. This string is limited to 52 characters for formatting purposes. *Default*: "" diff --git a/examples/python/pincell/build-xml.py b/examples/python/pincell/build-xml.py index c79fec7fe..9338aff0e 100644 --- a/examples/python/pincell/build-xml.py +++ b/examples/python/pincell/build-xml.py @@ -200,7 +200,7 @@ mesh_filter = openmc.Filter() mesh_filter.mesh = mesh # Instantiate the Tally -tally = openmc.Tally(tally_id=1) +tally = openmc.Tally(tally_id=1, name='tally 1') tally.add_filter(energy_filter) tally.add_filter(mesh_filter) tally.add_score('flux') diff --git a/src/cmfd_input.F90 b/src/cmfd_input.F90 index 578ecb967..11059c48f 100644 --- a/src/cmfd_input.F90 +++ b/src/cmfd_input.F90 @@ -460,8 +460,8 @@ contains if (i == 1) then - ! Set label - t % label = "CMFD flux, total, scatter-1" + ! Set name + t % name = "CMFD flux, total, scatter-1" ! Set tally estimator to analog t % estimator = ESTIMATOR_ANALOG @@ -491,8 +491,8 @@ contains else if (i == 2) then - ! Set label - t % label = "CMFD neutron production" + ! Set name + t % name = "CMFD neutron production" ! Set tally estimator to analog t % estimator = ESTIMATOR_ANALOG @@ -536,8 +536,8 @@ contains else if (i == 3) then - ! Set label - t % label = "CMFD surface currents" + ! Set name + t % name = "CMFD surface currents" ! Set tally estimator to analog t % estimator = ESTIMATOR_ANALOG diff --git a/src/geometry_header.F90 b/src/geometry_header.F90 index 3ac1bc6fa..b6cf43119 100644 --- a/src/geometry_header.F90 +++ b/src/geometry_header.F90 @@ -22,7 +22,7 @@ module geometry_header type, abstract :: Lattice integer :: id ! Universe number for lattice - character(len=52) :: label = "" ! User-defined label + character(len=52) :: name = "" ! User-defined name real(8), allocatable :: pitch(:) ! Pitch along each axis integer, allocatable :: universes(:,:,:) ! Specified universes integer :: outside ! Material to fill area outside @@ -117,7 +117,7 @@ module geometry_header type Surface integer :: id ! Unique ID - character(len=52) :: label = "" ! User-defined label + character(len=52) :: name = "" ! User-defined name integer :: type ! Type of surface real(8), allocatable :: coeffs(:) ! Definition of surface integer, allocatable :: & @@ -132,7 +132,7 @@ module geometry_header type Cell integer :: id ! Unique ID - character(len=52) :: label = "" ! User-defined label + character(len=52) :: name = "" ! User-defined name integer :: type ! Type of cell (normal, universe, lattice) integer :: universe ! universe # this cell is in integer :: fill ! universe # filling this cell diff --git a/src/hdf5_summary.F90 b/src/hdf5_summary.F90 index 8f93d80c8..c9e468b62 100644 --- a/src/hdf5_summary.F90 +++ b/src/hdf5_summary.F90 @@ -127,8 +127,8 @@ contains call su % write_data(i, "index", & group="geometry/cells/cell " // trim(to_str(c % id))) - ! Write label for this cell - call su % write_data(c % label, "label", & + ! Write name for this cell + call su % write_data(c % name, "name", & group="geometry/cells/cell " // trim(to_str(c % id))) ! Write universe for this cell @@ -204,8 +204,8 @@ contains call su % write_data(i, "index", & group="geometry/surfaces/surface " // trim(to_str(s % id))) - ! Write label for this surface - call su % write_data(s % label, "label", & + ! Write name for this surface + call su % write_data(s % name, "name", & group="geometry/surfaces/surface " // trim(to_str(s % id))) ! Write surface type @@ -319,8 +319,8 @@ contains call su % write_data(i, "index", & group="geometry/lattices/lattice " // trim(to_str(lat % id))) - ! Write label for this lattice - call su % write_data(lat % label, "label", & + ! Write name for this lattice + call su % write_data(lat % name, "name", & group="geometry/lattices/lattice " // trim(to_str(lat % id))) ! Write lattice type @@ -449,8 +449,8 @@ contains call su % write_data(i, "index", & group="materials/material " // trim(to_str(m % id))) - ! Write label for this material - call su % write_data(m % label, "label", & + ! Write name for this material + call su % write_data(m % name, "name", & group="materials/material " // trim(to_str(m % id))) ! Write atom density with units diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 9c02f61b4..b72b7c252 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -976,10 +976,10 @@ contains call fatal_error("Must specify id of cell in geometry XML file.") end if - ! Copy cell label - c % label = '' - if (check_for_node(node_cell, "label")) then - call get_node_value(node_cell, "label", c % label) + ! Copy cell name + c % name = '' + if (check_for_node(node_cell, "name")) then + call get_node_value(node_cell, "name", c % name) end if if (check_for_node(node_cell, "universe")) then @@ -1161,10 +1161,10 @@ contains &// to_str(s % id)) end if - ! Copy surface label - s % label = '' - if (check_for_node(node_surf, "label")) then - call get_node_value(node_surf, "label", s % label) + ! Copy surface name + s % name = '' + if (check_for_node(node_surf, "name")) then + call get_node_value(node_surf, "name", s % name) end if ! Copy and interpret surface type @@ -1289,10 +1289,10 @@ contains &// to_str(lat % id)) end if - ! Copy lattice label - lat % label = '' - if (check_for_node(node_lat, "label")) then - call get_node_value(node_lat, "label", lat % label) + ! Copy lattice name + lat % name = '' + if (check_for_node(node_lat, "name")) then + call get_node_value(node_lat, "name", lat % name) end if ! Read number of lattice cells in each dimension @@ -1418,10 +1418,10 @@ contains &// to_str(lat % id)) end if - ! Copy lattice label - lat % label = '' - if (check_for_node(node_lat, "label")) then - call get_node_value(node_lat, "label", lat % label) + ! Copy lattice name + lat % name = '' + if (check_for_node(node_lat, "name")) then + call get_node_value(node_lat, "name", lat % name) end if ! Read number of lattice cells in each dimension @@ -1669,10 +1669,10 @@ contains &// to_str(mat % id)) end if - ! Copy material label - mat % label = '' - if (check_for_node(node_mat, "label")) then - call get_node_value(node_mat, "label", mat % label) + ! Copy material name + mat % name = '' + if (check_for_node(node_mat, "name")) then + call get_node_value(node_mat, "name", mat % name) end if if (run_mode == MODE_PLOTTING) then @@ -2237,10 +2237,10 @@ contains &// to_str(t % id)) end if - ! Copy tally label - t % label = '' - if (check_for_node(node_tal, "label")) & - call get_node_value(node_tal, "label", t % label) + ! Copy tally name + t % name = '' + if (check_for_node(node_tal, "name")) & + call get_node_value(node_tal, "name", t % name) ! ======================================================================= ! READ DATA FOR FILTERS diff --git a/src/material_header.F90 b/src/material_header.F90 index 4c94ce98f..a10382abd 100644 --- a/src/material_header.F90 +++ b/src/material_header.F90 @@ -8,7 +8,7 @@ module material_header type Material integer :: id ! unique identifier - character(len=52) :: label = "" ! User-defined label + character(len=52) :: name = "" ! User-defined name integer :: n_nuclides ! number of nuclides integer, allocatable :: nuclide(:) ! index in nuclides array real(8) :: density ! total atom density in atom/b-cm diff --git a/src/output.F90 b/src/output.F90 index aff46bbfc..3cea71de6 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -369,8 +369,8 @@ contains ! Write user-specified id for cell write(unit_,*) 'Cell ' // to_str(c % id) - ! Write user-specified label for cell - write(unit_,*) ' Label = ' // c % label + ! Write user-specified name for cell + write(unit_,*) ' Name = ' // c % name ! Find index in cells array and write index_cell = cell_dict % get_key(c % id) @@ -490,8 +490,8 @@ contains ! Write information about lattice write(unit_,*) 'Lattice ' // to_str(lat % id) - ! Write user-specified label for lattice - write(unit_,*) ' Label = ' // lat % label + ! Write user-specified name for lattice + write(unit_,*) ' Name = ' // lat % name select type(lat) type is (RectLattice) @@ -578,8 +578,8 @@ contains ! Write user-specified id of surface write(unit_,*) 'Surface ' // to_str(surf % id) - ! Write user-specified label for surface - write(unit_,*) ' Label = ' // surf % label + ! Write user-specified name for surface + write(unit_,*) ' Name = ' // surf % name ! Write type of surface select case (surf % type) @@ -677,8 +677,8 @@ contains ! Write identifier for material write(unit_,*) 'Material ' // to_str(mat % id) - ! Write user-specified label for material - write(unit_,*) ' Label = ' // mat % label + ! Write user-specified name for material + write(unit_,*) ' Name = ' // mat % name ! Write total atom density in atom/b-cm write(unit_,*) ' Atom Density = ' // trim(to_str(mat % density)) & @@ -1779,12 +1779,12 @@ contains end if ! Write header block - if (t % label == "") then + if (t % name == "") then call header("TALLY " // trim(to_str(t % id)), unit=UNIT_TALLY, & level=3) else call header("TALLY " // trim(to_str(t % id)) // ": " & - // trim(t % label), unit=UNIT_TALLY, level=3) + // trim(t % name), unit=UNIT_TALLY, level=3) endif ! Handle surface current tallies separately diff --git a/src/state_point.F90 b/src/state_point.F90 index e30be0ea3..48e26e129 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -236,10 +236,10 @@ contains ! Get pointer to tally tally => tallies(i) - call sp % write_data(len(tally % label), "label_size", & + call sp % write_data(len(tally % name), "name_size", & group="tallies/tally " // trim(to_str(tally % id))) - if (len(tally % label) > 0) then - call sp % write_data(tally % label, "label", & + if (len(tally % name) > 0) then + call sp % write_data(tally % name, "name", & group="tallies/tally " // trim(to_str(tally % id))) endif @@ -649,7 +649,7 @@ contains character(MAX_FILE_LEN) :: path_temp character(19) :: current_time - character(52) :: label + character(52) :: name integer :: i, j, k integer :: length(4) integer :: int_array(3) @@ -826,10 +826,10 @@ contains tally => tallies(i) curr_key = key_array(id_array(i)) - call sp % read_data(j, "label_size", group="tallies/tally " // & + call sp % read_data(j, "name_size", group="tallies/tally " // & trim(to_str(curr_key))) if (j > 0) then - call sp % read_data(label, "label", group="tallies/tally " // & + call sp % read_data(name, "name", group="tallies/tally " // & trim(to_str(curr_key))) end if diff --git a/src/tally_header.F90 b/src/tally_header.F90 index e440f472e..1487f1ddd 100644 --- a/src/tally_header.F90 +++ b/src/tally_header.F90 @@ -71,7 +71,7 @@ module tally_header ! Basic data integer :: id ! user-defined identifier - character(len=52) :: label = "" ! user-defined label + character(len=52) :: name = "" ! user-defined name integer :: type ! volume, surface current integer :: estimator ! collision, track-length real(8) :: volume ! volume of region @@ -159,7 +159,7 @@ module tally_header ! This routine will go through each item in TallyObject and set the value ! to its default, as-initialized values, including deallocations. - this % label = "" + this % name = "" if (allocated(this % filters)) then do i = 1, size(this % filters) diff --git a/src/utils/openmc/material.py b/src/utils/openmc/material.py index 06f1bdc9f..da205dc5b 100644 --- a/src/utils/openmc/material.py +++ b/src/utils/openmc/material.py @@ -375,7 +375,7 @@ class Material(object): element.set("id", str(self._id)) if len(self._name) > 0: - element.set("label", str(self._name)) + element.set("name", str(self._name)) # Create density XML subelement subelement = ET.SubElement(element, "density") diff --git a/src/utils/openmc/statepoint.py b/src/utils/openmc/statepoint.py index 73ec85fc2..f5758d03d 100644 --- a/src/utils/openmc/statepoint.py +++ b/src/utils/openmc/statepoint.py @@ -298,17 +298,17 @@ class StatePoint(object): # Iterate over all Tallies for tally_key in self._tally_keys: - # Read user-specified Tally label (if specified) - label_size = self._get_int( - path='{0}{1}/label_size'.format(base, tally_key))[0] + # Read user-specified Tally name (if specified) + name_size = self._get_int( + path='{0}{1}/name_size'.format(base, tally_key))[0] - if label_size > 0: - label = self._get_string( - label_size, path='{0}{1}/label'.format(base, tally_key)) + if name_size > 0: + name = self._get_string( + name_size, path='{0}{1}/name'.format(base, tally_key)) - # Remove leading and trailing characters from string label - label = label.lstrip('[\'') - label = label.rstrip('\']') + # Remove leading and trailing characters from string name + name = name.lstrip('[\'') + name = name.rstrip('\']') # Read integer Tally estimator type code (analog or tracklength) estimator_type = self._get_int( @@ -319,7 +319,7 @@ class StatePoint(object): path='{0}{1}/n_realizations'.format(base, tally_key))[0] # Create Tally object and assign basic properties - tally = openmc.Tally(tally_key, label) + tally = openmc.Tally(tally_key, name) tally.estimator = ESTIMATOR_TYPES[estimator_type] tally.num_realizations = n_realizations @@ -570,7 +570,7 @@ class StatePoint(object): def get_tally(self, score, filters, nuclides, - label='', estimator='tracklength'): + name='', estimator='tracklength'): """Finds and returns a Tally object with certain properties. Parameters @@ -584,8 +584,8 @@ class StatePoint(object): nuclides : list A list of Nuclide objects - label : str - The label specified for the Tally (default is '') + name : str + The name specified for the Tally (default is '') estimator: str The type of estimator ('tracklength' (default) or 'analog') @@ -597,8 +597,8 @@ class StatePoint(object): # Iterate over all tallies to find the appropriate one for tally_id, test_tally in self._tallies.items(): - # Determine if the queried Tally label is the same as this Tally - if not label == test_tally._label: + # Determine if the queried Tally name is the same as this Tally + if not name == test_tally._name: continue # Determine if the queried Tally estimator is the same as this Tally @@ -643,7 +643,7 @@ class StatePoint(object): return tally - def get_tally_id(self, score, filters, label='', estimator='tracklength'): + def get_tally_id(self, score, filters, name='', estimator='tracklength'): """Retrieve the Tally ID for a given list of filters and score(s). Parameters @@ -654,14 +654,14 @@ class StatePoint(object): filters : list A list of Filter objects - label : str - The label specified for the Tally (default is '') + name : str + The name specified for the Tally (default is '') estimator: str The type of estimator ('tracklength' (default) or 'analog') """ - tally = self.get_tally(score, filters, label, estimator) + tally = self.get_tally(score, filters, name, estimator) return tally._id diff --git a/src/utils/openmc/summary.py b/src/utils/openmc/summary.py index 2e558fe72..d55b843a4 100644 --- a/src/utils/openmc/summary.py +++ b/src/utils/openmc/summary.py @@ -105,7 +105,7 @@ class Summary(object): material_id = int(key.lstrip('material ')) index = self._f['materials'][key]['index'][0] - name = self._f['materials'][key]['label'][0] + name = self._f['materials'][key]['name'][0] density = self._f['materials'][key]['atom_density'][0] nuc_densities = self._f['materials'][key]['nuclide_densities'][...] nuclides = self._f['materials'][key]['nuclides'][...] @@ -165,7 +165,7 @@ class Summary(object): surface_id = int(key.lstrip('surface ')) index = self._f['geometry/surfaces'][key]['index'][0] - name = self._f['geometry/surfaces'][key]['label'][0] + name = self._f['geometry/surfaces'][key]['name'][0] surf_type = self._f['geometry/surfaces'][key]['type'][...][0] bc = self._f['geometry/surfaces'][key]['boundary_condition'][...][0] coeffs = self._f['geometry/surfaces'][key]['coefficients'][...] @@ -257,7 +257,7 @@ class Summary(object): cell_id = int(key.lstrip('cell ')) index = self._f['geometry/cells'][key]['index'][0] - name = self._f['geometry/cells'][key]['label'][0] + name = self._f['geometry/cells'][key]['name'][0] fill_type = self._f['geometry/cells'][key]['fill_type'][...][0] if fill_type == 'normal': @@ -351,7 +351,7 @@ class Summary(object): lattice_id = int(key.lstrip('lattice ')) index = self._f['geometry/lattices'][key]['index'][0] - name = self._f['geometry/lattices'][key]['label'][0] + name = self._f['geometry/lattices'][key]['name'][0] lattice_type = self._f['geometry/lattices'][key]['type'][...][0] if lattice_type == 'rectangular': diff --git a/src/utils/openmc/surface.py b/src/utils/openmc/surface.py index f6067a5fd..0e958b456 100644 --- a/src/utils/openmc/surface.py +++ b/src/utils/openmc/surface.py @@ -135,7 +135,7 @@ class Surface(object): element.set("id", str(self._id)) if len(self._name) > 0: - element.set("label", str(self._name)) + element.set("name", str(self._name)) element.set("type", self._type) element.set("boundary", self._boundary_type) diff --git a/src/utils/openmc/tallies.py b/src/utils/openmc/tallies.py index 810611b26..b8699dad0 100644 --- a/src/utils/openmc/tallies.py +++ b/src/utils/openmc/tallies.py @@ -584,11 +584,11 @@ class Mesh(object): class Tally(object): - def __init__(self, tally_id=None, label=''): + def __init__(self, tally_id=None, name=''): # Initialize Tally class attributes self.id = tally_id - self.label = label + self.name = name self._filters = [] self._nuclides = [] self._scores = [] @@ -612,7 +612,7 @@ class Tally(object): clone = type(self).__new__(type(self)) clone._id = self._id - clone._label = self._label + clone._name = self._name clone._estimator = self._estimator clone._num_score_bins = self._num_score_bins clone._num_realizations = self._num_realizations @@ -678,7 +678,7 @@ class Tally(object): hashable.append(score) hashable.append(self._estimator) - hashable.append(self._label) + hashable.append(self._name) return hash(tuple(hashable)) @@ -699,8 +699,8 @@ class Tally(object): @property - def label(self): - return self._label + def name(self): + return self._name @property @@ -819,16 +819,16 @@ class Tally(object): self._id = tally_id - @label.setter - def label(self, label): + @name.setter + def name(self, name): - if not is_string(label): + if not is_string(name): msg = 'Unable to set name for Tally ID={0} with a non-string ' \ - 'value {1}'.format(self._id, label) + 'value {1}'.format(self._id, name) raise ValueError(msg) else: - self._label = label + self._name = name def add_filter(self, filter): @@ -945,7 +945,7 @@ class Tally(object): string = 'Tally\n' string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) - string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._label) + string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) string += '{0: <16}\n'.format('\tFilters') @@ -976,9 +976,9 @@ class Tally(object): # Tally ID element.set("id", str(self._id)) - # Optional Tally label - if self._label != '': - element.set("label", self._label) + # Optional Tally name + if self._name != '': + element.set("name", self._name) # Optional Tally filters for filter in self._filters: @@ -1220,7 +1220,7 @@ class Tally(object): # Add basic Tally data to the HDF5 group tally_group.create_dataset('id', data=self._id) - tally_group.create_dataset('label', data=self._label) + tally_group.create_dataset('name', data=self._name) tally_group.create_dataset('estimator', data=self._estimator) tally_group.create_dataset('scores', data=np.array(self._scores)) @@ -1268,7 +1268,7 @@ class Tally(object): # Add basic Tally data to the nested dictionary tally_group['id'] = self._id - tally_group['label'] = self._label + tally_group['name'] = self._name tally_group['estimator'] = self._estimator tally_group['scores'] = np.array(self._scores) diff --git a/src/utils/openmc/universe.py b/src/utils/openmc/universe.py index 963510c38..ee05e5356 100644 --- a/src/utils/openmc/universe.py +++ b/src/utils/openmc/universe.py @@ -346,7 +346,7 @@ class Cell(object): element.set("id", str(self._id)) if len(self._name) > 0: - element.set("label", str(self._name)) + element.set("name", str(self._name)) if isinstance(self._fill, openmc.Material): element.set("material", str(self._fill._id)) @@ -991,7 +991,7 @@ class RectLattice(Lattice): lattice_subelement.set("id", str(self._id)) if len(self._name) > 0: - lattice_subelement.set("label", str(self._name)) + lattice_subelement.set("name", str(self._name)) # Export the Lattice cell pitch if len(self._pitch) == 3: @@ -1320,7 +1320,7 @@ class HexLattice(Lattice): lattice_subelement.set("id", str(self._id)) if len(self._name) > 0: - lattice_subelement.set("label", str(self._name)) + lattice_subelement.set("name", str(self._name)) # Export the Lattice cell pitch if len(self._pitch) == 2: diff --git a/tests/test_cmfd_feed/results.py b/tests/test_cmfd_feed/results.py index b55ef8131..b0471a302 100644 --- a/tests/test_cmfd_feed/results.py +++ b/tests/test_cmfd_feed/results.py @@ -23,11 +23,11 @@ results1[0::2] = tally1._sum.ravel() results1[1::2] = tally1._sum_sq.ravel() for tally_id in sp._tallies: - if 'CMFD flux, total, scatter-1' in sp._tallies[tally_id]._label: + if 'CMFD flux, total, scatter-1' in sp._tallies[tally_id]._name: tally2 = sp._tallies[tally_id] - elif 'CMFD neutron production' in sp._tallies[tally_id]._label: + elif 'CMFD neutron production' in sp._tallies[tally_id]._name: tally3 = sp._tallies[tally_id] - elif 'CMFD surface currents' in sp._tallies[tally_id]._label: + elif 'CMFD surface currents' in sp._tallies[tally_id]._name: tally4 = sp._tallies[tally_id] results2 = np.zeros((tally2._sum.size + tally2._sum.size, )) diff --git a/tests/test_cmfd_jfnk/results.py b/tests/test_cmfd_jfnk/results.py index b55ef8131..b0471a302 100644 --- a/tests/test_cmfd_jfnk/results.py +++ b/tests/test_cmfd_jfnk/results.py @@ -23,11 +23,11 @@ results1[0::2] = tally1._sum.ravel() results1[1::2] = tally1._sum_sq.ravel() for tally_id in sp._tallies: - if 'CMFD flux, total, scatter-1' in sp._tallies[tally_id]._label: + if 'CMFD flux, total, scatter-1' in sp._tallies[tally_id]._name: tally2 = sp._tallies[tally_id] - elif 'CMFD neutron production' in sp._tallies[tally_id]._label: + elif 'CMFD neutron production' in sp._tallies[tally_id]._name: tally3 = sp._tallies[tally_id] - elif 'CMFD surface currents' in sp._tallies[tally_id]._label: + elif 'CMFD surface currents' in sp._tallies[tally_id]._name: tally4 = sp._tallies[tally_id] results2 = np.zeros((tally2._sum.size + tally2._sum.size, )) diff --git a/tests/test_cmfd_nofeed/results.py b/tests/test_cmfd_nofeed/results.py index b55ef8131..b0471a302 100644 --- a/tests/test_cmfd_nofeed/results.py +++ b/tests/test_cmfd_nofeed/results.py @@ -23,11 +23,11 @@ results1[0::2] = tally1._sum.ravel() results1[1::2] = tally1._sum_sq.ravel() for tally_id in sp._tallies: - if 'CMFD flux, total, scatter-1' in sp._tallies[tally_id]._label: + if 'CMFD flux, total, scatter-1' in sp._tallies[tally_id]._name: tally2 = sp._tallies[tally_id] - elif 'CMFD neutron production' in sp._tallies[tally_id]._label: + elif 'CMFD neutron production' in sp._tallies[tally_id]._name: tally3 = sp._tallies[tally_id] - elif 'CMFD surface currents' in sp._tallies[tally_id]._label: + elif 'CMFD surface currents' in sp._tallies[tally_id]._name: tally4 = sp._tallies[tally_id] results2 = np.zeros((tally2._sum.size + tally2._sum.size, )) From a3bbc00c9387da8d7f203cb69f4857292d4b9ceb Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 27 Apr 2015 08:24:17 -0400 Subject: [PATCH 08/12] Added keyword name setter to HexLattice constructor in summary API --- src/utils/openmc/summary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/openmc/summary.py b/src/utils/openmc/summary.py index d55b843a4..471cbaf90 100644 --- a/src/utils/openmc/summary.py +++ b/src/utils/openmc/summary.py @@ -408,7 +408,7 @@ class Summary(object): self._f['geometry/lattices'][key]['universes'][...] # Create the Lattice - lattice = openmc.HexLattice(lattice_id=lattice_id, name) + lattice = openmc.HexLattice(lattice_id=lattice_id, name=name) lattice.num_rings = n_rings lattice.num_axial = n_axial lattice.center = center From ef9e51a2c03e701f5269bc39fa7f94c948b56cea Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 29 Apr 2015 23:05:18 -0400 Subject: [PATCH 09/12] Moved tally names from statepoint to summary files --- src/hdf5_summary.F90 | 8 ++++ src/state_point.F90 | 14 ------- src/utils/openmc/statepoint.py | 17 ++------ src/utils/openmc/summary.py | 72 +++++++++++++++++++++++++++++++++- 4 files changed, 82 insertions(+), 29 deletions(-) diff --git a/src/hdf5_summary.F90 b/src/hdf5_summary.F90 index c9e468b62..4b203501b 100644 --- a/src/hdf5_summary.F90 +++ b/src/hdf5_summary.F90 @@ -547,6 +547,14 @@ contains ! Get pointer to tally t => tallies(i) + ! Write the name for this tally + call su % write_data(len(t % name), "name_size", & + group="tallies/tally " // trim(to_str(t % id))) + if (len(t % name) > 0) then + call su % write_data(t % name, "name", & + group="tallies/tally " // trim(to_str(t % id))) + endif + ! Write size of each tally call su % write_data(t % total_score_bins, "total_score_bins", & group="tallies/tally " // trim(to_str(t % id))) diff --git a/src/state_point.F90 b/src/state_point.F90 index 48e26e129..08c1d76fa 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -236,13 +236,6 @@ contains ! Get pointer to tally tally => tallies(i) - call sp % write_data(len(tally % name), "name_size", & - group="tallies/tally " // trim(to_str(tally % id))) - if (len(tally % name) > 0) then - call sp % write_data(tally % name, "name", & - group="tallies/tally " // trim(to_str(tally % id))) - endif - call sp % write_data(tally % estimator, "estimator", & group="tallies/tally " // trim(to_str(tally % id))) call sp % write_data(tally % n_realizations, "n_realizations", & @@ -826,13 +819,6 @@ contains tally => tallies(i) curr_key = key_array(id_array(i)) - call sp % read_data(j, "name_size", group="tallies/tally " // & - trim(to_str(curr_key))) - if (j > 0) then - call sp % read_data(name, "name", group="tallies/tally " // & - trim(to_str(curr_key))) - end if - call sp % read_data(tally % estimator, "estimator", & group="tallies/tally " // trim(to_str(curr_key))) call sp % read_data(tally % n_realizations, "n_realizations", & diff --git a/src/utils/openmc/statepoint.py b/src/utils/openmc/statepoint.py index f5758d03d..cabce521f 100644 --- a/src/utils/openmc/statepoint.py +++ b/src/utils/openmc/statepoint.py @@ -298,18 +298,6 @@ class StatePoint(object): # Iterate over all Tallies for tally_key in self._tally_keys: - # Read user-specified Tally name (if specified) - name_size = self._get_int( - path='{0}{1}/name_size'.format(base, tally_key))[0] - - if name_size > 0: - name = self._get_string( - name_size, path='{0}{1}/name'.format(base, tally_key)) - - # Remove leading and trailing characters from string name - name = name.lstrip('[\'') - name = name.rstrip('\']') - # Read integer Tally estimator type code (analog or tracklength) estimator_type = self._get_int( path='{0}{1}/estimator'.format(base, tally_key))[0] @@ -319,7 +307,7 @@ class StatePoint(object): path='{0}{1}/n_realizations'.format(base, tally_key))[0] # Create Tally object and assign basic properties - tally = openmc.Tally(tally_key, name) + tally = openmc.Tally(tally_key) tally.estimator = ESTIMATOR_TYPES[estimator_type] tally.num_realizations = n_realizations @@ -674,6 +662,9 @@ class StatePoint(object): for tally_id, tally in self._tallies.items(): + # Get the Tally name from the summary file + tally.name = summary.tallies[tally_id].name + nuclide_zaids = copy.deepcopy(tally._nuclides) for nuclide_zaid in nuclide_zaids: diff --git a/src/utils/openmc/summary.py b/src/utils/openmc/summary.py index 471cbaf90..8aa25ad90 100644 --- a/src/utils/openmc/summary.py +++ b/src/utils/openmc/summary.py @@ -26,6 +26,7 @@ class Summary(object): self._read_metadata() self._read_geometry() + self._read_tallies() def _read_metadata(self): @@ -398,8 +399,8 @@ class Summary(object): self.lattices[index] = lattice if lattice_type == 'hexagonal': - n_rings = self._f['geometry/latties'][key]['n_rings'][0] - n_axial = self._f['geometry/latties'][key]['n_axial'][0] + n_rings = self._f['geometry/lattices'][key]['n_rings'][0] + n_axial = self._f['geometry/lattices'][key]['n_axial'][0] center = self._f['geometry/lattices'][key]['center'][...] pitch = self._f['geometry/lattices'][key]['pitch'][...] outer = self._f['geometry/lattices'][key]['outer'][0] @@ -464,6 +465,73 @@ class Summary(object): self.openmc_geometry.root_universe = root_universe + def _read_tallies(self): + + # Initialize dictionaries for the Tallies + # Keys - Tally IDs + # Values - Tally objects + self.tallies = {} + + # Read the number of tallies + self.n_tallies = self._f['tallies/n_tallies'][0] + + # OpenMC Tally keys + all_keys = self._f['tallies/'].keys() + tally_keys = [key for key in all_keys if 'tally' in key] + + base = 'tallies/tally ' + + # Iterate over all Tallies + for tally_key in tally_keys: + + tally_id = int(tally_key.strip('tally ')) + subbase = '{0}{1}'.format(base, tally_id) + + # Read Tally name metadata + name_size = self._f['{0}/name_size'.format(subbase)][0] + if (name_size > 0): + tally_name = self._f['{0}/name'.format(subbase)][0] + tally_name = tally_name.lstrip('[\'') + tally_name = tally_name.rstrip('\']') + else: + tally_name = '' + + # Create Tally object and assign basic properties + tally = openmc.Tally(tally_id, tally_name) + + # Read score metadata + score_bins = self._f['{0}/score_bins'.format(subbase)][...] + for score_bin in score_bins: + tally.add_score(openmc.SCORE_TYPES[score_bin]) + num_score_bins = self._f['{0}/n_score_bins'.format(subbase)][...] + tally.num_score_bins = num_score_bins + + # Read filter metadata + num_filters = self._f['{0}/n_filters'.format(subbase)][0] + + # Initialize all Filters + for j in range(1, num_filters+1): + + subsubbase = '{0}/filter {1}'.format(subbase, j) + + # Read filter type (e.g., "cell", "energy", etc.) + filter_type = self._f['{0}/type_name'.format(subsubbase)][0] + + # Read the filter bins + num_bins = self._f['{0}/n_bins'.format(subsubbase)][0] + bins = self._f['{0}/bins'.format(subsubbase)][...] + + # Create Filter object + filter = openmc.Filter(filter_type, bins) + filter.num_bins = num_bins + + # Add Filter to the Tally + tally.add_filter(filter) + + # Add Tally to the global dictionary of all Tallies + self.tallies[tally_id] = tally + + def make_opencg_geometry(self): if self.opencg_geometry is None: self.opencg_geometry = get_opencg_geometry(self.openmc_geometry) From 26927ae692367c726b134bb49e5997003488b77a Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 29 Apr 2015 23:32:34 -0400 Subject: [PATCH 10/12] Updated CMFD tests to use StatePoint.get_tally(...) routine --- src/utils/openmc/statepoint.py | 2 +- tests/test_cmfd_feed/results.py | 45 ++++++++++++++++--------------- tests/test_cmfd_jfnk/results.py | 43 +++++++++++++++-------------- tests/test_cmfd_nofeed/results.py | 43 +++++++++++++++-------------- 4 files changed, 71 insertions(+), 62 deletions(-) diff --git a/src/utils/openmc/statepoint.py b/src/utils/openmc/statepoint.py index cabce521f..bfa69b828 100644 --- a/src/utils/openmc/statepoint.py +++ b/src/utils/openmc/statepoint.py @@ -597,7 +597,7 @@ class StatePoint(object): if not score in test_tally._scores: continue - # Determine if queried Tally filters is the same length as this Tally + # Determine if queried Tally filters is same length as this Tally if len(filters) != len(test_tally._filters): continue diff --git a/tests/test_cmfd_feed/results.py b/tests/test_cmfd_feed/results.py index b0471a302..a21aaf126 100644 --- a/tests/test_cmfd_feed/results.py +++ b/tests/test_cmfd_feed/results.py @@ -3,6 +3,8 @@ import sys import numpy as np +import openmc + sys.path.insert(0, '../../src/utils') # import statepoint @@ -17,37 +19,38 @@ else: sp.read_results() # extract tally results and convert to vector -tally1 = sp._tallies[1] -results1 = np.zeros((tally1._sum.size + tally1._sum.size, )) -results1[0::2] = tally1._sum.ravel() -results1[1::2] = tally1._sum_sq.ravel() +tally1 = sp.get_tally('flux', [openmc.Filter('mesh', [1])], \ + [-1], estimator='tracklength') +tally2 = sp.get_tally('flux', [openmc.Filter('mesh', [2])], \ + [-1], estimator='analog') +tally3 = sp.get_tally('nu-fission', [openmc.Filter('mesh', [2])], \ + [-1], estimator='analog') +tally4 = sp.get_tally('current', [openmc.Filter('mesh', [2]), \ + openmc.Filter('surface', [1,2,3,4,5,6])], \ + [-1], estimator='analog') -for tally_id in sp._tallies: - if 'CMFD flux, total, scatter-1' in sp._tallies[tally_id]._name: - tally2 = sp._tallies[tally_id] - elif 'CMFD neutron production' in sp._tallies[tally_id]._name: - tally3 = sp._tallies[tally_id] - elif 'CMFD surface currents' in sp._tallies[tally_id]._name: - tally4 = sp._tallies[tally_id] +results1 = np.zeros((tally1.sum.size + tally1.sum.size, )) +results1[0::2] = tally1.sum.ravel() +results1[1::2] = tally1.sum_sq.ravel() -results2 = np.zeros((tally2._sum.size + tally2._sum.size, )) -results2[0::2] = tally2._sum.ravel() -results2[1::2] = tally2._sum_sq.ravel() +results2 = np.zeros((tally2.sum.size + tally2.sum.size, )) +results2[0::2] = tally2.sum.ravel() +results2[1::2] = tally2.sum_sq.ravel() -results3 = np.zeros((tally3._sum.size + tally3._sum.size, )) -results3[0::2] = tally3._sum.ravel() -results3[1::2] = tally3._sum_sq.ravel() +results3 = np.zeros((tally3.sum.size + tally3.sum.size, )) +results3[0::2] = tally3.sum.ravel() +results3[1::2] = tally3.sum_sq.ravel() -results4 = np.zeros((tally4._sum.size + tally4._sum.size, )) -results4[0::2] = tally4._sum.ravel() -results4[1::2] = tally4._sum_sq.ravel() +results4 = np.zeros((tally4.sum.size + tally4.sum.size, )) +results4[0::2] = tally4.sum.ravel() +results4[1::2] = tally4.sum_sq.ravel() # set up output string outstr = '' # write out k-combined outstr += 'k-combined:\n' -outstr += "{0:12.6E} {1:12.6E}\n".format(sp._k_combined[0], sp._k_combined[1]) +outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1]) # write out tally results outstr += 'tally 1:\n' diff --git a/tests/test_cmfd_jfnk/results.py b/tests/test_cmfd_jfnk/results.py index b0471a302..861cc63da 100644 --- a/tests/test_cmfd_jfnk/results.py +++ b/tests/test_cmfd_jfnk/results.py @@ -3,6 +3,8 @@ import sys import numpy as np +import openmc + sys.path.insert(0, '../../src/utils') # import statepoint @@ -17,30 +19,31 @@ else: sp.read_results() # extract tally results and convert to vector -tally1 = sp._tallies[1] -results1 = np.zeros((tally1._sum.size + tally1._sum.size, )) -results1[0::2] = tally1._sum.ravel() -results1[1::2] = tally1._sum_sq.ravel() +tally1 = sp.get_tally('flux', [openmc.Filter('mesh', [1])], \ + [-1], estimator='tracklength') +tally2 = sp.get_tally('flux', [openmc.Filter('mesh', [2])], \ + [-1], estimator='analog') +tally3 = sp.get_tally('nu-fission', [openmc.Filter('mesh', [2])], \ + [-1], estimator='analog') +tally4 = sp.get_tally('current', [openmc.Filter('mesh', [2]), \ + openmc.Filter('surface', [1,2,3,4,5,6])], \ + [-1], estimator='analog') -for tally_id in sp._tallies: - if 'CMFD flux, total, scatter-1' in sp._tallies[tally_id]._name: - tally2 = sp._tallies[tally_id] - elif 'CMFD neutron production' in sp._tallies[tally_id]._name: - tally3 = sp._tallies[tally_id] - elif 'CMFD surface currents' in sp._tallies[tally_id]._name: - tally4 = sp._tallies[tally_id] +results1 = np.zeros((tally1.sum.size + tally1.sum.size, )) +results1[0::2] = tally1.sum.ravel() +results1[1::2] = tally1.sum_sq.ravel() -results2 = np.zeros((tally2._sum.size + tally2._sum.size, )) -results2[0::2] = tally2._sum.ravel() -results2[1::2] = tally2._sum_sq.ravel() +results2 = np.zeros((tally2.sum.size + tally2.sum.size, )) +results2[0::2] = tally2.sum.ravel() +results2[1::2] = tally2.sum_sq.ravel() -results3 = np.zeros((tally3._sum.size + tally3._sum.size, )) -results3[0::2] = tally3._sum.ravel() -results3[1::2] = tally3._sum_sq.ravel() +results3 = np.zeros((tally3.sum.size + tally3.sum.size, )) +results3[0::2] = tally3.sum.ravel() +results3[1::2] = tally3.sum_sq.ravel() -results4 = np.zeros((tally4._sum.size + tally4._sum.size, )) -results4[0::2] = tally4._sum.ravel() -results4[1::2] = tally4._sum_sq.ravel() +results4 = np.zeros((tally4.sum.size + tally4.sum.size, )) +results4[0::2] = tally4.sum.ravel() +results4[1::2] = tally4.sum_sq.ravel() # set up output string outstr = '' diff --git a/tests/test_cmfd_nofeed/results.py b/tests/test_cmfd_nofeed/results.py index b0471a302..861cc63da 100644 --- a/tests/test_cmfd_nofeed/results.py +++ b/tests/test_cmfd_nofeed/results.py @@ -3,6 +3,8 @@ import sys import numpy as np +import openmc + sys.path.insert(0, '../../src/utils') # import statepoint @@ -17,30 +19,31 @@ else: sp.read_results() # extract tally results and convert to vector -tally1 = sp._tallies[1] -results1 = np.zeros((tally1._sum.size + tally1._sum.size, )) -results1[0::2] = tally1._sum.ravel() -results1[1::2] = tally1._sum_sq.ravel() +tally1 = sp.get_tally('flux', [openmc.Filter('mesh', [1])], \ + [-1], estimator='tracklength') +tally2 = sp.get_tally('flux', [openmc.Filter('mesh', [2])], \ + [-1], estimator='analog') +tally3 = sp.get_tally('nu-fission', [openmc.Filter('mesh', [2])], \ + [-1], estimator='analog') +tally4 = sp.get_tally('current', [openmc.Filter('mesh', [2]), \ + openmc.Filter('surface', [1,2,3,4,5,6])], \ + [-1], estimator='analog') -for tally_id in sp._tallies: - if 'CMFD flux, total, scatter-1' in sp._tallies[tally_id]._name: - tally2 = sp._tallies[tally_id] - elif 'CMFD neutron production' in sp._tallies[tally_id]._name: - tally3 = sp._tallies[tally_id] - elif 'CMFD surface currents' in sp._tallies[tally_id]._name: - tally4 = sp._tallies[tally_id] +results1 = np.zeros((tally1.sum.size + tally1.sum.size, )) +results1[0::2] = tally1.sum.ravel() +results1[1::2] = tally1.sum_sq.ravel() -results2 = np.zeros((tally2._sum.size + tally2._sum.size, )) -results2[0::2] = tally2._sum.ravel() -results2[1::2] = tally2._sum_sq.ravel() +results2 = np.zeros((tally2.sum.size + tally2.sum.size, )) +results2[0::2] = tally2.sum.ravel() +results2[1::2] = tally2.sum_sq.ravel() -results3 = np.zeros((tally3._sum.size + tally3._sum.size, )) -results3[0::2] = tally3._sum.ravel() -results3[1::2] = tally3._sum_sq.ravel() +results3 = np.zeros((tally3.sum.size + tally3.sum.size, )) +results3[0::2] = tally3.sum.ravel() +results3[1::2] = tally3.sum_sq.ravel() -results4 = np.zeros((tally4._sum.size + tally4._sum.size, )) -results4[0::2] = tally4._sum.ravel() -results4[1::2] = tally4._sum_sq.ravel() +results4 = np.zeros((tally4.sum.size + tally4.sum.size, )) +results4[0::2] = tally4.sum.ravel() +results4[1::2] = tally4.sum_sq.ravel() # set up output string outstr = '' From 06be09e36f3a0c7813912edec1d73e46ff0d460b Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 30 Apr 2015 18:01:29 -0400 Subject: [PATCH 11/12] Fixed openmc import statement in CMFD tests --- tests/test_cmfd_feed/results.py | 3 +-- tests/test_cmfd_jfnk/results.py | 3 +-- tests/test_cmfd_nofeed/results.py | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/tests/test_cmfd_feed/results.py b/tests/test_cmfd_feed/results.py index a21aaf126..125d13a8e 100644 --- a/tests/test_cmfd_feed/results.py +++ b/tests/test_cmfd_feed/results.py @@ -3,11 +3,10 @@ import sys import numpy as np -import openmc - sys.path.insert(0, '../../src/utils') # import statepoint +import openmc from openmc.statepoint import StatePoint # read in statepoint file diff --git a/tests/test_cmfd_jfnk/results.py b/tests/test_cmfd_jfnk/results.py index 861cc63da..e104fbd9a 100644 --- a/tests/test_cmfd_jfnk/results.py +++ b/tests/test_cmfd_jfnk/results.py @@ -3,11 +3,10 @@ import sys import numpy as np -import openmc - sys.path.insert(0, '../../src/utils') # import statepoint +import openmc from openmc.statepoint import StatePoint # read in statepoint file diff --git a/tests/test_cmfd_nofeed/results.py b/tests/test_cmfd_nofeed/results.py index 861cc63da..e104fbd9a 100644 --- a/tests/test_cmfd_nofeed/results.py +++ b/tests/test_cmfd_nofeed/results.py @@ -3,11 +3,10 @@ import sys import numpy as np -import openmc - sys.path.insert(0, '../../src/utils') # import statepoint +import openmc from openmc.statepoint import StatePoint # read in statepoint file From d6228b2e1ab92f9e4f6a1704707de1033f75949f Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 30 Apr 2015 23:38:53 -0400 Subject: [PATCH 12/12] Removed empty string initializers for name and updated XML schema --- src/input_xml.F90 | 6 ----- src/relaxng/geometry.rnc | 8 ++++++ src/relaxng/geometry.rng | 56 +++++++++++++++++++++++++++++++++++++++ src/relaxng/materials.rnc | 2 ++ src/relaxng/tallies.rnc | 4 +-- src/relaxng/tallies.rng | 4 +-- 6 files changed, 70 insertions(+), 10 deletions(-) diff --git a/src/input_xml.F90 b/src/input_xml.F90 index b72b7c252..0d1b380b1 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -977,7 +977,6 @@ contains end if ! Copy cell name - c % name = '' if (check_for_node(node_cell, "name")) then call get_node_value(node_cell, "name", c % name) end if @@ -1162,7 +1161,6 @@ contains end if ! Copy surface name - s % name = '' if (check_for_node(node_surf, "name")) then call get_node_value(node_surf, "name", s % name) end if @@ -1290,7 +1288,6 @@ contains end if ! Copy lattice name - lat % name = '' if (check_for_node(node_lat, "name")) then call get_node_value(node_lat, "name", lat % name) end if @@ -1419,7 +1416,6 @@ contains end if ! Copy lattice name - lat % name = '' if (check_for_node(node_lat, "name")) then call get_node_value(node_lat, "name", lat % name) end if @@ -1670,7 +1666,6 @@ contains end if ! Copy material name - mat % name = '' if (check_for_node(node_mat, "name")) then call get_node_value(node_mat, "name", mat % name) end if @@ -2238,7 +2233,6 @@ contains end if ! Copy tally name - t % name = '' if (check_for_node(node_tal, "name")) & call get_node_value(node_tal, "name", t % name) diff --git a/src/relaxng/geometry.rnc b/src/relaxng/geometry.rnc index 801c902c9..cebbc5b6a 100644 --- a/src/relaxng/geometry.rnc +++ b/src/relaxng/geometry.rnc @@ -1,6 +1,8 @@ element geometry { element cell { (element id { xsd:int } | attribute id { xsd:int }) & + (element name { xsd:string { maxLength="52" } } | + attribute name { xsd:string { maxLength="52" } })? & (element universe { xsd:int } | attribute universe { xsd:int })? & ( (element fill { xsd:int } | attribute fill { xsd:int }) | @@ -14,6 +16,8 @@ element geometry { & element surface { (element id { xsd:int } | attribute id { xsd:int }) & + (element name { xsd:string { maxLength="52" } } | + attribute name { xsd:string { maxLength="52" } })? & (element type { xsd:string { maxLength = "15" } } | attribute type { xsd:string { maxLength = "15" } }) & (element coeffs { list { xsd:double+ } } | attribute coeffs { list { xsd:double+ } }) & @@ -23,6 +27,8 @@ element geometry { & element lattice { (element id { xsd:int } | attribute id { xsd:int }) & + (element name { xsd:string { maxLength="52" } } | + attribute name { xsd:string { maxLength="52" } })? & (element dimension { list { xsd:positiveInteger+ } } | attribute dimension { list { xsd:positiveInteger+ } }) & (element lower_left { list { xsd:double+ } } | attribute lower_left { list { xsd:double+ } }) & @@ -33,6 +39,8 @@ element geometry { & element hex_lattice { (element id { xsd:int } | attribute id { xsd:int }) & + (element name { xsd:string { maxLength="52" } } | + attribute name { xsd:string { maxLength="52" } })? & (element n_rings { xsd:int } | attribute n_rings { xsd:int }) & (element n_axial { xsd:int } | attribute n_axial { xsd:int })? & (element center { list { xsd:double+ } } | attribute center { list { xsd:double+ } }) & diff --git a/src/relaxng/geometry.rng b/src/relaxng/geometry.rng index 9ac3c9c59..fdbf74cbd 100644 --- a/src/relaxng/geometry.rng +++ b/src/relaxng/geometry.rng @@ -12,6 +12,20 @@ + + + + + 52 + + + + + 52 + + + + @@ -114,6 +128,20 @@ + + + + + 52 + + + + + 52 + + + + @@ -174,6 +202,20 @@ + + + + + 52 + + + + + 52 + + + + @@ -262,6 +304,20 @@ + + + + + 52 + + + + + 52 + + + + diff --git a/src/relaxng/materials.rnc b/src/relaxng/materials.rnc index d497fa745..ae8565497 100644 --- a/src/relaxng/materials.rnc +++ b/src/relaxng/materials.rnc @@ -1,6 +1,8 @@ element materials { element material { (element id { xsd:int } | attribute id { xsd:int }) & + (element name { xsd:string { maxLength="52" } } | + attribute name { xsd:string { maxLength="52" } })? & element density { (element value { xsd:double } | attribute value { xsd:double })? & diff --git a/src/relaxng/tallies.rnc b/src/relaxng/tallies.rnc index 09a5a6eb8..6911dab2f 100644 --- a/src/relaxng/tallies.rnc +++ b/src/relaxng/tallies.rnc @@ -17,8 +17,8 @@ element tallies { element tally { (element id { xsd:int } | attribute id { xsd:int }) & - (element label { xsd:string { maxLength="52" } } | - attribute label { xsd:string { maxLength="52" } })? & + (element name { xsd:string { maxLength="52" } } | + attribute name { xsd:string { maxLength="52" } })? & (element estimator { ( "analog" | "tracklength" ) } | attribute estimator { ( "analog" | "tracklength" ) })? & element filter { diff --git a/src/relaxng/tallies.rng b/src/relaxng/tallies.rng index 60263676b..a3668925a 100644 --- a/src/relaxng/tallies.rng +++ b/src/relaxng/tallies.rng @@ -108,12 +108,12 @@ - + 52 - + 52