Move all business logic code under template folder
[oam.git] / code / network-generator / model / python / o_ran_spiral_radius_profile.py
diff --git a/code/network-generator/model/python/o_ran_spiral_radius_profile.py b/code/network-generator/model/python/o_ran_spiral_radius_profile.py
deleted file mode 100644 (file)
index a47a486..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-# Copyright 2023 highstreet technologies GmbH
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#!/usr/bin/python
-
-from model.python.cube import Cube
-from model.python.hexagon import Hex
-import model.python.hexagon as Hexagon
-
-
-class SpiralRadiusProfile:
-    def __init__(self, data: [dict[str, dict] | None] = None):
-        self._oRanSmoSpiralRadiusOfNearRtRics = (
-            data.get("oRanSmoSpiralRadiusOfNearRtRics", 1) if data else 1
-        )
-        self._oRanNearRtRicSpiralRadiusOfOCus = (
-            data.get("oRanNearRtRicSpiralRadiusOfOCus", 1) if data else 1
-        )
-        self._oRanCuSpiralRadiusOfODus = (
-            data.get("oRanCuSpiralRadiusOfODus", 1) if data else 1
-        )
-        self._oRanDuSpiralRadiusOfTowers = (
-            data.get("oRanDuSpiralRadiusOfTowers", 1) if data else 1
-        )
-
-    @property
-    def id(self) -> str:
-        return f"{self._oRanDuSpiralRadiusOfTowers}{self._oRanCuSpiralRadiusOfODus}{self._oRanNearRtRicSpiralRadiusOfOCus}{self._oRanSmoSpiralRadiusOfNearRtRics}"
-
-    @property
-    def count(self) -> int:
-        towers = 1
-        dus = 1
-        cus = 1
-        rics = 1
-
-        for ru in range(self._oRanDuSpiralRadiusOfTowers + 1):
-            towers = towers + 6 * ru
-
-        for du in range(self._oRanCuSpiralRadiusOfODus + 1):
-            dus = dus + 6 * du
-
-        for cu in range(self._oRanNearRtRicSpiralRadiusOfOCus + 1):
-            cus = cus + 6 * cu
-
-        for ric in range(self._oRanSmoSpiralRadiusOfNearRtRics + 1):
-            rics = rics + 6 * ric
-
-        return towers * dus * cus * rics
-
-    @property
-    def oRanSmoSpiralRadiusOfNearRtRics(self) -> int:
-        return self._oRanSmoSpiralRadiusOfNearRtRics
-
-    @oRanSmoSpiralRadiusOfNearRtRics.setter
-    def oRanSmoSpiralRadiusOfNearRtRics(self, value: int):
-        self._oRanSmoSpiralRadiusOfNearRtRics = value
-
-    @property
-    def oRanNearRtRicSpiralRadiusOfOCus(self) -> int:
-        return self._oRanNearRtRicSpiralRadiusOfOCus
-
-    @oRanNearRtRicSpiralRadiusOfOCus.setter
-    def oRanNearRtRicSpiralRadiusOfOCus(self, value: int):
-        self._oRanNearRtRicSpiralRadiusOfOCus = value
-
-    @property
-    def oRanCuSpiralRadiusOfODus(self) -> int:
-        return self._oRanCuSpiralRadiusOfODus
-
-    @oRanCuSpiralRadiusOfODus.setter
-    def oRanCuSpiralRadiusOfODus(self, value: int):
-        self._oRanCuSpiralRadiusOfODus = value
-
-    @property
-    def oRanDuSpiralRadiusOfTowers(self) -> int:
-        return self._oRanDuSpiralRadiusOfTowers
-
-    @oRanDuSpiralRadiusOfTowers.setter
-    def oRanDuSpiralRadiusOfTowers(self, value: int):
-        self._oRanDuSpiralRadiusOfTowers = value
-
-    @property
-    def sectors(self) -> int:
-        return self._sectors
-
-    @sectors.setter
-    def sectors(self, value: int):
-        self._sectors = value
-
-    @property
-    def nrDuCellsPerSector(self) -> int:
-        return self._nrDuCellsPerSector
-
-    @nrDuCellsPerSector.setter
-    def nrDuCellsPerSector(self, value: int):
-        self._nrDuCellsPerSector: int = value
-
-    def oRanDuDirections(self) -> list[Hex]:
-        q: int = 2 * self._oRanDuSpiralRadiusOfTowers + 1
-        r: int = -self._oRanDuSpiralRadiusOfTowers - 1
-        s: int = -q - r
-        return [
-            Hex(q, r, s),
-            Hex(-s, -q, -r),
-            Hex(r, s, q),
-            Hex(-q, -r, -s),
-            Hex(s, q, r),
-            Hex(-r, -s, -q),
-        ]
-
-    def oRanDuNeighbor(self, cube: Cube, direction: int):
-        return Hexagon.hex_add(cube, self.oRanDuDirections()[direction])
-
-    def oRanDuRing(self, center: Hex, radius: int) -> list[Hex]:
-        if radius <= 0:
-            raise ValueError(
-                "Invalid radius. The radius around the hex center must be greater than 0 rings."
-            )
-        results: list[Hex] = []
-        hex: Hex = Hexagon.hex_add(
-            center, Hexagon.hex_scale(self.oRanDuDirections()[4], radius)
-        )
-        for i in range(6):
-            for j in range(radius):
-                results.append(hex)
-                hex = self.oRanDuNeighbor(hex, i)
-        return results
-
-    def oRanDuSpiral(self, o_ran_du_center: Hex, radius: int) -> list[Hex]:
-        result: list[Hex] = [o_ran_du_center]
-        for k in range(1, radius + 1):
-            result.extend(self.oRanDuRing(o_ran_du_center, k))
-        return result
-
-    def oRanCuDirections(self) -> list[Hex]:
-        q: int = (
-            2 * self.oRanCuSpiralRadiusOfODus
-            + 3 * self.oRanCuSpiralRadiusOfODus * self.oRanDuSpiralRadiusOfTowers
-            + self.oRanDuSpiralRadiusOfTowers
-            + 1
-        )
-        r: int = self.oRanDuSpiralRadiusOfTowers - self.oRanCuSpiralRadiusOfODus
-        s: int = -q - r
-        return [
-            Hex(+q, +r, +s),
-            Hex(-s, -q, -r),
-            Hex(+r, +s, +q),
-            Hex(-q, -r, -s),
-            Hex(+s, +q, +r),
-            Hex(-r, -s, -q),
-        ]
-
-    def oRanCuNeighbor(self, cube: Hex, direction: int) -> list[Hex]:
-        return Hexagon.hex_add(cube, self.oRanCuDirections()[direction])
-
-    def oRanCuRing(self, center: Hex, radius: int):
-        if not (radius > 0):
-            raise ValueError(
-                "Invalid radius. The radius around the hex center must be greater than 0 rings."
-            )
-
-        results: list[Hex] = []
-        hex: Hex = Hexagon.hex_add(
-            center, Hexagon.hex_scale(self.oRanCuDirections()[4], radius)
-        )
-        for i in range(6):
-            for j in range(radius):
-                results.append(hex)
-                hex = self.oRanCuNeighbor(hex, i)
-        return results
-
-    def oRanCuSpiral(self, center: Hex, radius: int) -> list[Hex]:
-        result: list[Hex] = [center]
-        for k in range(1, radius + 1):
-            result += self.oRanCuRing(center, k)
-        return result
-
-    def oRanNearRtRicDirections(self) -> list[Hex]:
-        q0: int = (
-            2 * self.oRanCuSpiralRadiusOfODus
-            + 3 * self.oRanCuSpiralRadiusOfODus * self.oRanDuSpiralRadiusOfTowers
-            + self.oRanDuSpiralRadiusOfTowers
-            + 1
-        )
-        r0: int = self.oRanDuSpiralRadiusOfTowers - self.oRanCuSpiralRadiusOfODus
-
-        q: int = 3 * q0 - self.oRanNearRtRicSpiralRadiusOfOCus
-        r: int = -r0 - self.oRanNearRtRicSpiralRadiusOfOCus
-
-        profile_id: str = self.id[0 : len(self.id)-1]
-        if profile_id in {"111", "112", "113", "114"}:
-            q: int = 21 + 14 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-            r: int = -7 * self.oRanNearRtRicSpiralRadiusOfOCus
-        elif profile_id in {"121", "122", "123", "124"}:
-            q: int = 25 + 13 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-            r: int = 9 + 10 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-        elif profile_id in {"131", "132"}:
-            q: int = 49 + 30 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-            r: int = -21 - 34 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-        elif profile_id == "133":
-            q: int = 74
-            r: int = 37
-        elif profile_id == "134":
-            q: int = 93
-            r: int = 50
-        elif profile_id in {"211", "212", "213", "214"}:
-            q: int = 34 + 23 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-            r: int = -10 * self.oRanNearRtRicSpiralRadiusOfOCus - 1
-        elif profile_id in {"221", "222", "223", "224"}:
-            q: int = 57 + 38 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-            r: int = -19 * self.oRanNearRtRicSpiralRadiusOfOCus
-        elif profile_id in {"231", "232", "233", "234"}:
-            q: int = 80 + 53 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-            r: int = -28 * self.oRanNearRtRicSpiralRadiusOfOCus - 1
-        elif profile_id in {"241", "242", "243", "244"}:
-            q: int = 103 + 68 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-            r: int = -39 * self.oRanNearRtRicSpiralRadiusOfOCus + 2 * (
-                self.oRanNearRtRicSpiralRadiusOfOCus - 1
-            )
-        elif profile_id in {"311", "312", "313", "314"}:
-            q: int = 47 + 32 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-            r: int = -11 - 13 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-        elif profile_id in {"321", "322", "323", "324"}:
-            q: int = 79 + 53 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-            r: int = -24 - 25 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-        elif profile_id in {"331", "332", "333", "334"}:
-            q: int = 111 + 75 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-            r: int = -37 - 37 * (self.oRanNearRtRicSpiralRadiusOfOCus - 1)
-        else:
-            # Handle the default case or raise a warning
-            pass
-
-        s: int = -q - r
-        return [
-            Hex(q, r, s),
-            Hex(-s, -q, -r),
-            Hex(r, s, q),
-            Hex(-q, -r, -s),
-            Hex(s, q, r),
-            Hex(-r, -s, -q),
-        ]
-
-    def oRanNearRtRicNeighbor(self, cube: Hex, direction: int):
-        return Hexagon.hex_add(cube, self.oRanNearRtRicDirections()[direction])
-
-    def oRanNearRtRicRing(self, center: Hex, radius: int) -> list[Hex]:
-        if not (radius > 0):
-            raise ValueError(
-                "Invalid radius. The radius around the hex center must be greater than 0 rings."
-            )
-
-        results: list[Hex] = []
-        hex: Hex = Hexagon.hex_add(
-            center, Hexagon.hex_scale(self.oRanNearRtRicDirections()[4], radius)
-        )
-        for i in range(6):
-            for j in range(radius):
-                results.append(hex)
-                hex = self.oRanNearRtRicNeighbor(hex, i)
-        return results
-
-    def oRanNearRtRicSpiral(self, center: Hex, radius: int) -> list[Hex]:
-        result: list[Hex] = [center]
-        for k in range(1, radius + 1):
-            result += self.oRanNearRtRicRing(center, k)
-        return result