mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 22:26:08 -04:00
Merge pull request #490 from paulromano/material-deepcopy
Add Material.__deepcopy__ method
This commit is contained in:
commit
756c6b3888
1 changed files with 24 additions and 0 deletions
|
|
@ -115,6 +115,30 @@ class Material(object):
|
|||
|
||||
return string
|
||||
|
||||
def __deepcopy__(self, memo):
|
||||
existing = memo.get(id(self))
|
||||
|
||||
if existing is None:
|
||||
# If this is the first time we have tried to copy this object, create a copy
|
||||
clone = type(self).__new__(type(self))
|
||||
clone._id = self._id
|
||||
clone._name = self._name
|
||||
clone._density = self._density
|
||||
clone._density_units = self._density_units
|
||||
clone._nuclides = deepcopy(self._nuclides, memo)
|
||||
clone._elements = deepcopy(self._elements, memo)
|
||||
clone._sab = deepcopy(self._sab, memo)
|
||||
clone._convert_to_distrib_comps = self._convert_to_distrib_comps
|
||||
clone._distrib_otf_file = self._distrib_otf_file
|
||||
|
||||
memo[id(self)] = clone
|
||||
|
||||
return clone
|
||||
|
||||
else:
|
||||
# If this object has been copied before, return the first copy made
|
||||
return existing
|
||||
|
||||
@property
|
||||
def id(self):
|
||||
return self._id
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue