From d3d1acc041e228b02355c7ae64d5cf9a99e18228 Mon Sep 17 00:00:00 2001 From: "Micah D. Gale" Date: Fri, 22 Nov 2024 10:54:35 -0600 Subject: [PATCH] Fixed various bugs with how default numbers are loaded. --- montepy/cell.py | 6 +++--- montepy/data_inputs/data_input.py | 14 +++++++++++--- montepy/data_inputs/material.py | 4 ++-- montepy/data_inputs/transform.py | 4 ++-- montepy/numbered_mcnp_object.py | 3 +++ montepy/surfaces/surface.py | 2 +- 6 files changed, 22 insertions(+), 11 deletions(-) diff --git a/montepy/cell.py b/montepy/cell.py index 283d1f1c..b2abb454 100644 --- a/montepy/cell.py +++ b/montepy/cell.py @@ -95,7 +95,7 @@ def __init__( self._complements = Cells() super().__init__(input, self._parser, number) if not input: - self._generate_default_tree() + self._generate_default_tree(number) self._old_number = copy.deepcopy(self._tree["cell_num"]) self._number = self._tree["cell_num"] mat_tree = self._tree["material"] @@ -574,7 +574,7 @@ def _update_values(self): for input_class, (attr, _) in self._INPUTS_TO_PROPERTY.items(): getattr(self, attr)._update_values() - def _generate_default_tree(self): + def _generate_default_tree(self, number: int = None): material = syntax_node.SyntaxNode( "material", { @@ -586,7 +586,7 @@ def _generate_default_tree(self): self._tree = syntax_node.SyntaxNode( "cell", { - "cell_num": self._generate_default_node(int, None), + "cell_num": self._generate_default_node(int, number), "material": material, "geometry": None, "parameters": syntax_node.ParametersNode(), diff --git a/montepy/data_inputs/data_input.py b/montepy/data_inputs/data_input.py index fbd04d27..9d30641e 100644 --- a/montepy/data_inputs/data_input.py +++ b/montepy/data_inputs/data_input.py @@ -65,10 +65,18 @@ def __init__( if input: self.__split_name(input) else: - input = copy.copy(input) - input.__class__ = _ClassifierInput + if input: + if isinstance(input, str): + input = _ClassifierInput( + input.split("\n"), + montepy.input_parser.block_type.BlockType.DATA, + ) + else: + input = copy.copy(input) + input.__class__ = _ClassifierInput super().__init__(input, self._classifier_parser) - self.__split_name(input) + if input: + self.__split_name(input) @staticmethod @abstractmethod diff --git a/montepy/data_inputs/material.py b/montepy/data_inputs/material.py index 1fa8183b..b1736683 100644 --- a/montepy/data_inputs/material.py +++ b/montepy/data_inputs/material.py @@ -48,8 +48,8 @@ def __init__( self._material_components = {} self._thermal_scattering = None self._is_atom_fraction = True - self._number = self._generate_default_node(int, -1) - super().__init__(input, number) + super().__init__(input) + self._load_init_num(number) if input: num = self._input_number self._old_number = copy.deepcopy(num) diff --git a/montepy/data_inputs/transform.py b/montepy/data_inputs/transform.py index 349f7c09..d8b9bb74 100644 --- a/montepy/data_inputs/transform.py +++ b/montepy/data_inputs/transform.py @@ -34,13 +34,13 @@ def __init__( number: int = None, ): self._pass_through = pass_through - self._number = self._generate_default_node(int, -1) self._old_number = self._generate_default_node(int, -1) self._displacement_vector = np.array([]) self._rotation_matrix = np.array([]) self._is_in_degrees = False self._is_main_to_aux = True - super().__init__(input, number) + super().__init__(input) + self._load_init_num(number) if input: words = self._tree["data"] i = 0 diff --git a/montepy/numbered_mcnp_object.py b/montepy/numbered_mcnp_object.py index 6f465b16..d9aa9a4a 100644 --- a/montepy/numbered_mcnp_object.py +++ b/montepy/numbered_mcnp_object.py @@ -57,6 +57,9 @@ def __init__( ): self._number = self._generate_default_node(int, -1) super().__init__(input, parser) + self._load_init_num(number) + + def _load_init_num(self, number): if number is not None: if not isinstance(number, int): raise TypeError( diff --git a/montepy/surfaces/surface.py b/montepy/surfaces/surface.py index 62a17dea..ff1bd3fb 100644 --- a/montepy/surfaces/surface.py +++ b/montepy/surfaces/surface.py @@ -37,6 +37,7 @@ def __init__( number: int = None, ): self._BLOCK_TYPE = montepy.input_parser.block_type.BlockType.SURFACE + self._number = self._generate_default_node(int, -1) super().__init__(input, self._parser, number) self._periodic_surface = None self._old_periodic_surface = self._generate_default_node(int, None) @@ -46,7 +47,6 @@ def __init__( self._is_white_boundary = False self._surface_constants = [] self._surface_type = self._generate_default_node(str, None) - self._number = self._generate_default_node(int, -1) self._modifier = self._generate_default_node(str, None) # surface number if input: