Skip to content

Commit

Permalink
Added default_libraries to material class.
Browse files Browse the repository at this point in the history
  • Loading branch information
MicahGale committed Sep 17, 2024
1 parent e30b570 commit 6e0b614
Showing 1 changed file with 51 additions and 1 deletion.
52 changes: 51 additions & 1 deletion montepy/data_inputs/material.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import math

from montepy.data_inputs import data_input, thermal_scattering
from montepy.data_inputs.nuclide import Nuclide
from montepy.data_inputs.nuclide import Library, Nucleus, Nuclide
from montepy.data_inputs.element import Element
from montepy.data_inputs.material_component import MaterialComponent
from montepy.input_parser import syntax_node
Expand All @@ -14,6 +14,7 @@
from montepy.numbered_mcnp_object import Numbered_MCNP_Object
from montepy.errors import *
from montepy.utilities import *
from montepy.particle import LibraryType

import re
import warnings
Expand All @@ -31,6 +32,37 @@ def _number_validator(self, number):
self._problem.materials.check_number(number)


class _DefaultLibraries:

__slots__ = "_libraries"

def __init__(self):
self._libraries = {}

def __getitem__(self, key):
key = self._validate_key(key)
return self._libraries[key]

def __setitem__(self, key, value):
key = self._validate_key(key)
if not isinstance(value, Library):
raise TypeError("")
self._libraries[key] = value

def __delitem__(self, key):
key = self._validate_key(key)
del self._libraries[key]

def __str__(self):
return str(self._libraries)

@staticmethod
def _validate_key(key):
if not isinstance(key, LibraryType):
raise TypeError("")
return key


class Material(data_input.DataInputAbstract, Numbered_MCNP_Object):
"""
A class to represent an MCNP material.
Expand All @@ -48,6 +80,7 @@ def __init__(self, input=None):
self._number = self._generate_default_node(int, -1)
self._elements = set()
self._nuclei = set()
self._default_libs = _DefaultLibraries()
super().__init__(input)
if input:
num = self._input_number
Expand Down Expand Up @@ -85,6 +118,16 @@ def __init__(self, input=None):
self._elements.add(isotope.element)
self._nuclei.add(isotope.nucleus)
self._components.append((isotope, fraction))
self._grab_defaults()

def _grab_defaults(self):
if "parameters" not in self._tree:
return
params = self._tree["parameters"]
for param, value in params.nodes.items():
lib_type = LibraryType(param.upper())
self._default_libs[lib_type] = Library(value["data"].value)
# TODO update in update_values for default_libraries

@make_prop_val_node("_old_number")
def old_number(self):
Expand Down Expand Up @@ -130,6 +173,13 @@ def material_components(self):
See <https://www.montepy.org/migrations/migrate0_1.html> for more information """
)

@make_prop_pointer("_default_libs")
def default_libraries(self):
"""
TODO
"""
pass

def __getitem__(self, idx):
""" """
if not isinstance(idx, (int, slice)):
Expand Down

0 comments on commit 6e0b614

Please sign in to comment.