power-grid-model-ds 1.4.2__tar.gz → 1.4.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/PKG-INFO +1 -1
  2. power_grid_model_ds-1.4.3/PYPI_VERSION +1 -0
  3. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/fancypy.py +7 -5
  4. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/arrays/base/array.py +1 -1
  5. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/arrays/pgm_arrays.py +21 -1
  6. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/graphs/models/base.py +2 -5
  7. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/parsers.py +6 -7
  8. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds.egg-info/PKG-INFO +1 -1
  9. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds.egg-info/SOURCES.txt +0 -1
  10. power_grid_model_ds-1.4.2/PYPI_VERSION +0 -1
  11. power_grid_model_ds-1.4.2/src/power_grid_model_ds/_core/model/utils.py +0 -22
  12. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/LICENSE +0 -0
  13. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/README.md +0 -0
  14. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/pyproject.toml +0 -0
  15. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/setup.cfg +0 -0
  16. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/setup.py +0 -0
  17. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/__init__.py +0 -0
  18. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/__init__.py +0 -0
  19. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/data_source/__init__.py +0 -0
  20. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/data_source/generator/__init__.py +0 -0
  21. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/data_source/generator/arrays/__init__.py +0 -0
  22. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/data_source/generator/arrays/base.py +0 -0
  23. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/data_source/generator/arrays/line.py +0 -0
  24. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/data_source/generator/arrays/node.py +0 -0
  25. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/data_source/generator/arrays/source.py +0 -0
  26. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/data_source/generator/arrays/transformer.py +0 -0
  27. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/data_source/generator/grid_generators.py +0 -0
  28. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/load_flow.py +0 -0
  29. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/__init__.py +0 -0
  30. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/arrays/__init__.py +0 -0
  31. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/arrays/base/__init__.py +0 -0
  32. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/arrays/base/_build.py +0 -0
  33. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/arrays/base/_filters.py +0 -0
  34. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/arrays/base/_modify.py +0 -0
  35. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/arrays/base/_optional.py +0 -0
  36. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/arrays/base/_string.py +0 -0
  37. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/arrays/base/errors.py +0 -0
  38. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/constants.py +0 -0
  39. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/containers/__init__.py +0 -0
  40. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/containers/base.py +0 -0
  41. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/dtypes/__init__.py +0 -0
  42. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/dtypes/appliances.py +0 -0
  43. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/dtypes/branches.py +0 -0
  44. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/dtypes/id.py +0 -0
  45. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/dtypes/nodes.py +0 -0
  46. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/dtypes/regulators.py +0 -0
  47. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/dtypes/sensors.py +0 -0
  48. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/enums/__init__.py +0 -0
  49. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/enums/nodes.py +0 -0
  50. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/graphs/__init__.py +0 -0
  51. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/graphs/container.py +0 -0
  52. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/graphs/errors.py +0 -0
  53. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/graphs/models/__init__.py +0 -0
  54. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/graphs/models/_rustworkx_search.py +0 -0
  55. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/graphs/models/rustworkx.py +0 -0
  56. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/grids/__init__.py +0 -0
  57. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/grids/_text_sources.py +0 -0
  58. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/grids/base.py +0 -0
  59. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/model/grids/helpers.py +0 -0
  60. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/utils/__init__.py +0 -0
  61. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/utils/misc.py +0 -0
  62. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/utils/pickle.py +0 -0
  63. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/utils/zip.py +0 -0
  64. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/__init__.py +0 -0
  65. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/app.py +0 -0
  66. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/callbacks/__init__.py +0 -0
  67. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/callbacks/element_scaling.py +0 -0
  68. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/callbacks/element_selection.py +0 -0
  69. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/callbacks/layout_dropdown.py +0 -0
  70. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/callbacks/search_form.py +0 -0
  71. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/layout/__init__.py +0 -0
  72. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/layout/colors.py +0 -0
  73. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/layout/cytoscape_config.py +0 -0
  74. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/layout/cytoscape_html.py +0 -0
  75. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/layout/cytoscape_styling.py +0 -0
  76. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/layout/header.py +0 -0
  77. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/layout/legenda.py +0 -0
  78. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/layout/search_form.py +0 -0
  79. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/_core/visualizer/layout/selection_output.py +0 -0
  80. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/arrays.py +0 -0
  81. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/constants.py +0 -0
  82. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/enums.py +0 -0
  83. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/errors.py +0 -0
  84. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/fancypy.py +0 -0
  85. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/generators.py +0 -0
  86. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/graph_models.py +0 -0
  87. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds/visualizer.py +0 -0
  88. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds.egg-info/dependency_links.txt +0 -0
  89. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds.egg-info/requires.txt +0 -0
  90. {power_grid_model_ds-1.4.2 → power_grid_model_ds-1.4.3}/src/power_grid_model_ds.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: power-grid-model-ds
3
- Version: 1.4.2
3
+ Version: 1.4.3
4
4
  Summary: Power Grid Model extension which provides a grid data structure for simulation and analysis
5
5
  Author-email: Contributors to the Power Grid Model project <powergridmodel@lfenergy.org>
6
6
  License: MPL-2.0
@@ -0,0 +1 @@
1
+ 1.4.3
@@ -4,7 +4,7 @@
4
4
 
5
5
  """A set of helper functions that mimic numpy functions but are specifically designed for FancyArrays."""
6
6
 
7
- from typing import TYPE_CHECKING, Union
7
+ from typing import TYPE_CHECKING, TypeVar, Union
8
8
 
9
9
  import numpy as np
10
10
 
@@ -13,8 +13,10 @@ from power_grid_model_ds._core.utils.misc import array_equal_with_nan
13
13
  if TYPE_CHECKING:
14
14
  from power_grid_model_ds._core.model.arrays.base.array import FancyArray
15
15
 
16
+ T = TypeVar("T", bound="FancyArray")
16
17
 
17
- def concatenate(fancy_array: "FancyArray", *other_arrays: Union["FancyArray", np.ndarray]) -> "FancyArray":
18
+
19
+ def concatenate(fancy_array: T, *other_arrays: Union[T, np.ndarray]) -> T:
18
20
  """Concatenate arrays."""
19
21
  np_arrays = [array if isinstance(array, np.ndarray) else array.data for array in other_arrays]
20
22
  try:
@@ -24,7 +26,7 @@ def concatenate(fancy_array: "FancyArray", *other_arrays: Union["FancyArray", np
24
26
  return fancy_array.__class__(data=concatenated)
25
27
 
26
28
 
27
- def unique(array: "FancyArray", **kwargs):
29
+ def unique(array: T, **kwargs):
28
30
  """Return the unique elements of the array."""
29
31
  for column in array.columns:
30
32
  if np.issubdtype(array.dtype[column], np.floating) and np.isnan(array[column]).any():
@@ -37,13 +39,13 @@ def unique(array: "FancyArray", **kwargs):
37
39
  return array.__class__(data=unique_data)
38
40
 
39
41
 
40
- def sort(array: "FancyArray", axis=-1, kind=None, order=None) -> "FancyArray":
42
+ def sort(array: T, axis=-1, kind=None, order=None) -> T:
41
43
  """Sort the array in-place and return sorted array."""
42
44
  array.data.sort(axis=axis, kind=kind, order=order)
43
45
  return array
44
46
 
45
47
 
46
- def array_equal(array1: "FancyArray", array2: "FancyArray", equal_nan: bool = True) -> bool:
48
+ def array_equal(array1: T, array2: T, equal_nan: bool = True) -> bool:
47
49
  """Return True if two arrays are equal."""
48
50
  if equal_nan:
49
51
  return array_equal_with_nan(array1.data, array2.data)
@@ -66,7 +66,7 @@ class FancyArray(ABC):
66
66
  self._data = data
67
67
 
68
68
  @property
69
- def data(self: Self):
69
+ def data(self: Self) -> NDArray:
70
70
  return self._data
71
71
 
72
72
  @classmethod
@@ -9,6 +9,7 @@ from typing import Literal
9
9
  import numpy as np
10
10
  from numpy.typing import NDArray
11
11
 
12
+ from power_grid_model_ds._core.fancypy import concatenate
12
13
  from power_grid_model_ds._core.model.arrays.base.array import FancyArray
13
14
  from power_grid_model_ds._core.model.dtypes.appliances import Source, SymGen, SymLoad
14
15
  from power_grid_model_ds._core.model.dtypes.branches import (
@@ -99,7 +100,26 @@ class TransformerArray(Transformer, BranchArray):
99
100
 
100
101
 
101
102
  class Branch3Array(IdArray, Branch3):
102
- pass
103
+ def as_branches(self) -> BranchArray:
104
+ """Convert Branch3Array to BranchArray."""
105
+ branches_1_2 = BranchArray.empty(self.size)
106
+ branches_1_2.from_node = self.node_1
107
+ branches_1_2.to_node = self.node_2
108
+ branches_1_2.from_status = self.status_1
109
+ branches_1_2.to_status = self.status_2
110
+
111
+ branches_1_3 = BranchArray.empty(self.size)
112
+ branches_1_3.from_node = self.node_1
113
+ branches_1_3.to_node = self.node_3
114
+ branches_1_3.from_status = self.status_1
115
+ branches_1_3.to_status = self.status_3
116
+
117
+ branches_2_3 = BranchArray.empty(self.size)
118
+ branches_2_3.from_node = self.node_2
119
+ branches_2_3.to_node = self.node_3
120
+ branches_2_3.from_status = self.status_2
121
+ branches_2_3.to_status = self.status_3
122
+ return concatenate(branches_1_2, branches_1_3, branches_2_3)
103
123
 
104
124
 
105
125
  class ThreeWindingTransformerArray(Branch3Array, ThreeWindingTransformer):
@@ -15,7 +15,6 @@ from power_grid_model_ds._core.model.graphs.errors import (
15
15
  MissingNodeError,
16
16
  NoPathBetweenNodes,
17
17
  )
18
- from power_grid_model_ds._core.model.utils import _get_branch3_branches
19
18
 
20
19
  if TYPE_CHECKING:
21
20
  from power_grid_model_ds._core.model.grids.base import Grid
@@ -175,8 +174,7 @@ class BaseGraphModel(ABC):
175
174
  def add_branch3_array(self, branch3_array: Branch3Array) -> None:
176
175
  """Add all branch3s in the branch3 array to the graph."""
177
176
  for branch3 in branch3_array:
178
- branches = _get_branch3_branches(branch3)
179
- self.add_branch_array(branches)
177
+ self.add_branch_array(branch3.as_branches())
180
178
 
181
179
  def delete_branch_array(self, branch_array: BranchArray, raise_on_fail: bool = True) -> None:
182
180
  """Delete all branches in branch_array from the graph."""
@@ -187,8 +185,7 @@ class BaseGraphModel(ABC):
187
185
  def delete_branch3_array(self, branch3_array: Branch3Array, raise_on_fail: bool = True) -> None:
188
186
  """Delete all branch3s in the branch3 array from the graph."""
189
187
  for branch3 in branch3_array:
190
- branches = _get_branch3_branches(branch3)
191
- self.delete_branch_array(branches, raise_on_fail=raise_on_fail)
188
+ self.delete_branch_array(branch3.as_branches(), raise_on_fail=raise_on_fail)
192
189
 
193
190
  @contextmanager
194
191
  def tmp_remove_nodes(self, nodes: list[int]) -> Generator:
@@ -6,7 +6,6 @@ from typing import Any, Literal
6
6
 
7
7
  from power_grid_model_ds._core.model.arrays.base.array import FancyArray
8
8
  from power_grid_model_ds._core.model.grids.base import Grid
9
- from power_grid_model_ds._core.model.utils import _get_branch3_branches
10
9
  from power_grid_model_ds.arrays import Branch3Array, BranchArray, NodeArray
11
10
 
12
11
 
@@ -41,15 +40,15 @@ def parse_branch3_array(branches: Branch3Array, group: Literal["transformer"]) -
41
40
  """Parse the three-winding transformer array."""
42
41
  parsed_branches = []
43
42
  columns = branches.columns
44
- for branch in branches:
45
- for branch_ in _get_branch3_branches(branch):
46
- cyto_elements = {"data": _array_to_dict(branch_, columns)}
43
+ for branch3 in branches:
44
+ for branch1 in branch3.as_branches():
45
+ cyto_elements = {"data": _array_to_dict(branch1, columns)}
47
46
  cyto_elements["data"].update(
48
47
  {
49
48
  # IDs need to be unique, so we combine the branch ID with the from and to nodes
50
- "id": str(branch.id.item()) + f"_{branch_.from_node.item()}_{branch_.to_node.item()}",
51
- "source": str(branch_.from_node.item()),
52
- "target": str(branch_.to_node.item()),
49
+ "id": str(branch3.id.item()) + f"_{branch1.from_node.item()}_{branch1.to_node.item()}",
50
+ "source": str(branch1.from_node.item()),
51
+ "target": str(branch1.to_node.item()),
53
52
  "group": group,
54
53
  }
55
54
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: power-grid-model-ds
3
- Version: 1.4.2
3
+ Version: 1.4.3
4
4
  Summary: Power Grid Model extension which provides a grid data structure for simulation and analysis
5
5
  Author-email: Contributors to the Power Grid Model project <powergridmodel@lfenergy.org>
6
6
  License: MPL-2.0
@@ -31,7 +31,6 @@ src/power_grid_model_ds/_core/data_source/generator/arrays/source.py
31
31
  src/power_grid_model_ds/_core/data_source/generator/arrays/transformer.py
32
32
  src/power_grid_model_ds/_core/model/__init__.py
33
33
  src/power_grid_model_ds/_core/model/constants.py
34
- src/power_grid_model_ds/_core/model/utils.py
35
34
  src/power_grid_model_ds/_core/model/arrays/__init__.py
36
35
  src/power_grid_model_ds/_core/model/arrays/pgm_arrays.py
37
36
  src/power_grid_model_ds/_core/model/arrays/base/__init__.py
@@ -1 +0,0 @@
1
- 1.4.2
@@ -1,22 +0,0 @@
1
- # SPDX-FileCopyrightText: Contributors to the Power Grid Model project <powergridmodel@lfenergy.org>
2
- #
3
- # SPDX-License-Identifier: MPL-2.0
4
- from power_grid_model_ds._core.model.arrays.pgm_arrays import Branch3Array, BranchArray
5
-
6
-
7
- def _get_branch3_branches(branch3: Branch3Array) -> BranchArray:
8
- node_1 = branch3.node_1.item()
9
- node_2 = branch3.node_2.item()
10
- node_3 = branch3.node_3.item()
11
-
12
- status_1 = branch3.status_1.item()
13
- status_2 = branch3.status_2.item()
14
- status_3 = branch3.status_3.item()
15
-
16
- branches = BranchArray.zeros(3)
17
- branches.from_node = [node_1, node_1, node_2]
18
- branches.to_node = [node_2, node_3, node_3]
19
- branches.from_status = [status_1, status_1, status_2]
20
- branches.to_status = [status_2, status_3, status_3]
21
-
22
- return branches