mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 06:05:58 -04:00
Changed __copy__ method of ResonanceRange to mark parameters unprepared
This commit is contained in:
parent
3626d8ead7
commit
28414ef283
3 changed files with 84 additions and 86 deletions
File diff suppressed because one or more lines are too long
|
|
@ -91,14 +91,14 @@ class Resonances(object):
|
|||
|
||||
# Determine whether discrete or continuous representation
|
||||
items = get_head_record(file_obj)
|
||||
n_isotope = items[4] # Number of isotopes
|
||||
n_isotope = items[4] # Number of isotopes
|
||||
|
||||
ranges = []
|
||||
for iso in range(n_isotope):
|
||||
items = get_cont_record(file_obj)
|
||||
abundance = items[1]
|
||||
fission_widths = (items[3] == 1) # fission widths are given?
|
||||
n_ranges = items[4] # number of resonance energy ranges
|
||||
fission_widths = (items[3] == 1) # fission widths are given?
|
||||
n_ranges = items[4] # number of resonance energy ranges
|
||||
|
||||
for j in range(n_ranges):
|
||||
items = get_cont_record(file_obj)
|
||||
|
|
@ -113,7 +113,7 @@ class Resonances(object):
|
|||
# unresolved resonance region
|
||||
erange = Unresolved.from_endf(file_obj, items, fission_widths)
|
||||
|
||||
#erange.material = self
|
||||
# erange.material = self
|
||||
ranges.append(erange)
|
||||
|
||||
return cls(ranges)
|
||||
|
|
@ -163,6 +163,13 @@ class ResonanceRange(object):
|
|||
self._prepared = False
|
||||
self._parameter_matrix = {}
|
||||
|
||||
def __copy__(self):
|
||||
cls = type(self)
|
||||
new_copy = cls.__new__(cls)
|
||||
new_copy.__dict__.update(self.__dict__)
|
||||
new_copy._prepared = False
|
||||
return new_copy
|
||||
|
||||
@classmethod
|
||||
def from_endf(cls, ev, file_obj, items):
|
||||
"""Create resonance range from an ENDF evaluation.
|
||||
|
|
|
|||
|
|
@ -208,10 +208,6 @@ class ResonanceCovarianceRange:
|
|||
|
||||
res_cov_range.file2res.parameters = parameters[mask]
|
||||
res_cov_range.covariance = cov_subset
|
||||
# Set _prepared to False to ensure parameter subset
|
||||
# used during construction routine
|
||||
res_cov_range.file2res._prepared = False
|
||||
|
||||
return res_cov_range
|
||||
|
||||
def sample_resonance_parameters(self, n_samples):
|
||||
|
|
@ -264,29 +260,27 @@ class ResonanceCovarianceRange:
|
|||
|
||||
records = []
|
||||
for j, E in enumerate(energy):
|
||||
records.append([energy[j], l_value[j], spin[j], gt[j], gn[j],
|
||||
gg[j], gf[j], gx[j]])
|
||||
records.append([energy[j], l_value[j], spin[j], gt[j],
|
||||
gn[j], gg[j], gf[j], gx[j]])
|
||||
columns = ['energy', 'L', 'J', 'totalWidth', 'neutronWidth',
|
||||
'captureWidth', 'fissionWidth', 'competitiveWidth']
|
||||
sample_params = pd.DataFrame.from_records(records, columns=columns)
|
||||
sample_params = pd.DataFrame.from_records(records,
|
||||
columns=columns)
|
||||
# Copy ResonanceRange object
|
||||
res_range = copy.copy(self.file2res)
|
||||
# Set _prepared to False to ensure sampled parameters are
|
||||
# used during construction routine
|
||||
res_range._prepared = False
|
||||
res_range.parameters = sample_params
|
||||
samples.append(res_range)
|
||||
|
||||
# Handling RM sampling
|
||||
elif formalism == 'rm':
|
||||
params = ['energy', 'L', 'J', 'neutronWidth', 'captureWidth',
|
||||
params = ['energy', 'neutronWidth', 'captureWidth',
|
||||
'fissionWidthA', 'fissionWidthB']
|
||||
param_list = params[:mpar]
|
||||
mean_array = parameters[param_list].values
|
||||
mean = mean_array.flatten()
|
||||
par_samples = np.random.multivariate_normal(mean, cov,
|
||||
size=n_samples)
|
||||
spin = parameters['J']
|
||||
spin = parameters['J'].values
|
||||
l_value = parameters['L'].values
|
||||
for sample in par_samples:
|
||||
energy = sample[0::mpar]
|
||||
|
|
@ -305,9 +299,6 @@ class ResonanceCovarianceRange:
|
|||
columns=columns)
|
||||
# Copy ResonanceRange object
|
||||
res_range = copy.copy(self.file2res)
|
||||
# Set _prepared to False to ensure sampled parameters are
|
||||
# used during construction routine
|
||||
res_range._prepared = False
|
||||
res_range.parameters = sample_params
|
||||
samples.append(res_range)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue