Skip to content

Commit

Permalink
Added inp Immutability
Browse files Browse the repository at this point in the history
  • Loading branch information
BitterB0NG0 committed Sep 19, 2024
1 parent 2d6d79e commit 3f3d223
Show file tree
Hide file tree
Showing 14 changed files with 4,739 additions and 7,091 deletions.
16 changes: 0 additions & 16 deletions docs/source/pymcnp-inp.rst
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
pymcnp.inp Subpackage
=====================

Generic Card
------------

.. autoclass:: pymcnp.inp.Card
:members:
:undoc-members:
:show-inheritance:

Comment Card
------------

Expand Down Expand Up @@ -41,14 +33,6 @@ Data Cards
:undoc-members:
:show-inheritance:

Generic Card Block
------------------

.. autoclass:: pymcnp.inp.Block
:members:
:undoc-members:
:show-inheritance:

Cell Card Block
---------------

Expand Down
19 changes: 10 additions & 9 deletions src/pymcnp/files/inp/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@
from .datum import StochasticGeometry
from .datum import DeterministicMaterials
from .datum import DeterministicWeightWindow
from .datum import EmbededGeometry
from .datum import EmbededControl
from .datum import EmbededEnergyBoundaries
from .datum import EmbededEnergyMultipliers
from .datum import EmbededTimeBoundaries
from .datum import EmbededTimeMultipliers
from .datum import EmbededDoseBoundaries
from .datum import EmbededDoseMultipliers
from .datum import EmbeddedGeometry
from .datum import EmbeddedControl
from .datum import EmbeddedEnergyBoundaries
from .datum import EmbeddedEnergyMultipliers
from .datum import EmbeddedTimeBoundaries
from .datum import EmbeddedTimeMultipliers
from .datum import EmbeddedDoseBoundaries
from .datum import EmbeddedDoseMultipliers
from .datum import Material
from .datum import MaterialNeutronScattering
from .datum import MaterialNuclideSubstitution
Expand All @@ -31,7 +31,8 @@
from .datum import CrossSectionFile
from .datum import Void
from .surface import Surface
from .surface import PlaneGeneral
from .surface import PlaneGeneralEquation
from .surface import PlaneGeneralPoint
from .surface import PlaneNormalX
from .surface import PlaneNormalY
from .surface import PlaneNormalZ
Expand Down
48 changes: 45 additions & 3 deletions src/pymcnp/files/inp/_cadquery.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def cross(a: CqVector, b: CqVector):
``CqVector`` cross product of ``a`` and ``b``.
"""

return CqVector(np.cross([a.x, a.y, a.z], [b.x, b.y, b.z]))
return CqVector(*np.cross([a.x, a.y, a.z], [b.x, b.y, b.z]))

@staticmethod
def angle(a: CqVector, b: CqVector) -> float:
Expand All @@ -96,7 +96,7 @@ def angle(a: CqVector, b: CqVector) -> float:
Angle between ``a`` and ``b`` in degrees.
"""

return np.degrees(np.arccos(np.dot(a, b)))
return np.degrees(np.arccos(np.dot([a.x, a.y, a.z], [b.x, b.y, b.z])))


def add_box(a: CqVector, b: CqVector, c: CqVector) -> str:
Expand Down Expand Up @@ -213,7 +213,7 @@ def add_cylinder_ellipse(h: float, a: float, b: float) -> str:
h: Elliptical cylinder height.
Returns:
Cadquery representing a elliptical cylinder.
Cadquery representing an elliptical cylinder.
"""

return f".ellipse({a}, {b}).extrude({h})"
Expand Down Expand Up @@ -241,6 +241,48 @@ def add_cone_truncated(h: float, r1: float, r2: float) -> str:
return f".circle({r1}).workplane(offset={h}).circle({r2}).loft()"


def add_ellipsoid(a: float, b: float) -> str:
"""
``add_ellipsoid`` adds ellipsoids to Cadquery workplanes.
``add_ellipsoid`` writes Cadquery to represent ellipsoids given minor and
major axis length. It substitutes these values into calls of the Cadquery
``ellipseArc`` method which adds ellipsoids to the Cadquery workplane.
``add_cylinder_ellipse`` includes calls to ``revolove`` in its output to
build a complete ellipsoid from an ellipse.
Paremeters
a: Ellipsoid major axis length.
b: Ellipsoid minor axis length.
Returns:
Cadquery representing an ellispoid.
"""

return f".ellipseArc({a}, {b}, -90, 90).close().revolve(axisStart=(0, -{a}, 0), axisEnd=(0, {a}, 0))"


def add_wedge(a: CqVector, b: CqVector, c: CqVector) -> str:
"""
``add_wedge`` adds wedges to Cadquery workplanes.
``add_wedge`` writes Cadquery to represent wedges given three vectors. It
substitutes these values into calls of the Cadquery ``polyline`` method
which adds a sketchs wedges to the Cadquery workplane. ``add_wedge``
includes calls to ``loft`` in its output to loft the polylines in to shape.
Paremeters
a: Wedge vector #1.
b: Wedge vector #2.
c: Wedge vector #3.
Returns:
Cadquery representing a wedge.
"""

return f".polyline([({a.x}, {a.y}, {a.z}), (0, 0, 0), ({b.x}, {b.y}, {b.z})]).close().polyline([({a.x + c.x}, {a.y + c.y}, {a.z + c.z}), ({c.x}, {c.y}, {c.z}), ({b.x + c.x}, {b.y + c.y}, {b.z + c.z})]).close().loft()"


def add_translation(v: CqVector) -> str:
"""
``add_translation`` adds translations to Cadquey workplanes.
Expand Down
8 changes: 4 additions & 4 deletions src/pymcnp/files/inp/card.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ class Card:
comment: Card inline comment.
"""

def __init__(self):
def __init__(self, ident):
"""
``__init__`` initalizes ``Card``.
"""

self.id: Union[int, str] = None
self.line: int = None
self.comment: str = None
self.id: final[Union[int, str]] = ident
self.line: final[int] = None
self.comment: final[str] = None
Loading

0 comments on commit 3f3d223

Please sign in to comment.