From 7a5dd34414357aa7807f1b1c0c30cbe1e3d75c15 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Feb 2026 12:21:00 -0600 Subject: [PATCH 001/170] Move get times and rates into MoSDeN --- mosden/base.py | 61 ++++++++++++++++++++++++++++++++++ mosden/concentrations.py | 12 +++---- mosden/templates/omc_run.jinja | 57 ++----------------------------- 3 files changed, 68 insertions(+), 62 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index 786c0087..106772ab 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -165,6 +165,67 @@ def time_track(self, starttime: float, modulename: str = '') -> None: self.logger.info(f'{modulename} took {round(time() - starttime, 3)}s') return None + def _get_times_and_rates(self, f_in: float = 1.0) -> tuple[list[float], list[float], list[int]]: + """ + Calculates the time steps to evaluate in OpenMC, the source rates + to use at each time step, and the chemical removal indeces where + removal occurs. + + Parameters + ---------- + f_in : float (optional) + Only required if the flux is scaled. The in-core salt fraction. + + Returns + ------- + timesteps : list[float] + The time steps for evaluation in OpenMC + source_rates : list[float] + The flux value applied to the sample at each point in time + removal_indeces : list[int] + The time indeces where removal occurs + """ + removal_indeces = list() + timesteps = list() + source_rates = list() + current_time = 0 + index_counter = 0 + in_core = True + time_close = np.isclose(current_time, self.t_net) + while current_time < self.t_net and not time_close: + if in_core: + t = self.t_in + region = 'incore' + source = self.openmc_settings['source'] + in_core = False + else: + t = self.t_ex + region = 'excore' + source = 0 + in_core = True + + if t <= 0.0: + continue + + current_time += t + timesteps.append(t) + if (region in self.reprocess_locations) or self.chem_scaling: + removal_indeces.append(index_counter) + if self.flux_scaling: + source = self.openmc_settings['source'] * f_in + source_rates.append(source) + index_counter += 1 + time_close = np.isclose(current_time, self.t_net) + + diff = sum(timesteps) - self.t_net + timesteps[-1] = timesteps[-1] - diff + + decay_time_steps = np.diff(self.decay_times, prepend=[0.0]) + for t in decay_time_steps: + timesteps.append(t) + source_rates.append(0) + return timesteps, source_rates, removal_indeces + def _set_decay_times(self) -> np.ndarray[float]: """ Set the decay times based on the time spacing, final time, and diff --git a/mosden/concentrations.py b/mosden/concentrations.py index e02b88fc..714a5837 100644 --- a/mosden/concentrations.py +++ b/mosden/concentrations.py @@ -157,6 +157,7 @@ def OMC_concentrations(self) -> list[dict[str, float]]: chain_file = os.path.join(self.unprocessed_data_dir, self.openmc_settings['chain']) cross_sections = os.path.join(self.unprocessed_data_dir, self.openmc_settings['x_sections']) omc_dir = self.openmc_settings['omc_dir'] + timesteps, source_rates, removal_indeces = self._get_times_and_rates(self.f_in) render_data = { 'nps': self.openmc_settings['nps'], 'mode': self.openmc_settings['mode'], @@ -167,19 +168,14 @@ def OMC_concentrations(self) -> list[dict[str, float]]: 'density': self.density_g_cc, 'temperature': self.temperature_K, 'fissiles': self.fissiles, - 't_in': self.t_in, - 't_ex': self.t_ex, - 'total_irrad_s': self.t_net, - 'decay_times': self.decay_times, - 'repr_locations': self.reprocess_locations, 'reprocessing': self.reprocessing, 'repr_scale': self.repr_scale, 'chain_file': chain_file, 'cross_sections': cross_sections, 'omc_dir': omc_dir, - 'flux_scaling': self.flux_scaling, - 'chem_scaling': self.chem_scaling, - 'f_in': self.f_in + 'timesteps': timesteps, + 'source_rates': source_rates, + 'removal_indeces': removal_indeces } rendered_template = template.render(render_data) fname = 'omc.py' diff --git a/mosden/templates/omc_run.jinja b/mosden/templates/omc_run.jinja index 46acb3ff..4e79ba67 100644 --- a/mosden/templates/omc_run.jinja +++ b/mosden/templates/omc_run.jinja @@ -17,20 +17,13 @@ dens_g_cm3 = {{density}} temperature_K = {{temperature}} fissiles = {{fissiles}} xs_data = '{{cross_sections}}' -t_in: float = {{t_in}} -t_ex: float = {{t_ex}} -t_net: float = {{total_irrad_s}} -decay_times: np.ndarray[float] = [{{decay_times | join(', ')}}] -reprocess_locations: list[str] = {{repr_locations}} -flux = {{source}} chain_file = '{{chain_file}}' reprocessing = {{reprocessing}} repr_scale = {{repr_scale}} omc_dir = '{{omc_dir}}' -flux_scaling: bool = {{flux_scaling}} -chem_scaling: bool = {{chem_scaling}} -f_in : float = {{f_in}} - +ts = {{timesteps}} +sources = {{source_rates}} +chem_times = {{removal_indeces}} volume = mass_g / dens_g_cm3 radius = (mass_g * volume / (4 * np.pi)) ** (1/3) @@ -133,49 +126,6 @@ def build_model(settings, materials, geometry, tallies): return model -def get_times_and_rates(): - removal_indeces = list() - timesteps = list() - source_rates = list() - current_time = 0 - index_counter = 0 - in_core = True - time_close = np.isclose(current_time, t_net) - while current_time < t_net and not time_close: - if in_core: - t = t_in - region = 'incore' - source = flux - in_core = False - else: - t = t_ex - region = 'excore' - source = 0 - in_core = True - - if t <= 0.0: - continue - - current_time += t - timesteps.append(t) - if (region in reprocess_locations) or chem_scaling: - removal_indeces.append(index_counter) - if flux_scaling: - source = flux * f_in - source_rates.append(source) - index_counter += 1 - time_close = np.isclose(current_time, t_net) - - diff = sum(timesteps) - t_net - timesteps[-1] = timesteps[-1] - diff - - decay_time_steps = np.diff(decay_times, prepend=[0.0]) - for t in decay_time_steps: - timesteps.append(t) - source_rates.append(0) - return timesteps, source_rates, removal_indeces - - def run(): tally = tallies() mats = materials() @@ -183,7 +133,6 @@ def run(): sets = settings() model = build_model(sets, mats, geom, tally) - ts, sources, chem_times = get_times_and_rates() operator = openmc.deplete.CoupledOperator(model, chain_file, normalization_mode='source-rate') operator.output_dir = omc_dir From 7abdf721530d0057c7f8fe3e0181a6d9013e9ac9 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Feb 2026 12:57:03 -0600 Subject: [PATCH 002/170] Develop insitu residual handling --- mosden/base.py | 31 +++++++++++++++++------ mosden/concentrations.py | 8 +++--- mosden/utils/defaults.py | 1 + mosden/utils/input_handler.py | 2 ++ tests/unit/test_base.py | 47 +++++++++++++++++++++++++++++++++++ 5 files changed, 77 insertions(+), 12 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index 106772ab..e8006f68 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -103,6 +103,7 @@ def __init__(self, input_path: str) -> None: self.temperature_K: float = data_options.get('temperature_K', 920) self.density_g_cc: float = data_options.get('density_g_cm3', 2.3275) self.openmc_settings: dict = modeling_options.get('openmc_settings', {}) + self.residual_masks: list[str] = modeling_options.get('residual_handling', ["post-irrad"]) self.count_overwrite: bool = overwrite_options.get('count_rate', False) @@ -165,7 +166,7 @@ def time_track(self, starttime: float, modulename: str = '') -> None: self.logger.info(f'{modulename} took {round(time() - starttime, 3)}s') return None - def _get_times_and_rates(self, f_in: float = 1.0) -> tuple[list[float], list[float], list[int]]: + def _get_times_and_rates(self, f_in: float = 1.0) -> dict[str, list[float|int]]: """ Calculates the time steps to evaluate in OpenMC, the source rates to use at each time step, and the chemical removal indeces where @@ -178,31 +179,36 @@ def _get_times_and_rates(self, f_in: float = 1.0) -> tuple[list[float], list[flo Returns ------- - timesteps : list[float] - The time steps for evaluation in OpenMC - source_rates : list[float] - The flux value applied to the sample at each point in time - removal_indeces : list[int] - The time indeces where removal occurs + time_rate_data : dict[str, list[float|int]] + Keys are names for different datasets, values are the time-dependent + data. Keys include `timesteps`, `source_rates`, `removal_indeces`, + and `insitu_mask` """ + time_rate_data = dict() removal_indeces = list() timesteps = list() source_rates = list() + insitu_residual_mask = list() current_time = 0 index_counter = 0 in_core = True time_close = np.isclose(current_time, self.t_net) while current_time < self.t_net and not time_close: + mask_val = 0 if in_core: t = self.t_in region = 'incore' source = self.openmc_settings['source'] in_core = False + if 'incore' in self.residual_masks: + mask_val = 1 else: t = self.t_ex region = 'excore' source = 0 in_core = True + if 'excore' in self.residual_masks: + mask_val = 1 if t <= 0.0: continue @@ -216,6 +222,9 @@ def _get_times_and_rates(self, f_in: float = 1.0) -> tuple[list[float], list[flo source_rates.append(source) index_counter += 1 time_close = np.isclose(current_time, self.t_net) + if 'all' in self.residual_masks: + mask_val = 1 + insitu_residual_mask.append(mask_val) diff = sum(timesteps) - self.t_net timesteps[-1] = timesteps[-1] - diff @@ -224,7 +233,13 @@ def _get_times_and_rates(self, f_in: float = 1.0) -> tuple[list[float], list[flo for t in decay_time_steps: timesteps.append(t) source_rates.append(0) - return timesteps, source_rates, removal_indeces + + time_rate_data['timesteps'] = timesteps + time_rate_data['source_rates'] = source_rates + time_rate_data['removal_indeces'] = removal_indeces + time_rate_data['insitu_mask'] = insitu_residual_mask + return time_rate_data + def _set_decay_times(self) -> np.ndarray[float]: """ diff --git a/mosden/concentrations.py b/mosden/concentrations.py index 714a5837..e3a28e0b 100644 --- a/mosden/concentrations.py +++ b/mosden/concentrations.py @@ -157,7 +157,7 @@ def OMC_concentrations(self) -> list[dict[str, float]]: chain_file = os.path.join(self.unprocessed_data_dir, self.openmc_settings['chain']) cross_sections = os.path.join(self.unprocessed_data_dir, self.openmc_settings['x_sections']) omc_dir = self.openmc_settings['omc_dir'] - timesteps, source_rates, removal_indeces = self._get_times_and_rates(self.f_in) + time_rate_data = self._get_times_and_rates(self.f_in) render_data = { 'nps': self.openmc_settings['nps'], 'mode': self.openmc_settings['mode'], @@ -173,9 +173,9 @@ def OMC_concentrations(self) -> list[dict[str, float]]: 'chain_file': chain_file, 'cross_sections': cross_sections, 'omc_dir': omc_dir, - 'timesteps': timesteps, - 'source_rates': source_rates, - 'removal_indeces': removal_indeces + 'timesteps': time_rate_data['timesteps'], + 'source_rates': time_rate_data['source_rates'], + 'removal_indeces': time_rate_data['removal_indeces'] } rendered_template = template.render(render_data) fname = 'omc.py' diff --git a/mosden/utils/defaults.py b/mosden/utils/defaults.py index c26be26c..c0dcccde 100644 --- a/mosden/utils/defaults.py +++ b/mosden/utils/defaults.py @@ -42,6 +42,7 @@ "modeling_options": { "concentration_handling": "CFY", "count_rate_handling": "data", + "residual_handling": ["post-irrad"], "reprocessing_locations": [""], "spatial_scaling": { "flux": True, diff --git a/mosden/utils/input_handler.py b/mosden/utils/input_handler.py index b9f240c7..bd0b622d 100644 --- a/mosden/utils/input_handler.py +++ b/mosden/utils/input_handler.py @@ -129,6 +129,8 @@ def _check_if_in_options(item, options): raise ValueError('Initial yield guess does not match number of groups') if len(data['group_options']['initial_params']['half_lives']) != data['group_options']['num_groups']: raise ValueError('Initial half life guess does not match number of groups') + if len(data['modeling_options']['residual_handling']) == 0: + raise ValueError('Residual must be evaluated') return diff --git a/tests/unit/test_base.py b/tests/unit/test_base.py index 9ad194bb..85ac164a 100644 --- a/tests/unit/test_base.py +++ b/tests/unit/test_base.py @@ -90,3 +90,50 @@ def test_irrad_and_update(): index = base.get_irrad_index(False) assert index == 55 +def test_times_rates_mask(): + input_path = './tests/unit/input/input.json' + base = BaseClass(input_path) + base.t_in = 1 + base.t_ex = 1 + base.t_net = 10 + base.flux_scaling = False + assert not base.flux_scaling + data = base._get_times_and_rates() + + assert data['timesteps'][:10] == [1]*10 + assert data['source_rates'][:10] == [1.0, 0]*5 + assert data['removal_indeces'][:10] == list(np.arange(0, 10)) + assert data['insitu_mask'] == [0]*10 + + base.residual_masks = ['post-irrad'] + data = base._get_times_and_rates() + + assert data['timesteps'][:10] == [1]*10 + assert data['source_rates'][:10] == [1.0, 0]*5 + assert data['removal_indeces'][:10] == list(np.arange(0, 10)) + assert data['insitu_mask'] == [0]*10 + + base.residual_masks = ['incore'] + data = base._get_times_and_rates() + + assert data['timesteps'][:10] == [1]*10 + assert data['source_rates'][:10] == [1.0, 0]*5 + assert data['removal_indeces'][:10] == list(np.arange(0, 10)) + assert data['insitu_mask'] == [1,0]*5 + + base.residual_masks = ['excore'] + data = base._get_times_and_rates() + + assert data['timesteps'][:10] == [1]*10 + assert data['source_rates'][:10] == [1.0, 0]*5 + assert data['removal_indeces'][:10] == list(np.arange(0, 10)) + assert data['insitu_mask'] == [0,1]*5 + + + base.residual_masks = ['all'] + data = base._get_times_and_rates() + + assert data['timesteps'][:10] == [1]*10 + assert data['source_rates'][:10] == [1.0, 0]*5 + assert data['removal_indeces'][:10] == list(np.arange(0, 10)) + assert data['insitu_mask'] == [1]*10 From 45e22ffeb4b96aeb21cb78792afc16eaeb141fd9 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Feb 2026 13:03:34 -0600 Subject: [PATCH 003/170] Add new residual handling to input schema --- mosden/templates/input_schema.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index 0535643a..070a7602 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -146,6 +146,14 @@ "description": "Method to use for calculating the delayed neutron count rate. This can either be from data or using existing group parameters from a MoSDeN output", "enum": ["data", "groupfit"] }, + "residual_handling": { + "type": "array", + "description": "Which data to include in residual calculation. Default is post-irradiation `post-irrad` only. `in-core` means to include the residual solve only while the sample is in the core. `all` means to include the residual at all times during and post irradiation.", + "items": { + "type": "string", + "enum": ["post-irrad", "incore", "excore", "all"] + } + }, "reprocessing_locations": { "type": "array", "description": "The locations where the reprocessing scheme provided occurs (NOTE: MoSDeN currently assumes all provided reprocessing parameters occur in the same spatial region", From 652a8cfc4bf140fb976b41d1ad11f8365799ec7c Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Feb 2026 13:33:44 -0600 Subject: [PATCH 004/170] Update count rate to give more data if needed based on residual --- mosden/countrate.py | 48 +++++++++++++++++++++++++++-------- mosden/utils/input_handler.py | 2 ++ 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/mosden/countrate.py b/mosden/countrate.py index 43c764fc..e55cc0c8 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -154,10 +154,7 @@ def sample_parameter(val: ufloat, dist: str) -> float: return np.random.uniform(val.n - val.s, val.n + val.s) else: raise NotImplementedError(f'{dist} sampling not implemented') - - data: dict[str: list[float]] = dict() - count_rate: np.ndarray = np.zeros(len(self.decay_times)) - sigma_count_rate: np.ndarray = np.zeros(len(self.decay_times)) + emission_nucs = list(self.emission_prob_data.keys()) half_life_nucs = list(self.half_life_data.keys()) @@ -178,6 +175,28 @@ def sample_parameter(val: ufloat, dist: str) -> float: raise Exception( 'Error: no data exists for given data combination') + data: dict[str: list[float]] = dict() + post_irrad_only = len(self.residual_masks) == 1 and 'post-irrad' in self.residual_masks + no_post_irrad = 'post-irrad' not in self.residual_masks + if post_irrad_only: + use_times = self.decay_times + else: + mask_data = self._get_times_and_rates() + use_times = np.concatenate(([0], np.cumsum(mask_data['timesteps']))) + + num_data = len(list(self.concentration_data[net_similar_nucs[-1]].values())[0]) + single_time_val = False + if num_data == 1: + single_time_val = True + post_irrad_index = self.get_irrad_index(single_time_val) + + if no_post_irrad: + use_times = use_times[:post_irrad_index] + + count_rate: np.ndarray = np.zeros(len(use_times)) + sigma_count_rate: np.ndarray = np.zeros(len(use_times)) + + Pn_post_data = dict() lam_post_data = dict() conc_post_data = dict() @@ -205,8 +224,6 @@ def sample_parameter(val: ufloat, dist: str) -> float: vals.append(val) uncertainties.append(uncertainty) concentration_array = unumpy.uarray(vals, uncertainties) - single_time_val = (len(concentration_array) == 1) - post_irrad_index = self.get_irrad_index(single_time_val) conc = concentration_array[post_irrad_index] if conc < 1e-24: @@ -233,24 +250,33 @@ def sample_parameter(val: ufloat, dist: str) -> float: Pn = 1e-12 counts = Pn * decay_const * conc * \ - np.exp(-decay_const * self.decay_times) + np.exp(-decay_const * use_times) count_rate += counts else: if single_time_val: counts = Pn * decay_const * concentration_array[post_irrad_index] * \ - unumpy.exp(-decay_const * self.decay_times) + unumpy.exp(-decay_const * use_times) else: - counts = Pn * decay_const * concentration_array[post_irrad_index+1:] + if post_irrad_only: + index_offset = post_irrad_index + 1 + else: + index_offset = 0 + if no_post_irrad: + counts = Pn * decay_const * concentration_array[:post_irrad_index] + else: + counts = Pn * decay_const * concentration_array[index_offset:] + try: count_rate += unumpy.nominal_values(counts) except ValueError: self.logger.error('Counts shape does not match count rate') - self.logger.error(f'{np.shape(self.decay_times) = }') + self.logger.error(f'{np.shape(use_times) = }') self.logger.error(f'{np.shape(counts) = }') self.logger.error(f'{np.shape(count_rate) = }') self.logger.error(f'{np.shape(concentration_array) = }') self.logger.error(f'{np.shape(concentration_array[post_irrad_index:]) = }') self.logger.error(f'{np.shape(concentration_array[post_irrad_index+1:]) = }') + self.logger.error(f'{use_times = }') self.logger.error(f'{MC_run = }') self.logger.error(f'{sampler_func = }') self.logger.error(f'{single_time_val = }') @@ -267,7 +293,7 @@ def sample_parameter(val: ufloat, dist: str) -> float: conc_post_data[nuc] = conc data = { - 'times': self.decay_times, + 'times': use_times, 'counts': count_rate, 'sigma counts': sigma_count_rate } diff --git a/mosden/utils/input_handler.py b/mosden/utils/input_handler.py index bd0b622d..a32f2dcf 100644 --- a/mosden/utils/input_handler.py +++ b/mosden/utils/input_handler.py @@ -131,6 +131,8 @@ def _check_if_in_options(item, options): raise ValueError('Initial half life guess does not match number of groups') if len(data['modeling_options']['residual_handling']) == 0: raise ValueError('Residual must be evaluated') + if data['modeling_options']['residual_handling'] != ['post-irrad'] and data['modeling_options']['concentration_handling'] != 'OMC': + raise ValueError('Alternative residuals only applicable for OpenMC evaluation approach') return From 9e65020f3a52816f20eb0276f806e223545c7cf7 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Feb 2026 13:39:03 -0600 Subject: [PATCH 005/170] Check that intermediate is selected to allow non-post-irrad --- mosden/utils/input_handler.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mosden/utils/input_handler.py b/mosden/utils/input_handler.py index a32f2dcf..d3ba900e 100644 --- a/mosden/utils/input_handler.py +++ b/mosden/utils/input_handler.py @@ -133,6 +133,8 @@ def _check_if_in_options(item, options): raise ValueError('Residual must be evaluated') if data['modeling_options']['residual_handling'] != ['post-irrad'] and data['modeling_options']['concentration_handling'] != 'OMC': raise ValueError('Alternative residuals only applicable for OpenMC evaluation approach') + if data['modeling_options']['residual_handling'] != ['post-irrad'] and data['modeling_options']['irrad_type'] != 'intermediate': + raise ValueError('Intermediate irradiation is the only type that enables non-post-irrad residual handling') return From 32185d793a254375aa82e7b28c0e149b50ba78c5 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Feb 2026 11:56:47 -0600 Subject: [PATCH 006/170] Finish adding custom residual handling --- mosden/base.py | 2 + mosden/countrate.py | 14 ++-- mosden/groupfit.py | 149 +++++++++++++++++++++++++++++++++++- tests/unit/test_groupfit.py | 29 ++++++- 4 files changed, 182 insertions(+), 12 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index e8006f68..8b7cd9f3 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -146,6 +146,8 @@ def __init__(self, input_path: str) -> None: self.nuc_colors = post_options.get('nuc_colors', {}) self.num_stack = post_options.get('num_stacked_nuclides', 2) + self.post_irrad_only: bool = (len(self.residual_masks) == 1 and 'post-irrad' in self.residual_masks) + self.no_post_irrad: bool = ('post-irrad' not in self.residual_masks and 'all' not in self.residual_masks) self.decay_times = self._set_decay_times() np.random.seed(self.seed) diff --git a/mosden/countrate.py b/mosden/countrate.py index e55cc0c8..688e75da 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -176,9 +176,7 @@ def sample_parameter(val: ufloat, dist: str) -> float: 'Error: no data exists for given data combination') data: dict[str: list[float]] = dict() - post_irrad_only = len(self.residual_masks) == 1 and 'post-irrad' in self.residual_masks - no_post_irrad = 'post-irrad' not in self.residual_masks - if post_irrad_only: + if self.post_irrad_only: use_times = self.decay_times else: mask_data = self._get_times_and_rates() @@ -190,8 +188,8 @@ def sample_parameter(val: ufloat, dist: str) -> float: single_time_val = True post_irrad_index = self.get_irrad_index(single_time_val) - if no_post_irrad: - use_times = use_times[:post_irrad_index] + if self.no_post_irrad: + use_times = use_times[:post_irrad_index+1] count_rate: np.ndarray = np.zeros(len(use_times)) sigma_count_rate: np.ndarray = np.zeros(len(use_times)) @@ -257,12 +255,12 @@ def sample_parameter(val: ufloat, dist: str) -> float: counts = Pn * decay_const * concentration_array[post_irrad_index] * \ unumpy.exp(-decay_const * use_times) else: - if post_irrad_only: + if self.post_irrad_only: index_offset = post_irrad_index + 1 else: index_offset = 0 - if no_post_irrad: - counts = Pn * decay_const * concentration_array[:post_irrad_index] + if self.no_post_irrad: + counts = Pn * decay_const * concentration_array[:post_irrad_index+1] else: counts = Pn * decay_const * concentration_array[index_offset:] diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 9db3e94b..23ccdaed 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -54,6 +54,8 @@ def _residual_function( times: np.ndarray[float], counts: np.ndarray[float], count_err: np.ndarray[float], + insitu_counts: np.ndarray[float], + insitu_times: np.ndarray[float], fit_func: Callable) -> float: """ Calculate the residual of the current set of parameters @@ -68,6 +70,10 @@ def _residual_function( List of delayed neutron counts count_err : np.ndarray[float] List of count errors + insitu_counts : np.ndarray[float] + List of delayed neutron counts during irradiation + times : np.ndarray[float] + List of times during irradiation fit_func : Callable Function that takes times and parameters to return list of counts @@ -76,9 +82,103 @@ def _residual_function( residual : float Value of the residual """ - residual = (counts - fit_func(times, parameters)) / (counts) + insitu_residual = ((insitu_counts - self._get_insitu_counts(insitu_times, parameters)) / (insitu_counts)) + insitu_residual = np.nan_to_num(insitu_residual) + post_residual = (counts - fit_func(times, parameters)) / (counts) + residual = np.concatenate((insitu_residual, post_residual)) return residual + def _get_insitu_fission_component(self, times: np.ndarray[float], + lam: np.ndarray[float], exp: Callable, + expm1: Callable) -> np.ndarray[float]: + """ + Get the fission component as a function of time during irradiation + + Parameters + ---------- + times : np.ndarray[float] + Irradiation times + lam : np.ndarray[float] + Decay constants for each group + exp : Callable + Exponential function (e.g. `np.exp`) + expm1 : Callable + Exponential subtraction function (e.g. `np.expm1`) + + Returns + ------- + fission_component : np.ndarray[float] + The fission term for each group as a function of time + """ + t = np.asarray(times) + t1 = times[:-1] + t2 = times[1:] + dt = t2 - t1 + + lam = lam[:, None, None] + t_eval = t[None, :, None] + t2 = t2[None, None, :] + dt = dt[None, None, :] + F = np.asarray(self.full_fission_term[1:])[None, None, :] + + a = -lam * (t_eval - t2) + b = -lam * dt + + exponential_term = np.nan_to_num(exp(a) * -expm1(b)) + + mask = t_eval >= t2 + exponential_term *= mask + + scaled = F * exponential_term + fission_component = np.sum(scaled, axis=2) + return fission_component + + + def _get_insitu_counts(self, + times: np.ndarray[float | object], + parameters: np.ndarray[float | object] + ) -> np.ndarray[float | object]: + """ + Fit function during irradiation + + Parameters + ---------- + times : np.ndarray[float|object] + Times at which to evaluate the fit function + parameters : np.ndarray[float|object] + Fit parameters for the model + + Returns + ------- + counts : np.ndarray[float|object] + Array of counts for each time point (can be float or ufloat) + """ + + parameters = self._restructure_intermediate_yields(parameters) + yields = parameters[:self.num_groups] + half_lives = parameters[self.num_groups:] + try: + np.exp(-np.log(2)/half_lives[0]) + exp = np.exp + expm1 = np.expm1 + lam = np.log(2) / np.asarray(half_lives) + nu = np.asarray(yields) + except TypeError: + counts: np.ndarray[object] = np.zeros( + len(times), dtype=object) + lams = np.log(2) / half_lives + exp = unumpy.exp + expm1 = unumpy.expm1 + lam = unumpy.uarray([lam.n for lam in lams], + [lam.s for lam in lams]) + nu = unumpy.uarray([v.n for v in yields], + [v.s for v in yields]) + + fission_component = self._get_insitu_fission_component(times, lam, exp, expm1) + group_counts = nu[:, None] * fission_component + counts = np.sum(group_counts, axis=0) + return counts + def _pulse_fit_function(self, times: np.ndarray[float | object], parameters: np.ndarray[float | object] @@ -319,6 +419,45 @@ def _restructure_intermediate_yields(self, parameters: np.ndarray[float|object], actual_yields = fission_per_group * np.asarray(scaled_yields) actual_parameters = np.concatenate((actual_yields, half_lives)) return actual_parameters + + def _get_modified_counts_and_times(self, times: np.ndarray[float], + counts: np.ndarray[float]) -> tuple[np.ndarray[float], np.ndarray[float], np.ndarray[float], np.ndarray[float]]: + """ + Gets the counts and times during and post irradiation + + Parameters + ---------- + times : np.ndarray[float] + Times post-irradiation + counts : np.ndarray[float] + Counts post-irradiation + + Returns + ------- + times : np.ndarray[float] + Post-irradiation times + counts : np.ndarray[float] + Post-irradiation counts + insitu_times : np.ndarray[float] + Mid-irradiation times + insitu_counts : np.ndarray[float] + Mid-irradiation counts + """ + post_irrad_index = self.get_irrad_index(False) + full_data = self._get_times_and_rates() + insitu_mask = np.asarray(full_data['insitu_mask']) + insitu_times = np.cumsum(full_data['timesteps'][:post_irrad_index]) * insitu_mask + insitu_counts = np.asarray(counts[1:post_irrad_index+1]) * insitu_mask + if self.no_post_irrad: + counts = np.asarray([]) + times = np.asarray([]) + elif self.post_irrad_only: + assert np.all(insitu_times == 0.0) + assert np.all(insitu_counts == 0) + else: + counts = counts[post_irrad_index+1:] + times = np.asarray(times[post_irrad_index+1:]) - times[post_irrad_index] + return times, counts, insitu_times, insitu_counts def _nonlinear_least_squares(self, @@ -403,6 +542,8 @@ def _nonlinear_least_squares(self, x0 = np.concatenate((np.ones(self.num_groups) * y_noise, np.ones(self.num_groups) * hl_noise)) starts.append(x0) + times, counts, insitu_times, insitu_counts = self._get_modified_counts_and_times() + best = None for x0 in tqdm(starts): result = least_squares(self._residual_function, @@ -415,7 +556,7 @@ def _nonlinear_least_squares(self, xtol=1e-12, verbose=0, max_nfev=1e6, - args=(times, counts, count_err, fit_function)) + args=(times, counts, count_err, insitu_counts, insitu_times, fit_function)) if best is None or result.cost < best.cost: best = result result = best @@ -445,6 +586,8 @@ def _nonlinear_least_squares(self, post_data_save.append(post_data) count_sample = data['counts'] count_sample_err = data['sigma counts'] + times, counts, insitu_times, insitu_counts = self._get_modified_counts_and_times() + result = least_squares( self._residual_function, result.x, @@ -459,6 +602,8 @@ def _nonlinear_least_squares(self, times, count_sample, count_sample_err, + insitu_counts, + insitu_times, fit_function)) tracked_counts.append([i for i in count_sample]) sorted_params = self._sort_params_by_half_life(result.x) diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index 30fdcdfd..839a559b 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -297,6 +297,9 @@ def test_effective_fiss(): eff_fiss = grouper._get_effective_fission(lams, np.exp, np.expm1) stat_fiss = grouper._get_saturation_fission_term(lams[0], np.exp) assert np.isclose(eff_fiss, stat_fiss), "Fission terms not equal" + grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) + insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) + assert np.isclose(insitu_fiss[0][-1], eff_fiss), "Insitu fiss mismatch" grouper.full_fission_term = np.asarray([1, 1, 1]) hl = 250e3 @@ -305,25 +308,41 @@ def test_effective_fiss(): eff_fiss = grouper._get_effective_fission(lams, np.exp, np.expm1) stat_fiss = grouper._get_saturation_fission_term(lams[0], np.exp) assert np.isclose(eff_fiss, stat_fiss), "Fission terms not equal" + grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) + insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) + assert np.isclose(insitu_fiss[0][-1], eff_fiss), "Insitu fiss mismatch" + grouper.full_fission_term = np.asarray([1, 1, 1]) hl = 1e10 lams = np.asarray([np.log(2)/hl]) eff_fiss = grouper._get_effective_fission(lams, np.exp, np.expm1) / lams[0] stat_fiss = grouper._get_saturation_fission_term(lams[0], np.exp) / lams[0] assert np.isclose(eff_fiss, grouper.t_net), "Limit for long-lived incorrect" assert np.isclose(stat_fiss, grouper.t_net), "Limit for long-lived incorrect" + grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) + insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) / lams[0] + grouper.logger.error(f'{insitu_fiss = }') + assert np.isclose(insitu_fiss[0][-1], eff_fiss), "Limit for long-lived incorrect" + grouper.full_fission_term = np.asarray([1, 1, 1]) hl = 1e-10 lams = np.asarray([np.log(2)/hl]) eff_fiss = grouper._get_effective_fission(lams, np.exp, np.expm1) / lams[0] stat_fiss = grouper._get_saturation_fission_term(lams[0], np.exp) / lams[0] assert np.isclose(eff_fiss, 0), "Limit for long-lived incorrect" assert np.isclose(stat_fiss, 0), "Limit for long-lived incorrect" + grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) + insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) / lams[0] + assert np.isclose(insitu_fiss[0][-1], eff_fiss), "Limit for long-lived incorrect" + grouper.full_fission_term = np.asarray([1, 1, 1]) hl = [1e-10, 1e10] lams = np.asarray(np.log(2)/hl) eff_fiss = grouper._get_effective_fission(lams, np.exp, np.expm1) / lams assert np.allclose(eff_fiss, [0.0, grouper.t_net]), "Limit for multiple incorrect" + grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) + insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) / lams[:, None] + assert np.allclose(insitu_fiss[:, -1], eff_fiss), "Limit for multiple incorrect" @@ -354,9 +373,12 @@ def test_effective_fiss_many_ts(): eff_fiss = grouper._get_effective_fission(lams, np.exp, np.expm1) stat_fiss = grouper._get_saturation_fission_term(lam, np.exp) - + grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) + insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) + assert np.isclose(eff_fiss, 0.9424, rtol=1e-2), "Effective fission mismatch" assert np.isclose(stat_fiss, 0.666, rtol=1e-2), "Static effective fission mismatch" + assert np.isclose(insitu_fiss[0][-1], eff_fiss, rtol=1e-2), "Final insitu doesn't match effective" full_fission[(t_mid >= 1) & (t_mid < 2)] = 1.0 @@ -365,5 +387,8 @@ def test_effective_fiss_many_ts(): eff_fiss = grouper._get_effective_fission(lams, np.exp, np.expm1) stat_fiss = grouper._get_saturation_fission_term(lam, np.exp) + grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) + insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) - assert np.isclose(eff_fiss, stat_fiss, atol=1e-2) \ No newline at end of file + assert np.isclose(eff_fiss, stat_fiss, atol=1e-2) + assert np.isclose(eff_fiss, insitu_fiss[0][-1], atol=1e-2) \ No newline at end of file From 11860b6133c44fbe9093881357cd6ae764a47a4e Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Feb 2026 13:11:36 -0600 Subject: [PATCH 007/170] Add missing func args --- mosden/groupfit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 23ccdaed..99a7f587 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -542,7 +542,7 @@ def _nonlinear_least_squares(self, x0 = np.concatenate((np.ones(self.num_groups) * y_noise, np.ones(self.num_groups) * hl_noise)) starts.append(x0) - times, counts, insitu_times, insitu_counts = self._get_modified_counts_and_times() + times, counts, insitu_times, insitu_counts = self._get_modified_counts_and_times(times, counts) best = None for x0 in tqdm(starts): @@ -586,7 +586,7 @@ def _nonlinear_least_squares(self, post_data_save.append(post_data) count_sample = data['counts'] count_sample_err = data['sigma counts'] - times, counts, insitu_times, insitu_counts = self._get_modified_counts_and_times() + times, counts, insitu_times, insitu_counts = self._get_modified_counts_and_times(times, count_sample) result = least_squares( self._residual_function, From 4a4203eab3e936b6788afc278d901bb92efd360d Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Feb 2026 13:33:37 -0600 Subject: [PATCH 008/170] Fix bug for data indexing --- mosden/countrate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mosden/countrate.py b/mosden/countrate.py index 688e75da..c26461b0 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -182,7 +182,7 @@ def sample_parameter(val: ufloat, dist: str) -> float: mask_data = self._get_times_and_rates() use_times = np.concatenate(([0], np.cumsum(mask_data['timesteps']))) - num_data = len(list(self.concentration_data[net_similar_nucs[-1]].values())[0]) + num_data = len(list(self.concentration_data[net_similar_nucs[-1]].keys())) single_time_val = False if num_data == 1: single_time_val = True From 4978c2e0253e7860cc1986098866d35dbd577732 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Feb 2026 13:54:06 -0600 Subject: [PATCH 009/170] Add min timestep handling --- mosden/base.py | 70 +++++++++++++++++++++--------- mosden/templates/input_schema.json | 4 ++ mosden/utils/defaults.py | 3 +- tests/unit/test_base.py | 45 +++++++++++++++++++ 4 files changed, 101 insertions(+), 21 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index 8b7cd9f3..616b5cea 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -168,6 +168,31 @@ def time_track(self, starttime: float, modulename: str = '') -> None: self.logger.info(f'{modulename} took {round(time() - starttime, 3)}s') return None + def _set_cycle_times(self, residence_time: float) -> list[float]: + """ + Returns the list of times applied in OpenMC for each residence time + + Parameters + ---------- + residence_time : float + In-core or ex-core residence time + + Returns + ------- + values : list[float] + List of times to pass to OpenMC per residence + """ + min_value = np.min((self.openmc_settings['min_timestep'], residence_time)) + if min_value == 0.0: + return [] + min_cycles = int(np.floor(residence_time/min_value)) + remainder = residence_time - min_cycles * min_value + values = [min_value] * min_cycles + [remainder] + if np.isclose(values[-1], 0.0): + values = values[:-1] + return values + + def _get_times_and_rates(self, f_in: float = 1.0) -> dict[str, list[float|int]]: """ Calculates the time steps to evaluate in OpenMC, the source rates @@ -194,39 +219,41 @@ def _get_times_and_rates(self, f_in: float = 1.0) -> dict[str, list[float|int]]: current_time = 0 index_counter = 0 in_core = True + + incore_values = self._set_cycle_times(self.t_in) + excore_values = self._set_cycle_times(self.t_ex) + time_close = np.isclose(current_time, self.t_net) while current_time < self.t_net and not time_close: mask_val = 0 if in_core: - t = self.t_in + ts = incore_values region = 'incore' source = self.openmc_settings['source'] in_core = False if 'incore' in self.residual_masks: mask_val = 1 else: - t = self.t_ex + ts = excore_values region = 'excore' source = 0 in_core = True if 'excore' in self.residual_masks: mask_val = 1 - if t <= 0.0: - continue - - current_time += t - timesteps.append(t) - if (region in self.reprocess_locations) or self.chem_scaling: - removal_indeces.append(index_counter) - if self.flux_scaling: - source = self.openmc_settings['source'] * f_in - source_rates.append(source) - index_counter += 1 - time_close = np.isclose(current_time, self.t_net) - if 'all' in self.residual_masks: - mask_val = 1 - insitu_residual_mask.append(mask_val) + for t in ts: + current_time += t + timesteps.append(t) + if (region in self.reprocess_locations) or self.chem_scaling: + removal_indeces.append(index_counter) + if self.flux_scaling: + source = self.openmc_settings['source'] * f_in + source_rates.append(source) + index_counter += 1 + time_close = np.isclose(current_time, self.t_net) + if 'all' in self.residual_masks: + mask_val = 1 + insitu_residual_mask.append(mask_val) diff = sum(timesteps) - self.t_net timesteps[-1] = timesteps[-1] - diff @@ -302,13 +329,16 @@ def get_irrad_index(self, single_time_val: bool) -> int: """ if single_time_val: return 0 + + in_use_time = np.min((self.openmc_settings['min_timestep'], self.t_in)) + ex_use_time = np.min((self.openmc_settings['min_timestep'], self.t_ex)) if self.t_in == 0: - return int(np.ceil(self.t_net / self.t_ex)) + return int(np.ceil(self.t_net / ex_use_time)) if self.t_ex == 0: - return int(np.ceil(self.t_net / self.t_in)) + return int(np.ceil(self.t_net / in_use_time)) - cycle_time = self.t_in + self.t_ex + cycle_time = in_use_time + ex_use_time n_full = np.floor(self.t_net / cycle_time) post_irrad_index = int(2 * n_full) diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index 070a7602..808759d3 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -261,6 +261,10 @@ "write_nuyield_json": { "type": "boolean", "description": "Whether or not to write the delayed neutron yield output to a JSON file" + }, + "min_timestep": { + "type": "number", + "description": "The minimum time step size to use in OpenMC" } } } diff --git a/mosden/utils/defaults.py b/mosden/utils/defaults.py index c0dcccde..b7a7e152 100644 --- a/mosden/utils/defaults.py +++ b/mosden/utils/defaults.py @@ -69,7 +69,8 @@ "omc_dir": f'{current_dir}/omc', "run_omc": True, "write_fission_json": True, - "write_nuyield_json": True + "write_nuyield_json": True, + "min_timestep": 10 } }, "group_options": { diff --git a/tests/unit/test_base.py b/tests/unit/test_base.py index 85ac164a..53aa7fce 100644 --- a/tests/unit/test_base.py +++ b/tests/unit/test_base.py @@ -29,6 +29,28 @@ def test_get_irrad_index(): index = base.get_irrad_index(False) assert index == 3 +def test_get_irrad_index_with_min_time(): + input_path = './tests/unit/input/input.json' + base = BaseClass(input_path) + base.t_net = 5 + base.t_in = 2 + base.t_ex = 1 + index = base.get_irrad_index(False) + assert index == 3 + + base.openmc_settings['min_timestep'] = 1 + index = base.get_irrad_index(False) + assert index == 5 + + base.t_net = 30 + base.t_in = 1 + base.t_ex = 0 + base.openmc_settings['min_timestep'] = 0.25 + index = base.get_irrad_index(False) + assert index == 120 + + + def test_update_t_net(): input_path = './tests/unit/input/input.json' base = BaseClass(input_path) @@ -137,3 +159,26 @@ def test_times_rates_mask(): assert data['source_rates'][:10] == [1.0, 0]*5 assert data['removal_indeces'][:10] == list(np.arange(0, 10)) assert data['insitu_mask'] == [1]*10 + + +def test_openmc_time_setting(): + input_path = './tests/unit/input/input.json' + base = BaseClass(input_path) + base.openmc_settings['min_timestep'] = 1 + base.t_in = 1 + base.t_ex = 1 + base.t_net = 5 + in_vals = base._set_cycle_times(base.t_in) + assert np.allclose(in_vals, [1]) + + base.openmc_settings['min_timestep'] = 0.5 + in_vals = base._set_cycle_times(base.t_in) + assert np.allclose(in_vals, [0.5, 0.5]) + + base.openmc_settings['min_timestep'] = 0.3 + in_vals = base._set_cycle_times(base.t_in) + assert np.allclose(in_vals, [0.3, 0.3, 0.3, 0.1]) + + base.openmc_settings['min_timestep'] = 1/3 + in_vals = base._set_cycle_times(base.t_in) + assert np.allclose(in_vals, [1/3, 1/3, 1/3]) From 92f4cda901ebab73dcf96a0de8a5ef7b897786de Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Feb 2026 13:54:21 -0600 Subject: [PATCH 010/170] Clean up get modified counts func --- mosden/groupfit.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 99a7f587..c8d6e1c6 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -445,18 +445,20 @@ def _get_modified_counts_and_times(self, times: np.ndarray[float], """ post_irrad_index = self.get_irrad_index(False) full_data = self._get_times_and_rates() + if self.post_irrad_only: + return times, counts, np.array([]), np.array([]) + insitu_mask = np.asarray(full_data['insitu_mask']) insitu_times = np.cumsum(full_data['timesteps'][:post_irrad_index]) * insitu_mask insitu_counts = np.asarray(counts[1:post_irrad_index+1]) * insitu_mask + if self.no_post_irrad: counts = np.asarray([]) times = np.asarray([]) - elif self.post_irrad_only: - assert np.all(insitu_times == 0.0) - assert np.all(insitu_counts == 0) else: counts = counts[post_irrad_index+1:] times = np.asarray(times[post_irrad_index+1:]) - times[post_irrad_index] + return times, counts, insitu_times, insitu_counts From 673cb556123d4f524aa9f2ef4a62621be46f4b46 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 25 Feb 2026 10:58:20 -0600 Subject: [PATCH 011/170] Fix groupfit unit test --- tests/unit/test_groupfit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index 839a559b..6345ffdf 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -139,8 +139,8 @@ def run_grouper_fit_test(irrad_type: str, grouper: Grouper, test_half_lives = [data[key]['half_life'] for key in range(grouper.num_groups)] parameters = test_yields + test_half_lives adjusted_parameters = grouper._restructure_intermediate_yields(parameters) - residual_known = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, counts, None, fit_func)) - residual_previous = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, func_counts, None, fit_func)) + residual_known = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, counts, None, [], [], fit_func)) + residual_previous = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, func_counts, None, [], [], fit_func)) grouper.logger.error(f'{base_parameters = }') grouper.logger.error(f'{base_inter_parameters = }') grouper.logger.error(f'{parameters = }') From 65ad903074216750ff9c9e84836c779018a4fdf6 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 25 Feb 2026 11:00:34 -0600 Subject: [PATCH 012/170] Increase default min timestep and account for empty list for insitu times --- mosden/groupfit.py | 6 ++++-- mosden/utils/defaults.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index c8d6e1c6..f3df5740 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -82,8 +82,10 @@ def _residual_function( residual : float Value of the residual """ - insitu_residual = ((insitu_counts - self._get_insitu_counts(insitu_times, parameters)) / (insitu_counts)) - insitu_residual = np.nan_to_num(insitu_residual) + insitu_residual = [] + if len(insitu_times) != 0: + insitu_residual = ((insitu_counts - self._get_insitu_counts(insitu_times, parameters)) / (insitu_counts)) + insitu_residual = np.nan_to_num(insitu_residual) post_residual = (counts - fit_func(times, parameters)) / (counts) residual = np.concatenate((insitu_residual, post_residual)) return residual diff --git a/mosden/utils/defaults.py b/mosden/utils/defaults.py index b7a7e152..9c631c19 100644 --- a/mosden/utils/defaults.py +++ b/mosden/utils/defaults.py @@ -70,7 +70,7 @@ "run_omc": True, "write_fission_json": True, "write_nuyield_json": True, - "min_timestep": 10 + "min_timestep": 1e10 } }, "group_options": { From e256526ecf644940f5ce38620e5f2dacd1b76f60 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 25 Feb 2026 11:45:17 -0600 Subject: [PATCH 013/170] Add missing function params to test omc --- tests/integration/test_omc.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/integration/test_omc.py b/tests/integration/test_omc.py index 3f3a665a..940e3596 100644 --- a/tests/integration/test_omc.py +++ b/tests/integration/test_omc.py @@ -108,10 +108,10 @@ def test_in_ex_no_diff(): assert np.allclose(base_counts['counts'], intermediate_counts, rtol=1e-2), "Intermediate counts do not match" groups.irrad_type = 'saturation' - base_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, base_counts['counts'], None, fit_func)) + base_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, base_counts['counts'], None, [], [], fit_func)) fit_func = groups._saturation_fit_function assert np.allclose(base_counts['counts'], fit_func(groups.decay_times, base_params), rtol=1e-2), "Saturation counts do not match" - base_residual_saturation = np.linalg.norm(groups._residual_function(base_params, groups.decay_times, base_counts['counts'], None, fit_func)) + base_residual_saturation = np.linalg.norm(groups._residual_function(base_params, groups.decay_times, base_counts['counts'], None, [], [], fit_func)) assert base_residual_saturation > base_residual_intermediate, "Residual from intermediate fit should be better than saturation for stationary problem" yield_assertions(nuc_data, concs, groups, conc_data) @@ -161,13 +161,13 @@ def test_in_ex_no_diff(): intermediate_counts = fit_func(groups.decay_times, adjusted_flow_params) assert np.isclose(np.sum(adjusted_flow_params[:6]), intermediate_counts[0], rtol=1e-1), "Intermediate counts do not align with own parameters" assert np.allclose(flow_counts['counts'], intermediate_counts, rtol=1e-1), "Intermediate counts do not match" - flow_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_flow_params, groups.decay_times, flow_counts['counts'], None, fit_func)) - stat_params_on_flow_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, flow_counts['counts'], None, fit_func)) + flow_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_flow_params, groups.decay_times, flow_counts['counts'], None, [], [], fit_func)) + stat_params_on_flow_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, flow_counts['counts'], None, [], [], fit_func)) fit_func = groups._saturation_fit_function groups.irrad_type = 'saturation' assert np.allclose(flow_counts['counts'], fit_func(groups.decay_times, flow_params), rtol=1e-2), "Saturation counts do not match" - flow_residual_saturation = np.linalg.norm(groups._residual_function(flow_params, groups.decay_times, flow_counts['counts'], None, fit_func)) + flow_residual_saturation = np.linalg.norm(groups._residual_function(flow_params, groups.decay_times, flow_counts['counts'], None, [], [], fit_func)) assert flow_residual_saturation > flow_residual_intermediate, "Residual from intermediate fit should be better than saturation fit for (1,1) irradiation" assert flow_residual_intermediate < stat_params_on_flow_residual_intermediate, "Stationary params provide a superior fit than (1,1) params" From 2702aae994978dd755ee918fa707ce2663f1a48e Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 25 Feb 2026 15:23:05 -0600 Subject: [PATCH 014/170] Add extra check so tests pass --- tests/unit/test_base.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/unit/test_base.py b/tests/unit/test_base.py index 53aa7fce..70fb943d 100644 --- a/tests/unit/test_base.py +++ b/tests/unit/test_base.py @@ -67,6 +67,11 @@ def test_irrad_and_update(): base.t_net = 10 base.t_in = 5 base.t_ex = 5 + base.openmc_settings['min_timestep'] = 1e10 + assert base.t_in == 5 + assert base.t_ex == 5 + assert base.t_net == 10 + assert base.openmc_settings['min_timestep'] > 5 index = base.get_irrad_index(False) assert index == 2 @@ -118,9 +123,15 @@ def test_times_rates_mask(): base.t_in = 1 base.t_ex = 1 base.t_net = 10 + base.openmc_settings['min_timestep'] = 1e10 base.flux_scaling = False assert not base.flux_scaling data = base._get_times_and_rates() + assert base.t_in == 1 + assert base.t_ex == 1 + assert base.t_net == 10 + assert base.openmc_settings['min_timestep'] > 1 + assert base._set_cycle_times(1) == [1] assert data['timesteps'][:10] == [1]*10 assert data['source_rates'][:10] == [1.0, 0]*5 From 0796497904bc25b74847adfd2482b7924771e9f8 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 26 Feb 2026 11:28:40 -0600 Subject: [PATCH 015/170] Fix schema and update appendixD analysis --- examples/prelim_results/appendixD/indepth_analysis.py | 10 ++++++++++ mosden/templates/input_schema.json | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 examples/prelim_results/appendixD/indepth_analysis.py diff --git a/examples/prelim_results/appendixD/indepth_analysis.py b/examples/prelim_results/appendixD/indepth_analysis.py new file mode 100644 index 00000000..07769cce --- /dev/null +++ b/examples/prelim_results/appendixD/indepth_analysis.py @@ -0,0 +1,10 @@ + + + + +if __name__ == '__main__': + irrad_selection = 0 + data_selection = 0 + irrad_types = ['pulse', 'saturation', 'res-combined', 'long-short'] + data_types = ['post-irrad', 'all', 'incore'] + diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index 808759d3..a412c396 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -84,7 +84,7 @@ "description": "Path to the half-life unprocessed data", "oneOf": [ { - "enum": ["iaea/eval.csv", "endfb71/decay/", "iaea/eval_test.csv"] + "enum": ["iaea/eval.csv", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv"] }, { "pattern": "^([A-Za-z0-9]+/)?omcchain/.+\\.xml" @@ -98,12 +98,12 @@ "emission_probability": { "type": "string", "description": "Path to the emission probability data", - "enum": ["iaea/eval.csv", "endfb71/decay/", "iaea/eval_test.csv"] + "enum": ["iaea/eval.csv", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv"] }, "fission_yield": { "type": "string", "description": "Path to the fission yield data", - "pattern": "^(?:.*/)?(endfb71/nfy/|jeff311/nfpy/|omcchain/chain_test.xml)$" + "pattern": "^(?:.*/)?(endfb71/nfy/|jeff311/nfpy/|omcchain/chain_test.xml|omcchain/four_dnp_test.xml)$" }, "decay_time_spacing": { "type": "string", From 798dbe9687ff60e667010f0c5dea81278e9bfd49 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 26 Feb 2026 11:52:26 -0600 Subject: [PATCH 016/170] Create OMC analysis for appendixD --- .../appendixD/input_analysis.json | 51 ++++++++++++++++++ .../omc_analysis/indepth_analysis.py | 51 ++++++++++++++++++ .../omc_analysis/input_analysis.json | 52 +++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 examples/prelim_results/appendixD/input_analysis.json create mode 100644 examples/prelim_results/appendixD/omc_analysis/indepth_analysis.py create mode 100644 examples/prelim_results/appendixD/omc_analysis/input_analysis.json diff --git a/examples/prelim_results/appendixD/input_analysis.json b/examples/prelim_results/appendixD/input_analysis.json new file mode 100644 index 00000000..967e80c2 --- /dev/null +++ b/examples/prelim_results/appendixD/input_analysis.json @@ -0,0 +1,51 @@ +{ + "name": "saturation_four_dnp", + "file_options": { + "overwrite": { + "preprocessing": true, + "concentrations": true, + "count_rate": true, + "group_fitting": true, + "postprocessing": true + }, + "unprocessed_data_dir": "../../../tests/integration/test-data", + "processed_data_dir": "./", + "output_dir": "./", + "log_level": 15 + }, + "data_options": { + "half_life": "iaea/four_dnp_test.csv", + "cross_section": "", + "emission_probability": "iaea/four_dnp_test.csv", + "fission_yield": "omcchain/four_dnp_test.xml", + "decay_time_spacing": "log", + "temperature_K": 920, + "density_g_cm3": 2.3275, + "energy_MeV": 0.0253e-6, + "fissile_fractions": { + "U235": 1.0 + } + }, + "modeling_options": { + "parent_feeding": false, + "concentration_handling": "IFY", + "count_rate_handling": "data", + "reprocessing_locations": ["excore"], + "reprocessing": { + "Xe": 0.0 + }, + "irrad_type": "saturation", + "incore_s": 10, + "excore_s": 0, + "net_irrad_s": 1e6, + "decay_time": 1200, + "num_decay_times": 300 + }, + "group_options": { + "num_groups": 1, + "method": "nlls", + "samples": 1, + "sample_func": "normal", + "seed": 1 + } +} \ No newline at end of file diff --git a/examples/prelim_results/appendixD/omc_analysis/indepth_analysis.py b/examples/prelim_results/appendixD/omc_analysis/indepth_analysis.py new file mode 100644 index 00000000..8aa079ed --- /dev/null +++ b/examples/prelim_results/appendixD/omc_analysis/indepth_analysis.py @@ -0,0 +1,51 @@ +from mosden.utils.input_handler import InputHandler +from mosden.base import BaseClass +import json + + +#def analysis_solver() + +def modify_write_input(input_file, irrad, data_val): + base_input = InputHandler(input_file).read_input() + + if irrad == 'pulse': + base_input['modeling_options']['incore_s'] = 0.025 + base_input['modeling_options']['net_irrad_s'] = 0.025 + elif irrad == 'saturation': + base_input['modeling_options']['incore_s'] = 1e5 + base_input['modeling_options']['incore_s'] = 1e6 + elif irrad == 'res-combined': + # Instead of separating pulse and saturation, put the data together + # and solve all at once. + # For this, run BOTH pulse and saturation, record the data, then have + # a function here to manually solve for the best fit + raise NotImplementedError + elif irrad == 'long-short': + # Run BOTH pulse and saturation, then take the longest-lived from + # saturation and shortest-lived from pulse. (Keepin approach) + raise NotImplementedError + + base_input['modeling_options']['residual_handling'] = data_val + with open(f'./input_{irrad}_{data_val}.json', 'w') as f: + json.dump(base_input, f, indent=4) + return + + + +if __name__ == '__main__': + input_file = './input_analysis.json' + irrad_selection = 0 + data_selection = 0 + irrad_types = ['pulse', 'saturation', 'res-combined', 'long-short'] + data_types = ['post-irrad', 'all', 'incore'] + + original_input = InputHandler(input_file).read_input() + + base = BaseClass(input_file) + irrad = irrad_types[irrad_selection] + data_val = data_types[data_selection] + + modify_write_input(input_file, irrad, data_val) + + + diff --git a/examples/prelim_results/appendixD/omc_analysis/input_analysis.json b/examples/prelim_results/appendixD/omc_analysis/input_analysis.json new file mode 100644 index 00000000..54841b68 --- /dev/null +++ b/examples/prelim_results/appendixD/omc_analysis/input_analysis.json @@ -0,0 +1,52 @@ +{ + "name": "analysis_four_dnp", + "file_options": { + "overwrite": { + "preprocessing": true, + "concentrations": true, + "count_rate": true, + "group_fitting": true, + "postprocessing": true, + "logger": true + }, + "unprocessed_data_dir": "../../../tests/integration/test-data", + "processed_data_dir": "./", + "output_dir": "./", + "log_level": 15 + }, + "data_options": { + "half_life": "iaea/four_dnp_test.csv", + "cross_section": "", + "emission_probability": "iaea/four_dnp_test.csv", + "fission_yield": "omcchain/four_dnp_test.xml", + "decay_time_spacing": "log", + "temperature_K": 920, + "density_g_cm3": 2.3275, + "energy_MeV": 0.0253e-6, + "fissile_fractions": { + "U235": 1.0 + } + }, + "modeling_options": { + "concentration_handling": "OMC", + "count_rate_handling": "data", + "residual_handling": ["post-irrad"], + "reprocessing_locations": ["excore"], + "reprocessing": { + "Xe": 0.0 + }, + "irrad_type": "intermediate", + "incore_s": 10, + "excore_s": 0, + "net_irrad_s": 1e6, + "decay_time": 1200, + "num_decay_times": 100 + }, + "group_options": { + "num_groups": 4, + "method": "nlls", + "samples": 1, + "sample_func": "normal", + "seed": 1 + } +} \ No newline at end of file From daf02da1a50a77fb9dee4727deb68315985c9d08 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 26 Feb 2026 13:10:51 -0600 Subject: [PATCH 017/170] Add indepth analysis --- .../appendixD/indepth_analysis.py | 131 +++++++++++++++++- .../appendixD/input_analysis.json | 51 ------- .../omc_analysis/indepth_analysis.py | 51 ------- .../omc_analysis/input_analysis.json | 52 ------- 4 files changed, 126 insertions(+), 159 deletions(-) delete mode 100644 examples/prelim_results/appendixD/input_analysis.json delete mode 100644 examples/prelim_results/appendixD/omc_analysis/indepth_analysis.py delete mode 100644 examples/prelim_results/appendixD/omc_analysis/input_analysis.json diff --git a/examples/prelim_results/appendixD/indepth_analysis.py b/examples/prelim_results/appendixD/indepth_analysis.py index 07769cce..4eefbc67 100644 --- a/examples/prelim_results/appendixD/indepth_analysis.py +++ b/examples/prelim_results/appendixD/indepth_analysis.py @@ -1,10 +1,131 @@ +import numpy as np +from scipy.optimize import least_squares +def residual_func(parameters, tot_times, counts, post_residual, insitu_residual, split_index): + calculated_counts = fit_func(tot_times, parameters, split_index) + residual_val = (counts - calculated_counts) / counts + if post_residual and insitu_residual: + residual = residual_val + elif post_residual: + residual = residual_val[split_index:] + elif insitu_residual: + residual = residual_val[:split_index] + else: + raise ValueError + return residual +def fit_func(tot_times, parameters, split_index): + num_groups = int(len(parameters) / 2) + yields = np.asarray(parameters[:num_groups]) + half_lives = parameters[num_groups:] + lam = np.log(2) / half_lives + # Insitu component + times = tot_times[:split_index] + t = np.asarray(times) + t1 = times[:-1] + t2 = times[1:] + dt = t2 - t1 + lam = lam[:, None, None] + t_eval = t[None, :, None] + t2 = t2[None, None, :] + dt = dt[None, None, :] -if __name__ == '__main__': - irrad_selection = 0 - data_selection = 0 - irrad_types = ['pulse', 'saturation', 'res-combined', 'long-short'] - data_types = ['post-irrad', 'all', 'incore'] + a = -lam * (t_eval - t2) + b = -lam * dt + exponential_term = np.nan_to_num(np.exp(a) * -np.expm1(b)) + + mask = t_eval >= t2 + exponential_term *= mask + + scaled = exponential_term + fission_component = np.sum(scaled, axis=2) + insitu_counts = np.sum(yields[:, None] * fission_component, axis=0) + + + + t1 = times[:-1] + t2 = times[1:] + dt = t2 - t1 + lam = np.log(2) / half_lives + a = -lam[:, None] * np.asarray(times[-1] - t2)[None, :] + b = -lam[:, None] * dt[None, :] + exponential_term = np.exp(a) * -np.expm1(b) + scaled_fission = exponential_term + fission_component = np.sum(scaled_fission, axis=1) + + + post_irrad_times = tot_times[split_index:] + count_exponential = np.exp(-lam[:, None] * post_irrad_times[None, :]) + post_counts = np.sum(yields[:, None] * count_exponential * fission_component[:, None], axis=0) + + counts = np.concatenate((insitu_counts, post_counts)) + return counts + + +yields = [0.25, 0.25, 0.25, 0.25] +decay_constants = [0.001, 0.01, 0.1, 1] + +# I want pulse, saturation, intermediate irradiation data +# I want the count rates collected at each point in time for that data +# Then, I want to be able to combine it in different ways +# pulse-post-irrad; pulse short-lived saturation long-lived; combined residual solve, etc. +post_residual = False +insitu_residual = True + + +fission_dt = 1 +fission_tf = 10 +decay_tf = 600 +num_decay_times = 10 +num_groups = 4 + + +min_half_life = 1e-3 +max_half_life = 1e3 +max_yield = 1.0 +lower_bounds = np.concatenate( + (np.zeros( + num_groups), np.ones( + num_groups) * min_half_life)) +upper_bounds = np.concatenate( + (np.ones( + num_groups) * + max_yield, + np.ones( + num_groups) * + max_half_life)) +bounds = (lower_bounds, upper_bounds) +initial_fit = (upper_bounds + lower_bounds) / 2 + + +fission_times = np.arange(0, fission_tf+fission_dt, fission_dt) +decay_times = np.geomspace(1e-2, decay_tf, num_decay_times) +tot_times = np.concatenate((fission_times, decay_times)) +split_index = len(fission_times) +concs = np.zeros((len(tot_times), 4)) +counts = np.zeros((len(tot_times), 4)) +for group, (y, lam) in enumerate(zip(yields, decay_constants)): + concs[:split_index, group] = y/lam * (1 - np.exp(-lam * fission_times)) + concs[split_index:, group] = ((y/lam) * (1 - np.exp(-lam * fission_times[-1]))) * np.exp(-lam * decay_times) + counts[:split_index, group] = lam * y/lam * (1 - np.exp(-lam * fission_times)) + counts[split_index:, group] = lam * ((y/lam) * (1 - np.exp(-lam * fission_times[-1]))) * np.exp(-lam * decay_times) +counts = np.sum(counts, axis=1) + +# Check fit functions +#temp_val = fit_func(tot_times, np.concatenate((yields, np.log(2)/decay_constants)), split_index) +#print(counts) +#print(temp_val) + +result = least_squares(residual_func, initial_fit, bounds=bounds, method='trf', + ftol=1e-12, gtol=1e-12, xtol=1e-12, + verbose=0, max_nfev=1e6, + args=(tot_times, counts, post_residual, insitu_residual, split_index)) +yields = result.x[:num_groups] +half_lives = result.x[num_groups:] +paired = zip(yields, half_lives) +sorted_pairs = sorted(paired, reverse=True) +yields, half_lives = zip(*sorted_pairs) +print(f'{yields = }') +print(f'{half_lives = }') \ No newline at end of file diff --git a/examples/prelim_results/appendixD/input_analysis.json b/examples/prelim_results/appendixD/input_analysis.json deleted file mode 100644 index 967e80c2..00000000 --- a/examples/prelim_results/appendixD/input_analysis.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "saturation_four_dnp", - "file_options": { - "overwrite": { - "preprocessing": true, - "concentrations": true, - "count_rate": true, - "group_fitting": true, - "postprocessing": true - }, - "unprocessed_data_dir": "../../../tests/integration/test-data", - "processed_data_dir": "./", - "output_dir": "./", - "log_level": 15 - }, - "data_options": { - "half_life": "iaea/four_dnp_test.csv", - "cross_section": "", - "emission_probability": "iaea/four_dnp_test.csv", - "fission_yield": "omcchain/four_dnp_test.xml", - "decay_time_spacing": "log", - "temperature_K": 920, - "density_g_cm3": 2.3275, - "energy_MeV": 0.0253e-6, - "fissile_fractions": { - "U235": 1.0 - } - }, - "modeling_options": { - "parent_feeding": false, - "concentration_handling": "IFY", - "count_rate_handling": "data", - "reprocessing_locations": ["excore"], - "reprocessing": { - "Xe": 0.0 - }, - "irrad_type": "saturation", - "incore_s": 10, - "excore_s": 0, - "net_irrad_s": 1e6, - "decay_time": 1200, - "num_decay_times": 300 - }, - "group_options": { - "num_groups": 1, - "method": "nlls", - "samples": 1, - "sample_func": "normal", - "seed": 1 - } -} \ No newline at end of file diff --git a/examples/prelim_results/appendixD/omc_analysis/indepth_analysis.py b/examples/prelim_results/appendixD/omc_analysis/indepth_analysis.py deleted file mode 100644 index 8aa079ed..00000000 --- a/examples/prelim_results/appendixD/omc_analysis/indepth_analysis.py +++ /dev/null @@ -1,51 +0,0 @@ -from mosden.utils.input_handler import InputHandler -from mosden.base import BaseClass -import json - - -#def analysis_solver() - -def modify_write_input(input_file, irrad, data_val): - base_input = InputHandler(input_file).read_input() - - if irrad == 'pulse': - base_input['modeling_options']['incore_s'] = 0.025 - base_input['modeling_options']['net_irrad_s'] = 0.025 - elif irrad == 'saturation': - base_input['modeling_options']['incore_s'] = 1e5 - base_input['modeling_options']['incore_s'] = 1e6 - elif irrad == 'res-combined': - # Instead of separating pulse and saturation, put the data together - # and solve all at once. - # For this, run BOTH pulse and saturation, record the data, then have - # a function here to manually solve for the best fit - raise NotImplementedError - elif irrad == 'long-short': - # Run BOTH pulse and saturation, then take the longest-lived from - # saturation and shortest-lived from pulse. (Keepin approach) - raise NotImplementedError - - base_input['modeling_options']['residual_handling'] = data_val - with open(f'./input_{irrad}_{data_val}.json', 'w') as f: - json.dump(base_input, f, indent=4) - return - - - -if __name__ == '__main__': - input_file = './input_analysis.json' - irrad_selection = 0 - data_selection = 0 - irrad_types = ['pulse', 'saturation', 'res-combined', 'long-short'] - data_types = ['post-irrad', 'all', 'incore'] - - original_input = InputHandler(input_file).read_input() - - base = BaseClass(input_file) - irrad = irrad_types[irrad_selection] - data_val = data_types[data_selection] - - modify_write_input(input_file, irrad, data_val) - - - diff --git a/examples/prelim_results/appendixD/omc_analysis/input_analysis.json b/examples/prelim_results/appendixD/omc_analysis/input_analysis.json deleted file mode 100644 index 54841b68..00000000 --- a/examples/prelim_results/appendixD/omc_analysis/input_analysis.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "analysis_four_dnp", - "file_options": { - "overwrite": { - "preprocessing": true, - "concentrations": true, - "count_rate": true, - "group_fitting": true, - "postprocessing": true, - "logger": true - }, - "unprocessed_data_dir": "../../../tests/integration/test-data", - "processed_data_dir": "./", - "output_dir": "./", - "log_level": 15 - }, - "data_options": { - "half_life": "iaea/four_dnp_test.csv", - "cross_section": "", - "emission_probability": "iaea/four_dnp_test.csv", - "fission_yield": "omcchain/four_dnp_test.xml", - "decay_time_spacing": "log", - "temperature_K": 920, - "density_g_cm3": 2.3275, - "energy_MeV": 0.0253e-6, - "fissile_fractions": { - "U235": 1.0 - } - }, - "modeling_options": { - "concentration_handling": "OMC", - "count_rate_handling": "data", - "residual_handling": ["post-irrad"], - "reprocessing_locations": ["excore"], - "reprocessing": { - "Xe": 0.0 - }, - "irrad_type": "intermediate", - "incore_s": 10, - "excore_s": 0, - "net_irrad_s": 1e6, - "decay_time": 1200, - "num_decay_times": 100 - }, - "group_options": { - "num_groups": 4, - "method": "nlls", - "samples": 1, - "sample_func": "normal", - "seed": 1 - } -} \ No newline at end of file From 96ad3f3ccbc84c39546f683fb47ef0b518d38d8a Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 26 Feb 2026 14:59:54 -0600 Subject: [PATCH 018/170] Add OMC option to appendixD --- examples/prelim_results/appendixD/README.md | 27 +++- .../appendixD/indepth_analysis.py | 131 ------------------ .../prelim_results/appendixD/input_omc.json | 51 +++++++ .../appendixD/omc_fissions_p.json | 14 ++ .../appendixD/omc_fissions_s.json | 14 ++ 5 files changed, 105 insertions(+), 132 deletions(-) delete mode 100644 examples/prelim_results/appendixD/indepth_analysis.py create mode 100644 examples/prelim_results/appendixD/input_omc.json create mode 100644 examples/prelim_results/appendixD/omc_fissions_p.json create mode 100644 examples/prelim_results/appendixD/omc_fissions_s.json diff --git a/examples/prelim_results/appendixD/README.md b/examples/prelim_results/appendixD/README.md index 18ca8b17..c847017a 100644 --- a/examples/prelim_results/appendixD/README.md +++ b/examples/prelim_results/appendixD/README.md @@ -1,3 +1,5 @@ +## Pulse and saturation input files + As of November 3, 2025, the independent fission yield is required to run the saturation simulation with custom nuclides (due to the NFY data requirement). To get around this, simply run the saturation model, adjust the concentrations @@ -5,4 +7,27 @@ to be 250 for A, 25 for B, 2.5 for C, and 0.25 for D. Rerun the count rate using `mosden -cnt input_sat.json`. Then, run `mosden -g input_sat.json` followed by `mosden --post input_sat.json` in order to use those values. -The pulse simulation can be fully run as-is with no modifications. \ No newline at end of file +The pulse simulation can be fully run as-is with no modifications. + +## OMC input file + +Run this only as `mosden -g input_omc.json`. +Make sure there is a file named `omc_fission.json` containing the fission history +of interest. +Configure the different irradiation types before starting (as described previously). +No change to the input file is necessary. + +### Pulse irradiation +For a pulse irradiation, the concentrations should be equal to the yield over +the number of fissions (sufficiently short irradiation such that there is no +decay). This means if there is one total fission, the concentration should +equal the yield. For a final irradiation time of 0.00001, the fission rate +should be 100000 over that time. +This is provided as `omc_fissions_p.json`, simply rename it to `omc_fission.json`. + + +### Saturation Irradiation +For a saturation irradiation, the concentrations should be equal to the yield over +the decay constant (assuming one fission per second). +For a final irradiation time of 100000, the fission rate should be 100000 over that time. +This is provided as `omc_fissions_s.json`, simply rename it to `omc_fission.json`. \ No newline at end of file diff --git a/examples/prelim_results/appendixD/indepth_analysis.py b/examples/prelim_results/appendixD/indepth_analysis.py deleted file mode 100644 index 4eefbc67..00000000 --- a/examples/prelim_results/appendixD/indepth_analysis.py +++ /dev/null @@ -1,131 +0,0 @@ -import numpy as np -from scipy.optimize import least_squares - -def residual_func(parameters, tot_times, counts, post_residual, insitu_residual, split_index): - calculated_counts = fit_func(tot_times, parameters, split_index) - residual_val = (counts - calculated_counts) / counts - if post_residual and insitu_residual: - residual = residual_val - elif post_residual: - residual = residual_val[split_index:] - elif insitu_residual: - residual = residual_val[:split_index] - else: - raise ValueError - return residual - -def fit_func(tot_times, parameters, split_index): - num_groups = int(len(parameters) / 2) - yields = np.asarray(parameters[:num_groups]) - half_lives = parameters[num_groups:] - lam = np.log(2) / half_lives - # Insitu component - times = tot_times[:split_index] - t = np.asarray(times) - t1 = times[:-1] - t2 = times[1:] - dt = t2 - t1 - - lam = lam[:, None, None] - t_eval = t[None, :, None] - t2 = t2[None, None, :] - dt = dt[None, None, :] - - a = -lam * (t_eval - t2) - b = -lam * dt - - exponential_term = np.nan_to_num(np.exp(a) * -np.expm1(b)) - - mask = t_eval >= t2 - exponential_term *= mask - - scaled = exponential_term - fission_component = np.sum(scaled, axis=2) - insitu_counts = np.sum(yields[:, None] * fission_component, axis=0) - - - - t1 = times[:-1] - t2 = times[1:] - dt = t2 - t1 - lam = np.log(2) / half_lives - a = -lam[:, None] * np.asarray(times[-1] - t2)[None, :] - b = -lam[:, None] * dt[None, :] - exponential_term = np.exp(a) * -np.expm1(b) - scaled_fission = exponential_term - fission_component = np.sum(scaled_fission, axis=1) - - - post_irrad_times = tot_times[split_index:] - count_exponential = np.exp(-lam[:, None] * post_irrad_times[None, :]) - post_counts = np.sum(yields[:, None] * count_exponential * fission_component[:, None], axis=0) - - counts = np.concatenate((insitu_counts, post_counts)) - return counts - - -yields = [0.25, 0.25, 0.25, 0.25] -decay_constants = [0.001, 0.01, 0.1, 1] - -# I want pulse, saturation, intermediate irradiation data -# I want the count rates collected at each point in time for that data -# Then, I want to be able to combine it in different ways -# pulse-post-irrad; pulse short-lived saturation long-lived; combined residual solve, etc. -post_residual = False -insitu_residual = True - - -fission_dt = 1 -fission_tf = 10 -decay_tf = 600 -num_decay_times = 10 -num_groups = 4 - - -min_half_life = 1e-3 -max_half_life = 1e3 -max_yield = 1.0 -lower_bounds = np.concatenate( - (np.zeros( - num_groups), np.ones( - num_groups) * min_half_life)) -upper_bounds = np.concatenate( - (np.ones( - num_groups) * - max_yield, - np.ones( - num_groups) * - max_half_life)) -bounds = (lower_bounds, upper_bounds) -initial_fit = (upper_bounds + lower_bounds) / 2 - - -fission_times = np.arange(0, fission_tf+fission_dt, fission_dt) -decay_times = np.geomspace(1e-2, decay_tf, num_decay_times) -tot_times = np.concatenate((fission_times, decay_times)) -split_index = len(fission_times) -concs = np.zeros((len(tot_times), 4)) -counts = np.zeros((len(tot_times), 4)) -for group, (y, lam) in enumerate(zip(yields, decay_constants)): - concs[:split_index, group] = y/lam * (1 - np.exp(-lam * fission_times)) - concs[split_index:, group] = ((y/lam) * (1 - np.exp(-lam * fission_times[-1]))) * np.exp(-lam * decay_times) - counts[:split_index, group] = lam * y/lam * (1 - np.exp(-lam * fission_times)) - counts[split_index:, group] = lam * ((y/lam) * (1 - np.exp(-lam * fission_times[-1]))) * np.exp(-lam * decay_times) -counts = np.sum(counts, axis=1) - -# Check fit functions -#temp_val = fit_func(tot_times, np.concatenate((yields, np.log(2)/decay_constants)), split_index) -#print(counts) -#print(temp_val) - -result = least_squares(residual_func, initial_fit, bounds=bounds, method='trf', - ftol=1e-12, gtol=1e-12, xtol=1e-12, - verbose=0, max_nfev=1e6, - args=(tot_times, counts, post_residual, insitu_residual, split_index)) -yields = result.x[:num_groups] -half_lives = result.x[num_groups:] -paired = zip(yields, half_lives) -sorted_pairs = sorted(paired, reverse=True) -yields, half_lives = zip(*sorted_pairs) -print(f'{yields = }') -print(f'{half_lives = }') \ No newline at end of file diff --git a/examples/prelim_results/appendixD/input_omc.json b/examples/prelim_results/appendixD/input_omc.json new file mode 100644 index 00000000..718f8970 --- /dev/null +++ b/examples/prelim_results/appendixD/input_omc.json @@ -0,0 +1,51 @@ +{ + "name": "omc_four_dnp", + "file_options": { + "overwrite": { + "preprocessing": true, + "concentrations": true, + "count_rate": true, + "group_fitting": true, + "postprocessing": true + }, + "unprocessed_data_dir": "../../../tests/integration/test-data", + "processed_data_dir": "./", + "output_dir": "./", + "log_level": 15 + }, + "data_options": { + "half_life": "iaea/four_dnp_test.csv", + "cross_section": "", + "emission_probability": "iaea/four_dnp_test.csv", + "fission_yield": "omcchain/four_dnp_test.xml", + "decay_time_spacing": "log", + "temperature_K": 920, + "density_g_cm3": 2.3275, + "energy_MeV": 0.0253e-6, + "fissile_fractions": { + "U235": 1.0 + } + }, + "modeling_options": { + "parent_feeding": false, + "concentration_handling": "OMC", + "count_rate_handling": "data", + "reprocessing_locations": ["excore"], + "reprocessing": { + "Xe": 0.0 + }, + "irrad_type": "intermediate", + "incore_s": 0.00001, + "excore_s": 0, + "net_irrad_s": 0.00004, + "decay_time": 1200, + "num_decay_times": 300 + }, + "group_options": { + "num_groups": 4, + "method": "nlls", + "samples": 1, + "sample_func": "normal", + "seed": 1 + } +} \ No newline at end of file diff --git a/examples/prelim_results/appendixD/omc_fissions_p.json b/examples/prelim_results/appendixD/omc_fissions_p.json new file mode 100644 index 00000000..26e947c5 --- /dev/null +++ b/examples/prelim_results/appendixD/omc_fissions_p.json @@ -0,0 +1,14 @@ +{ + "fissions": { + "U235": [ + 100000 + ], + "net": [ + 100000 + ] + }, + "times": [ + 0.0, + 0.00001 + ] +} \ No newline at end of file diff --git a/examples/prelim_results/appendixD/omc_fissions_s.json b/examples/prelim_results/appendixD/omc_fissions_s.json new file mode 100644 index 00000000..cafc992c --- /dev/null +++ b/examples/prelim_results/appendixD/omc_fissions_s.json @@ -0,0 +1,14 @@ +{ + "fissions": { + "U235": [ + 100000 + ], + "net": [ + 100000 + ] + }, + "times": [ + 0.0, + 100000 + ] +} \ No newline at end of file From aaa8e48466e4f18d00922acc9d67c92ed384ec44 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 26 Feb 2026 15:00:28 -0600 Subject: [PATCH 019/170] Specify number groups in input file --- examples/prelim_results/appendixD/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/prelim_results/appendixD/README.md b/examples/prelim_results/appendixD/README.md index c847017a..7b5470c2 100644 --- a/examples/prelim_results/appendixD/README.md +++ b/examples/prelim_results/appendixD/README.md @@ -15,7 +15,7 @@ Run this only as `mosden -g input_omc.json`. Make sure there is a file named `omc_fission.json` containing the fission history of interest. Configure the different irradiation types before starting (as described previously). -No change to the input file is necessary. +No change to the input file is necessary aside from the number of groups. ### Pulse irradiation For a pulse irradiation, the concentrations should be equal to the yield over From 11a56827c85ba124fde0118d50f43e01dfc7f0ae Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Feb 2026 12:42:08 -0600 Subject: [PATCH 020/170] Add PRK example analysis --- .../appendixD_realDNPs/prk/README.md | 10 + .../appendixD_realDNPs/prk/input.json | 28 +++ .../appendixD_realDNPs/prk/main.py | 218 ++++++++++++++++++ 3 files changed, 256 insertions(+) create mode 100644 examples/phd_results/appendixD_realDNPs/prk/README.md create mode 100644 examples/phd_results/appendixD_realDNPs/prk/input.json create mode 100644 examples/phd_results/appendixD_realDNPs/prk/main.py diff --git a/examples/phd_results/appendixD_realDNPs/prk/README.md b/examples/phd_results/appendixD_realDNPs/prk/README.md new file mode 100644 index 00000000..34569460 --- /dev/null +++ b/examples/phd_results/appendixD_realDNPs/prk/README.md @@ -0,0 +1,10 @@ +## Running PRKs + +Adjust the `input.json` file. +The parameters from MoSDeN have to be scaled to the form acceptable by a PRK +solver. +An assumption is made that the importance term is one (which means the effective +delayed neutron fraction is equal to the delayed neutron fraction, so the +yields from MoSDeN just need to be scaled by the total neutron yield). +If the parameters provided are already scaled, then set the neutrons per fission +to 1. \ No newline at end of file diff --git a/examples/phd_results/appendixD_realDNPs/prk/input.json b/examples/phd_results/appendixD_realDNPs/prk/input.json new file mode 100644 index 00000000..032e7187 --- /dev/null +++ b/examples/phd_results/appendixD_realDNPs/prk/input.json @@ -0,0 +1,28 @@ +{ + "selections": ["keepin"], + "problem": "step", + "euler_mode": "backward", + "time_steps": [1e-3], + "tf": 2, + "keepin": { + "yields": [0.00052, 0.00346, 0.00310, 0.00624, 0.00182, 0.00066], + "hls": [55.89897, 22.72614, 6.24457, 2.30281, 0.60802, 0.23028], + "gen_time": 2e-5, + "neutrons_per_fission": 2.4, + "rho_max_dollars": 0.5, + "rho_amplitude": 750e-5, + "rho_frequency": 100, + "p0": 1 + }, + "pulse": { + "yields": [0.00052, 0.00346, 0.00310, 0.00624, 0.00182, 0.00066], + "hls": [55.89897, 22.72614, 6.24457, 2.30281, 0.60802, 0.23028], + "gen_time": 2e-5, + "neutrons_per_fission": 2.4, + "rho_max_dollars": 0.5, + "rho_amplitude": 750e-5, + "rho_frequency": 100, + "p0": 1 + } + } + \ No newline at end of file diff --git a/examples/phd_results/appendixD_realDNPs/prk/main.py b/examples/phd_results/appendixD_realDNPs/prk/main.py new file mode 100644 index 00000000..07d36a06 --- /dev/null +++ b/examples/phd_results/appendixD_realDNPs/prk/main.py @@ -0,0 +1,218 @@ +import json +import numpy as np +import pandas as pd +import copy +import matplotlib.pyplot as plt +plt.style.use('mosden.plotting') +from mosden.postprocessing import PostProcess + + +class PRKE: + def __init__(self, input_path: str, output_path: str): + self.post = PostProcess(input_path) + self.input_path = input_path + self.output_path = output_path + self.data = self._parse_input() + return + + def _parse_input(self): + with open(self.input_path, 'r') as file: + data = json.load(file) + return data + + + def _solve_handler(self, dt, rho, problem): + cur_data = self.data[problem] + total_yield = cur_data['neutrons_per_fission'] + betas = np.asarray(cur_data['yields']) / total_yield + beta_eff = np.sum(betas) + lams = np.log(2) / cur_data['hls'] + p0 = cur_data['p0'] + gen = cur_data['gen_time'] + + times = np.arange(0, self.data['tf']+dt, dt) + power_vals = list() + prec_vals = list() + num_groups = len(cur_data['yields']) + + + for ti, t in enumerate(times): + if ti == 0: + power_vals.append(p0) + prec_vals.append([betas[i]*p0/(lams[i]*gen) for i in range(num_groups)]) + continue + prev_power = power_vals[ti-1] + prev_conc = prec_vals[ti-1] + + prec_sum = 0 + for k in range(num_groups): + prec_sum += lams[k] * prev_conc[k] + + if self.data['euler_mode'] == 'forward': + new_power = (prev_power + dt * ((rho(t) - beta_eff) / gen * prev_power + prec_sum)) + new_precs = list() + for k in range(num_groups): + cur_conc = (prev_conc[k] + dt * (betas[k]/gen * prev_power - lams[k] * prev_conc[k])) + new_precs.append(cur_conc) + + elif self.data['euler_mode'] == 'backward': + new_power = (prev_power + dt * prec_sum) / (1 - dt*(rho(t+dt)-beta_eff)/gen) + new_precs = list() + for k in range(num_groups): + cur_conc = ((prev_conc[k] + betas[k]*dt/gen*prev_power) / (1 + dt*lams[k])) + new_precs.append(cur_conc) + + else: + raise Exception('Not implemented') + power_vals.append(new_power) + prec_vals.append(new_precs) + + return times, power_vals, prec_vals + + def _conc_plot(self, time, conc_data): + num_groups = len(conc_data[0]) + colors = self.post.get_colors(num_groups) + for k in range(num_groups): + conc_vals = [C[k] for C in conc_data] + plt.plot(time, conc_vals, label=f'Group {k+1}', color=colors[k]) + plt.xlabel('Time [s]') + plt.ylabel('Precursor Concentration') + plt.legend() + plt.tight_layout() + plt.savefig('conc.png') + plt.close() + return + + + def _power_reativity_plot(self, time, power, reactivity_data): + + fig, ax1 = plt.subplots() + + color = 'tab:red' + ax1.set_xlabel('Time [s]') + ax1.set_ylabel('Relative Power', color=color) + ax1.plot(time, power, color=color) + ax1.tick_params(axis='y', labelcolor=color) + + ax2 = ax1.twinx() + + color = 'tab:blue' + ax2.set_ylabel('Reactivity [pcm]', color=color) + ax2.plot(time, np.asarray(reactivity_data)*1e5, color=color) + ax2.tick_params(axis='y', labelcolor=color) + + fig.tight_layout() + fig.savefig('power_reactivity.png') + plt.close() + return + + def _get_reactivity(self, problem, reactivity_form: str): + if reactivity_form == 'step': + rho = lambda t: 50e-5 + return rho + elif reactivity_form == 'ramp': + total_yield = self.data['neutrons_per_fission'] + betaeff = np.sum(self.data[problem]['yields']) / total_yield + rho_max = self.data[problem]['rho_max_dollars'] * betaeff + rho = lambda t: min(rho_max*t, rho_max) + return rho + elif reactivity_form == 'sine': + rho_0 = self.data[problem]['rho_amplitude'] + omega = self.data[problem]['rho_frequency'] + rho = lambda t: rho_0 * np.sin(omega * t) + return rho + else: + raise Exception('Reactivity form provided not implemented') + + def _dt_plot(self, time_collections, power_collections, dt_list): + for index_val, times in enumerate(time_collections): + power = np.asarray(power_collections[index_val]) + dt = dt_list[index_val] + label_val = rf'$\Delta t = {dt*1000:.1f} ms$' + if index_val == 0: + base_y = power + base_x = times + t_common = np.intersect1d(base_x, times) + base_common = base_y[np.isin(base_x, t_common)] + cur_common = power[np.isin(times, t_common)] + pcnt_diff = ((np.asarray(base_common) - np.asarray(cur_common)) / + np.asarray(cur_common) * 100) + plt.plot(t_common, pcnt_diff, label=label_val) + plt.xlabel('Time [s]') + plt.ylabel('Difference [%]') + plt.legend() + plt.tight_layout() + plt.savefig('dtcompare.png') + plt.close() + return + + + def _write_output(self, write_path, times, powers, precs, rho, cur_data, dt, + dti): + data_dict = copy.deepcopy(cur_data) + data_dict['time_steps'] = dt + header_df = pd.DataFrame(data_dict) + + num_precs = len(precs[0]) + data = dict() + data['Times [s]'] = times + data['Relative Power'] = powers + for k in range(num_precs): + data[f'Precursor Group {k} Concentration'] = [C[k] for C in precs] + reactivity_data = list() + for t in times: + reactivity_data.append(rho(t)) + data['Reactivity'] = reactivity_data + + + df = pd.DataFrame(data) + with open(write_path, 'w', newline='') as f: + header_df.to_csv(f, index=False) + df.to_csv(f, index=False) + + if dti == 0: + self._power_reativity_plot(times, powers, reactivity_data) + self._conc_plot(times, precs) + return + + def compare_results(full_data): + print('here') + return + + def solve(self): + problems = self.data['selections'] + compare_data = dict() + for problem in problems: + compare_data[problem] = dict() + cur_data = self.data[problem] + reactivity_form = self.data['problem'] + rho = self._get_reactivity(problem, reactivity_form) + dt_list = self.data['time_steps'] + time_collections = list() + power_collections = list() + precursor_collections = list() + + for dti, dt in enumerate(dt_list): + times, powers, precs = self._solve_handler(dt, rho, problem) + self._write_output(f'{self.output_path}_{problem}.csv', + times, powers, precs, rho, cur_data, dt, dti) + time_collections.append(times) + power_collections.append(powers) + precursor_collections.append(precs) + compare_data['times'] = times + compare_data['power'] = powers + compare_data['concs'] = precs + + self._dt_plot(time_collections, power_collections, dt_list) + if len(problems) > 1: + self.compare_results(compare_data) + return + + + + +if __name__ == '__main__': + input_data = './input.json' + output_data = './output' + solver = PRKE(input_data, output_data) + solver.solve() \ No newline at end of file From 1a08f68f4767eadf36aae2315c68c6bc20501c2e Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Feb 2026 12:55:06 -0600 Subject: [PATCH 021/170] Add pulse data and comparison of powers --- .../appendixD_realDNPs/prk/input.json | 7 ++++--- .../appendixD_realDNPs/prk/main.py | 21 ++++++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/examples/phd_results/appendixD_realDNPs/prk/input.json b/examples/phd_results/appendixD_realDNPs/prk/input.json index 032e7187..07afba03 100644 --- a/examples/phd_results/appendixD_realDNPs/prk/input.json +++ b/examples/phd_results/appendixD_realDNPs/prk/input.json @@ -1,5 +1,5 @@ { - "selections": ["keepin"], + "selections": ["keepin", "pulse"], "problem": "step", "euler_mode": "backward", "time_steps": [1e-3], @@ -15,8 +15,9 @@ "p0": 1 }, "pulse": { - "yields": [0.00052, 0.00346, 0.00310, 0.00624, 0.00182, 0.00066], - "hls": [55.89897, 22.72614, 6.24457, 2.30281, 0.60802, 0.23028], + "description": "Calculated using ENDFB71 data, post-irrad, 0.00001 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.000601, 0.00325528, 0.00323466, 0.00678078, 0.0036572234, 0.001167046], + "hls": [55.047, 22.133, 5.6015, 1.9612, 0.4696, 0.095268], "gen_time": 2e-5, "neutrons_per_fission": 2.4, "rho_max_dollars": 0.5, diff --git a/examples/phd_results/appendixD_realDNPs/prk/main.py b/examples/phd_results/appendixD_realDNPs/prk/main.py index 07d36a06..dcb94b1d 100644 --- a/examples/phd_results/appendixD_realDNPs/prk/main.py +++ b/examples/phd_results/appendixD_realDNPs/prk/main.py @@ -175,8 +175,19 @@ def _write_output(self, write_path, times, powers, precs, rho, cur_data, dt, self._conc_plot(times, precs) return - def compare_results(full_data): - print('here') + def compare_results(self, full_data): + linestyles = [':', '-.', '--'] + for pi, (problem, data) in enumerate(full_data.items()): + label: str = problem.capitalize() + times = data['times'] + concs = data['concs'] + power = data['power'] + plt.plot(times, power, label=label, linestyle=linestyles[pi%len(linestyles)]) + print(f'{label} {power[-1] = }') + plt.legend() + plt.savefig(f'compare_powers.png') + plt.close() + return def solve(self): @@ -199,9 +210,9 @@ def solve(self): time_collections.append(times) power_collections.append(powers) precursor_collections.append(precs) - compare_data['times'] = times - compare_data['power'] = powers - compare_data['concs'] = precs + compare_data[problem]['times'] = times + compare_data[problem]['power'] = powers + compare_data[problem]['concs'] = precs self._dt_plot(time_collections, power_collections, dt_list) if len(problems) > 1: From 5d0a013a0b41ce8d455cb7316f7236e1cb63337b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Feb 2026 13:32:16 -0600 Subject: [PATCH 022/170] Add more PRK data --- .../appendixD_realDNPs/prk/input.json | 28 +++++++++++++++++-- .../appendixD_realDNPs/prk/main.py | 28 ++++++++++++++++--- 2 files changed, 49 insertions(+), 7 deletions(-) diff --git a/examples/phd_results/appendixD_realDNPs/prk/input.json b/examples/phd_results/appendixD_realDNPs/prk/input.json index 07afba03..3e5054b7 100644 --- a/examples/phd_results/appendixD_realDNPs/prk/input.json +++ b/examples/phd_results/appendixD_realDNPs/prk/input.json @@ -1,6 +1,6 @@ { - "selections": ["keepin", "pulse"], - "problem": "step", + "selections": ["pulse", "intermediate", "saturation"], + "problem": "step_relative", "euler_mode": "backward", "time_steps": [1e-3], "tf": 2, @@ -15,7 +15,7 @@ "p0": 1 }, "pulse": { - "description": "Calculated using ENDFB71 data, post-irrad, 0.00001 second irradiation, 100 decay times, 600 decay seconds", + "description": "Calculated using ENDFB71 data, post-irrad, (0.00001,0) 0.00001 second irradiation, 100 decay times, 600 decay seconds", "yields": [0.000601, 0.00325528, 0.00323466, 0.00678078, 0.0036572234, 0.001167046], "hls": [55.047, 22.133, 5.6015, 1.9612, 0.4696, 0.095268], "gen_time": 2e-5, @@ -24,6 +24,28 @@ "rho_amplitude": 750e-5, "rho_frequency": 100, "p0": 1 + }, + "intermediate": { + "description": "Calculated using ENDFB71 data, post-irrad, (1,0) 30 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.0005810767, 0.002995618, 0.00165845, 0.0065752589, 0.004701, 0.00214555], + "hls": [55.395699, 22.939397, 8.79516, 2.8361, 0.82819, 0.15777], + "gen_time": 2e-5, + "neutrons_per_fission": 2.4, + "rho_max_dollars": 0.5, + "rho_amplitude": 750e-5, + "rho_frequency": 100, + "p0": 1 + }, + "saturation": { + "description": "Calculated using ENDFB71 data, post-irrad, (60,0) 1200 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.000576267, 0.002988244, 0.0018862306, 0.0069244077, 0.0044298534, 0.001862336], + "hls": [55.4938, 23.030678, 8.43461, 2.63272, 0.7163197, 0.139332515], + "gen_time": 2e-5, + "neutrons_per_fission": 2.4, + "rho_max_dollars": 0.5, + "rho_amplitude": 750e-5, + "rho_frequency": 100, + "p0": 1 } } \ No newline at end of file diff --git a/examples/phd_results/appendixD_realDNPs/prk/main.py b/examples/phd_results/appendixD_realDNPs/prk/main.py index dcb94b1d..e418da92 100644 --- a/examples/phd_results/appendixD_realDNPs/prk/main.py +++ b/examples/phd_results/appendixD_realDNPs/prk/main.py @@ -34,6 +34,7 @@ def _solve_handler(self, dt, rho, problem): power_vals = list() prec_vals = list() num_groups = len(cur_data['yields']) + self.num_groups = num_groups for ti, t in enumerate(times): @@ -107,12 +108,15 @@ def _power_reativity_plot(self, time, power, reactivity_data): return def _get_reactivity(self, problem, reactivity_form: str): + total_yield = self.data[problem]['neutrons_per_fission'] + betaeff = np.sum(self.data[problem]['yields']) / total_yield if reactivity_form == 'step': rho = lambda t: 50e-5 return rho + elif reactivity_form == 'step_relative': + rho = lambda t: 0.05 * betaeff + return rho elif reactivity_form == 'ramp': - total_yield = self.data['neutrons_per_fission'] - betaeff = np.sum(self.data[problem]['yields']) / total_yield rho_max = self.data[problem]['rho_max_dollars'] * betaeff rho = lambda t: min(rho_max*t, rho_max) return rho @@ -180,13 +184,29 @@ def compare_results(self, full_data): for pi, (problem, data) in enumerate(full_data.items()): label: str = problem.capitalize() times = data['times'] - concs = data['concs'] power = data['power'] plt.plot(times, power, label=label, linestyle=linestyles[pi%len(linestyles)]) print(f'{label} {power[-1] = }') plt.legend() - plt.savefig(f'compare_powers.png') + plt.xlabel('Time [s]') + plt.ylabel('Relative Power') + plt.savefig(f'compare_power.png') plt.close() + + for group in range(self.num_groups): + for pi, (problem, data) in enumerate(full_data.items()): + label: str = problem.capitalize() + times = data['times'] + concs = data['concs'] + conc = np.asarray(concs)[:, group] + + plt.plot(times, conc, label=label, linestyle=linestyles[pi%len(linestyles)]) + print(f'{label} {conc[-1] = }') + plt.legend() + plt.xlabel('Time [s]') + plt.ylabel('Atoms [\#]') + plt.savefig(f'compare_conc_{group+1}.png') + plt.close() return From 40b11540d78e45fd141a0ced4e5053021220f32b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Feb 2026 14:08:35 -0600 Subject: [PATCH 023/170] Move PRK example directory --- .../{appendixD_realDNPs => }/prk/README.md | 0 .../{appendixD_realDNPs => }/prk/input.json | 42 ++++++------------- .../{appendixD_realDNPs => }/prk/main.py | 37 ++++++++++++---- 3 files changed, 42 insertions(+), 37 deletions(-) rename examples/phd_results/{appendixD_realDNPs => }/prk/README.md (100%) rename examples/phd_results/{appendixD_realDNPs => }/prk/input.json (61%) rename examples/phd_results/{appendixD_realDNPs => }/prk/main.py (87%) diff --git a/examples/phd_results/appendixD_realDNPs/prk/README.md b/examples/phd_results/prk/README.md similarity index 100% rename from examples/phd_results/appendixD_realDNPs/prk/README.md rename to examples/phd_results/prk/README.md diff --git a/examples/phd_results/appendixD_realDNPs/prk/input.json b/examples/phd_results/prk/input.json similarity index 61% rename from examples/phd_results/appendixD_realDNPs/prk/input.json rename to examples/phd_results/prk/input.json index 3e5054b7..ee2757a2 100644 --- a/examples/phd_results/appendixD_realDNPs/prk/input.json +++ b/examples/phd_results/prk/input.json @@ -3,49 +3,33 @@ "problem": "step_relative", "euler_mode": "backward", "time_steps": [1e-3], - "tf": 2, + "tf": 15, + "step_relative_insertion": 0.5, + "rho_max_dollars": 0.5, + "neutrons_per_fission": 2.4, + "gen_time": 2e-5, + "p0": 1, + "rho_amplitude": 750e-5, + "rho_frequency": 100, + "equilibrium_dnps": true, "keepin": { "yields": [0.00052, 0.00346, 0.00310, 0.00624, 0.00182, 0.00066], - "hls": [55.89897, 22.72614, 6.24457, 2.30281, 0.60802, 0.23028], - "gen_time": 2e-5, - "neutrons_per_fission": 2.4, - "rho_max_dollars": 0.5, - "rho_amplitude": 750e-5, - "rho_frequency": 100, - "p0": 1 + "hls": [55.89897, 22.72614, 6.24457, 2.30281, 0.60802, 0.23028] }, "pulse": { "description": "Calculated using ENDFB71 data, post-irrad, (0.00001,0) 0.00001 second irradiation, 100 decay times, 600 decay seconds", "yields": [0.000601, 0.00325528, 0.00323466, 0.00678078, 0.0036572234, 0.001167046], - "hls": [55.047, 22.133, 5.6015, 1.9612, 0.4696, 0.095268], - "gen_time": 2e-5, - "neutrons_per_fission": 2.4, - "rho_max_dollars": 0.5, - "rho_amplitude": 750e-5, - "rho_frequency": 100, - "p0": 1 + "hls": [55.047, 22.133, 5.6015, 1.9612, 0.4696, 0.095268] }, "intermediate": { "description": "Calculated using ENDFB71 data, post-irrad, (1,0) 30 second irradiation, 100 decay times, 600 decay seconds", "yields": [0.0005810767, 0.002995618, 0.00165845, 0.0065752589, 0.004701, 0.00214555], - "hls": [55.395699, 22.939397, 8.79516, 2.8361, 0.82819, 0.15777], - "gen_time": 2e-5, - "neutrons_per_fission": 2.4, - "rho_max_dollars": 0.5, - "rho_amplitude": 750e-5, - "rho_frequency": 100, - "p0": 1 + "hls": [55.395699, 22.939397, 8.79516, 2.8361, 0.82819, 0.15777] }, "saturation": { "description": "Calculated using ENDFB71 data, post-irrad, (60,0) 1200 second irradiation, 100 decay times, 600 decay seconds", "yields": [0.000576267, 0.002988244, 0.0018862306, 0.0069244077, 0.0044298534, 0.001862336], - "hls": [55.4938, 23.030678, 8.43461, 2.63272, 0.7163197, 0.139332515], - "gen_time": 2e-5, - "neutrons_per_fission": 2.4, - "rho_max_dollars": 0.5, - "rho_amplitude": 750e-5, - "rho_frequency": 100, - "p0": 1 + "hls": [55.4938, 23.030678, 8.43461, 2.63272, 0.7163197, 0.139332515] } } \ No newline at end of file diff --git a/examples/phd_results/appendixD_realDNPs/prk/main.py b/examples/phd_results/prk/main.py similarity index 87% rename from examples/phd_results/appendixD_realDNPs/prk/main.py rename to examples/phd_results/prk/main.py index e418da92..7e63d3d2 100644 --- a/examples/phd_results/appendixD_realDNPs/prk/main.py +++ b/examples/phd_results/prk/main.py @@ -23,12 +23,12 @@ def _parse_input(self): def _solve_handler(self, dt, rho, problem): cur_data = self.data[problem] - total_yield = cur_data['neutrons_per_fission'] + total_yield = self.data['neutrons_per_fission'] betas = np.asarray(cur_data['yields']) / total_yield beta_eff = np.sum(betas) lams = np.log(2) / cur_data['hls'] - p0 = cur_data['p0'] - gen = cur_data['gen_time'] + p0 = self.data['p0'] + gen = self.data['gen_time'] times = np.arange(0, self.data['tf']+dt, dt) power_vals = list() @@ -36,11 +36,15 @@ def _solve_handler(self, dt, rho, problem): num_groups = len(cur_data['yields']) self.num_groups = num_groups + if self.data['equilibrium_dnps']: + prec_initial_val = [betas[i]*p0/(lams[i]*gen) for i in range(num_groups)] + else: + prec_initial_val = [0] * num_groups for ti, t in enumerate(times): if ti == 0: power_vals.append(p0) - prec_vals.append([betas[i]*p0/(lams[i]*gen) for i in range(num_groups)]) + prec_vals.append(prec_initial_val) continue prev_power = power_vals[ti-1] prev_conc = prec_vals[ti-1] @@ -108,20 +112,20 @@ def _power_reativity_plot(self, time, power, reactivity_data): return def _get_reactivity(self, problem, reactivity_form: str): - total_yield = self.data[problem]['neutrons_per_fission'] + total_yield = self.data['neutrons_per_fission'] betaeff = np.sum(self.data[problem]['yields']) / total_yield if reactivity_form == 'step': rho = lambda t: 50e-5 return rho elif reactivity_form == 'step_relative': - rho = lambda t: 0.05 * betaeff + rho = lambda t: self.data['step_relative_insertion'] * betaeff return rho elif reactivity_form == 'ramp': - rho_max = self.data[problem]['rho_max_dollars'] * betaeff + rho_max = self.data['rho_max_dollars'] * betaeff rho = lambda t: min(rho_max*t, rho_max) return rho elif reactivity_form == 'sine': - rho_0 = self.data[problem]['rho_amplitude'] + rho_0 = self.data['rho_amplitude'] omega = self.data[problem]['rho_frequency'] rho = lambda t: rho_0 * np.sin(omega * t) return rho @@ -188,10 +192,27 @@ def compare_results(self, full_data): plt.plot(times, power, label=label, linestyle=linestyles[pi%len(linestyles)]) print(f'{label} {power[-1] = }') plt.legend() + #plt.xscale('log') plt.xlabel('Time [s]') plt.ylabel('Relative Power') plt.savefig(f'compare_power.png') plt.close() + + + for pi, (problem, data) in enumerate(full_data.items()): + label: str = problem.capitalize() + times = data['times'] + power = np.asarray(data['power']) + if pi == 0: + base_label = label + base_power = power + power_diff = (base_power - power) / ((base_power + power) / 2) * 100 + plt.plot(times, power_diff, label=f'{label}', linestyle=linestyles[pi%len(linestyles)]) + plt.legend() + plt.xlabel('Time [s]') + plt.ylabel(f'Power Difference from {base_label} [\%]') + plt.savefig(f'compare_power_percent.png') + plt.close() for group in range(self.num_groups): for pi, (problem, data) in enumerate(full_data.items()): From fbeb17282128ee871d2d594d1dd70b2260228f62 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Feb 2026 14:23:43 -0600 Subject: [PATCH 024/170] Add relative sinusoid --- examples/phd_results/prk/input.json | 7 ++++--- examples/phd_results/prk/main.py | 7 ++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/examples/phd_results/prk/input.json b/examples/phd_results/prk/input.json index ee2757a2..95b87720 100644 --- a/examples/phd_results/prk/input.json +++ b/examples/phd_results/prk/input.json @@ -1,16 +1,17 @@ { "selections": ["pulse", "intermediate", "saturation"], - "problem": "step_relative", + "problem": "sine_relative", "euler_mode": "backward", "time_steps": [1e-3], - "tf": 15, + "tf": 60, "step_relative_insertion": 0.5, "rho_max_dollars": 0.5, "neutrons_per_fission": 2.4, "gen_time": 2e-5, "p0": 1, "rho_amplitude": 750e-5, - "rho_frequency": 100, + "rho_relative_amplitude": 0.25, + "rho_frequency": 2, "equilibrium_dnps": true, "keepin": { "yields": [0.00052, 0.00346, 0.00310, 0.00624, 0.00182, 0.00066], diff --git a/examples/phd_results/prk/main.py b/examples/phd_results/prk/main.py index 7e63d3d2..c32f3f95 100644 --- a/examples/phd_results/prk/main.py +++ b/examples/phd_results/prk/main.py @@ -126,7 +126,12 @@ def _get_reactivity(self, problem, reactivity_form: str): return rho elif reactivity_form == 'sine': rho_0 = self.data['rho_amplitude'] - omega = self.data[problem]['rho_frequency'] + omega = self.data['rho_frequency'] + rho = lambda t: rho_0 * np.sin(omega * t) + return rho + elif reactivity_form == 'sine_relative': + rho_0 = self.data['rho_relative_amplitude'] * betaeff + omega = self.data['rho_frequency'] rho = lambda t: rho_0 * np.sin(omega * t) return rho else: From 56506c2efac294e405ed77335799e03630f60ff8 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 2 Mar 2026 10:11:49 -0600 Subject: [PATCH 025/170] Add comparison of count rates example file --- .../count_comparison/compare_count_rates.py | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 examples/phd_results/count_comparison/compare_count_rates.py diff --git a/examples/phd_results/count_comparison/compare_count_rates.py b/examples/phd_results/count_comparison/compare_count_rates.py new file mode 100644 index 00000000..8e3162de --- /dev/null +++ b/examples/phd_results/count_comparison/compare_count_rates.py @@ -0,0 +1,86 @@ +from mosden.utils.csv_handler import CSVHandler +import numpy as np + + +def counts_from_concs(conc_data: dict[str, dict[float, tuple[float, float]]], + pn_data, + hl_data) -> tuple[list[float], dict[str, list[float]]]: + counts = dict() + emission_nucs = list(pn_data.keys()) + half_life_nucs = list(hl_data.keys()) + conc_nucs = list(conc_data.keys()) + net_similar_nucs = list( + set(emission_nucs) & set(half_life_nucs) & set(conc_nucs)) + for nuc in net_similar_nucs: + data = conc_data[nuc] + Pn = pn_data[nuc]['emission probability'] + hl = hl_data[nuc]['half_life'] + decay_const = np.log(2) / hl + if np.allclose(list(data.values()), 0.0): + continue + counts[nuc] = list() + for _, (conc, _) in data.items(): + count = Pn * decay_const * conc + counts[nuc].append(count) + + times = list(conc_data[nuc].keys()) + + return times, counts + + +def trim_counts(counts, index): + counts_new = dict() + for nuc, data in counts.items(): + target_data = data[index] + counts_new[nuc] = target_data + return counts_new + +def calc_relative_diff(dict1, dict2): + diff_dict = dict() + for nuc in dict1.keys(): + rel_diff = (dict1[nuc] - dict2[nuc])/((dict1[nuc]+dict2[nuc])/2) + diff_dict[nuc] = rel_diff + return diff_dict + + + +if __name__ == "__main__": + pn_file = './emission_probability.csv' + hl_file = './half_life.csv' + long_irrad_file = './concentrations_(0.1,10).csv' + short_irrad_file = './concentrations_(0.01,1).csv' + final_irrad_index = 100 + top_num = 5 + + pn_data = CSVHandler(pn_file, create=False).read_csv() + hl_data = CSVHandler(hl_file, create=False).read_csv() + short_conc_data = CSVHandler(short_irrad_file).read_csv_with_time() + times, counts = counts_from_concs(short_conc_data, pn_data=pn_data, hl_data=hl_data) + counts_short = trim_counts(counts, final_irrad_index) + + long_conc_data = CSVHandler(long_irrad_file).read_csv_with_time() + times, counts = counts_from_concs(long_conc_data, pn_data=pn_data, hl_data=hl_data) + counts_long = trim_counts(counts, final_irrad_index) + + diff_dict = calc_relative_diff(counts_short, counts_long) + sorted_keys = list(sorted(diff_dict, key=diff_dict.get, reverse=True)) + + for each_index in range(top_num): + nuc = sorted_keys[each_index] + diff_val = np.round(diff_dict[nuc] * 100, 1) + hl = hl_data[nuc]['half_life'] + pn = pn_data[nuc]['emission probability'] + print(f'{nuc = }\n{diff_val = }%\n{hl = }\n{pn = }\n') + + + print() + sorted_keys = list(sorted(diff_dict, key=diff_dict.get, reverse=False)) + + for each_index in range(top_num): + nuc = sorted_keys[each_index] + diff_val = np.round(diff_dict[nuc] * 100, 1) + hl = hl_data[nuc]['half_life'] + pn = pn_data[nuc]['emission probability'] + print(f'{nuc = }\n{diff_val = }%\n{hl = }\n{pn = }\n') + + From 4f238fe9908a811a9fb6e4da2ce9a08f3953a02d Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 2 Mar 2026 10:14:32 -0600 Subject: [PATCH 026/170] Update high fidelity JSON example --- examples/high_fidelity/input.json | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/examples/high_fidelity/input.json b/examples/high_fidelity/input.json index 9a669fd0..05ad979d 100644 --- a/examples/high_fidelity/input.json +++ b/examples/high_fidelity/input.json @@ -28,11 +28,12 @@ "modeling_options": { "concentration_handling": "OMC", "count_rate_handling": "data", + "residual_handling": ["post-irrad"], "reprocessing_locations": ["excore"], "reprocessing": { "Xe": 0.0 }, - "irrad_type": "saturation", + "irrad_type": "intermediate", "spatial_scaling": { "flux": false, "reprocessing": false @@ -40,7 +41,7 @@ "base_removal_scaling": 0.5, "incore_s": 5, "excore_s": 2, - "net_irrad_s": 300, + "net_irrad_s": 30, "decay_time": 600, "num_decay_times": 100, "openmc_settings": { @@ -49,12 +50,18 @@ "source": 1e3, "run_omc": true, "write_fission_json": true, - "write_nuyield_json": true + "write_nuyield_json": true, + "min_timestep": 1e10 } }, "group_options": { "num_groups": 6, "method": "nlls", + "parameter_guesses": 10, + "initial_params": { + "yields": [0.0005811, 0.00299617, 0.00166, 0.0065785, 0.00469921, 0.0021417], + "half_lives": [55.39525, 22.937965, 8.78718, 2.83386, 0.82695, 0.1575506] + }, "samples": 1, "sample_func": "normal" } From 4a2e639414adf831c22998cbbcec1eaf50011c78 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 2 Mar 2026 11:53:16 -0600 Subject: [PATCH 027/170] Rename to irrad --- mosden/base.py | 8 +++---- mosden/groupfit.py | 46 ++++++++++++++++++------------------- tests/unit/test_base.py | 10 ++++---- tests/unit/test_groupfit.py | 30 ++++++++++++------------ 4 files changed, 47 insertions(+), 47 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index 616b5cea..f4eb627e 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -209,13 +209,13 @@ def _get_times_and_rates(self, f_in: float = 1.0) -> dict[str, list[float|int]]: time_rate_data : dict[str, list[float|int]] Keys are names for different datasets, values are the time-dependent data. Keys include `timesteps`, `source_rates`, `removal_indeces`, - and `insitu_mask` + and `irrad_mask` """ time_rate_data = dict() removal_indeces = list() timesteps = list() source_rates = list() - insitu_residual_mask = list() + irrad_residual_mask = list() current_time = 0 index_counter = 0 in_core = True @@ -253,7 +253,7 @@ def _get_times_and_rates(self, f_in: float = 1.0) -> dict[str, list[float|int]]: time_close = np.isclose(current_time, self.t_net) if 'all' in self.residual_masks: mask_val = 1 - insitu_residual_mask.append(mask_val) + irrad_residual_mask.append(mask_val) diff = sum(timesteps) - self.t_net timesteps[-1] = timesteps[-1] - diff @@ -266,7 +266,7 @@ def _get_times_and_rates(self, f_in: float = 1.0) -> dict[str, list[float|int]]: time_rate_data['timesteps'] = timesteps time_rate_data['source_rates'] = source_rates time_rate_data['removal_indeces'] = removal_indeces - time_rate_data['insitu_mask'] = insitu_residual_mask + time_rate_data['irrad_mask'] = irrad_residual_mask return time_rate_data diff --git a/mosden/groupfit.py b/mosden/groupfit.py index f3df5740..9c29af8f 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -54,8 +54,8 @@ def _residual_function( times: np.ndarray[float], counts: np.ndarray[float], count_err: np.ndarray[float], - insitu_counts: np.ndarray[float], - insitu_times: np.ndarray[float], + irrad_counts: np.ndarray[float], + irrad_times: np.ndarray[float], fit_func: Callable) -> float: """ Calculate the residual of the current set of parameters @@ -70,9 +70,9 @@ def _residual_function( List of delayed neutron counts count_err : np.ndarray[float] List of count errors - insitu_counts : np.ndarray[float] + irrad_counts : np.ndarray[float] List of delayed neutron counts during irradiation - times : np.ndarray[float] + irrad_times : np.ndarray[float] List of times during irradiation fit_func : Callable Function that takes times and parameters to return list of counts @@ -82,15 +82,15 @@ def _residual_function( residual : float Value of the residual """ - insitu_residual = [] - if len(insitu_times) != 0: - insitu_residual = ((insitu_counts - self._get_insitu_counts(insitu_times, parameters)) / (insitu_counts)) - insitu_residual = np.nan_to_num(insitu_residual) + irrad_residual = [] + if len(irrad_times) != 0: + irrad_residual = ((irrad_counts - self._get_irrad_counts(irrad_times, parameters)) / (irrad_counts)) + irrad_residual = np.nan_to_num(irrad_residual) post_residual = (counts - fit_func(times, parameters)) / (counts) - residual = np.concatenate((insitu_residual, post_residual)) + residual = np.concatenate((irrad_residual, post_residual)) return residual - def _get_insitu_fission_component(self, times: np.ndarray[float], + def _get_irrad_fission_component(self, times: np.ndarray[float], lam: np.ndarray[float], exp: Callable, expm1: Callable) -> np.ndarray[float]: """ @@ -136,7 +136,7 @@ def _get_insitu_fission_component(self, times: np.ndarray[float], return fission_component - def _get_insitu_counts(self, + def _get_irrad_counts(self, times: np.ndarray[float | object], parameters: np.ndarray[float | object] ) -> np.ndarray[float | object]: @@ -176,7 +176,7 @@ def _get_insitu_counts(self, nu = unumpy.uarray([v.n for v in yields], [v.s for v in yields]) - fission_component = self._get_insitu_fission_component(times, lam, exp, expm1) + fission_component = self._get_irrad_fission_component(times, lam, exp, expm1) group_counts = nu[:, None] * fission_component counts = np.sum(group_counts, axis=0) return counts @@ -440,9 +440,9 @@ def _get_modified_counts_and_times(self, times: np.ndarray[float], Post-irradiation times counts : np.ndarray[float] Post-irradiation counts - insitu_times : np.ndarray[float] + irrad_times : np.ndarray[float] Mid-irradiation times - insitu_counts : np.ndarray[float] + irrad_counts : np.ndarray[float] Mid-irradiation counts """ post_irrad_index = self.get_irrad_index(False) @@ -450,9 +450,9 @@ def _get_modified_counts_and_times(self, times: np.ndarray[float], if self.post_irrad_only: return times, counts, np.array([]), np.array([]) - insitu_mask = np.asarray(full_data['insitu_mask']) - insitu_times = np.cumsum(full_data['timesteps'][:post_irrad_index]) * insitu_mask - insitu_counts = np.asarray(counts[1:post_irrad_index+1]) * insitu_mask + irrad_mask = np.asarray(full_data['irrad_mask']) + irrad_times = np.cumsum(full_data['timesteps'][:post_irrad_index]) * irrad_mask + irrad_counts = np.asarray(counts[1:post_irrad_index+1]) * irrad_mask if self.no_post_irrad: counts = np.asarray([]) @@ -461,7 +461,7 @@ def _get_modified_counts_and_times(self, times: np.ndarray[float], counts = counts[post_irrad_index+1:] times = np.asarray(times[post_irrad_index+1:]) - times[post_irrad_index] - return times, counts, insitu_times, insitu_counts + return times, counts, irrad_times, irrad_counts def _nonlinear_least_squares(self, @@ -546,7 +546,7 @@ def _nonlinear_least_squares(self, x0 = np.concatenate((np.ones(self.num_groups) * y_noise, np.ones(self.num_groups) * hl_noise)) starts.append(x0) - times, counts, insitu_times, insitu_counts = self._get_modified_counts_and_times(times, counts) + times, counts, irrad_times, irrad_counts = self._get_modified_counts_and_times(times, counts) best = None for x0 in tqdm(starts): @@ -560,7 +560,7 @@ def _nonlinear_least_squares(self, xtol=1e-12, verbose=0, max_nfev=1e6, - args=(times, counts, count_err, insitu_counts, insitu_times, fit_function)) + args=(times, counts, count_err, irrad_counts, irrad_times, fit_function)) if best is None or result.cost < best.cost: best = result result = best @@ -590,7 +590,7 @@ def _nonlinear_least_squares(self, post_data_save.append(post_data) count_sample = data['counts'] count_sample_err = data['sigma counts'] - times, counts, insitu_times, insitu_counts = self._get_modified_counts_and_times(times, count_sample) + times, counts, irrad_times, irrad_counts = self._get_modified_counts_and_times(times, count_sample) result = least_squares( self._residual_function, @@ -606,8 +606,8 @@ def _nonlinear_least_squares(self, times, count_sample, count_sample_err, - insitu_counts, - insitu_times, + irrad_counts, + irrad_times, fit_function)) tracked_counts.append([i for i in count_sample]) sorted_params = self._sort_params_by_half_life(result.x) diff --git a/tests/unit/test_base.py b/tests/unit/test_base.py index 70fb943d..41bc4774 100644 --- a/tests/unit/test_base.py +++ b/tests/unit/test_base.py @@ -136,7 +136,7 @@ def test_times_rates_mask(): assert data['timesteps'][:10] == [1]*10 assert data['source_rates'][:10] == [1.0, 0]*5 assert data['removal_indeces'][:10] == list(np.arange(0, 10)) - assert data['insitu_mask'] == [0]*10 + assert data['irrad_mask'] == [0]*10 base.residual_masks = ['post-irrad'] data = base._get_times_and_rates() @@ -144,7 +144,7 @@ def test_times_rates_mask(): assert data['timesteps'][:10] == [1]*10 assert data['source_rates'][:10] == [1.0, 0]*5 assert data['removal_indeces'][:10] == list(np.arange(0, 10)) - assert data['insitu_mask'] == [0]*10 + assert data['irrad_mask'] == [0]*10 base.residual_masks = ['incore'] data = base._get_times_and_rates() @@ -152,7 +152,7 @@ def test_times_rates_mask(): assert data['timesteps'][:10] == [1]*10 assert data['source_rates'][:10] == [1.0, 0]*5 assert data['removal_indeces'][:10] == list(np.arange(0, 10)) - assert data['insitu_mask'] == [1,0]*5 + assert data['irrad_mask'] == [1,0]*5 base.residual_masks = ['excore'] data = base._get_times_and_rates() @@ -160,7 +160,7 @@ def test_times_rates_mask(): assert data['timesteps'][:10] == [1]*10 assert data['source_rates'][:10] == [1.0, 0]*5 assert data['removal_indeces'][:10] == list(np.arange(0, 10)) - assert data['insitu_mask'] == [0,1]*5 + assert data['irrad_mask'] == [0,1]*5 base.residual_masks = ['all'] @@ -169,7 +169,7 @@ def test_times_rates_mask(): assert data['timesteps'][:10] == [1]*10 assert data['source_rates'][:10] == [1.0, 0]*5 assert data['removal_indeces'][:10] == list(np.arange(0, 10)) - assert data['insitu_mask'] == [1]*10 + assert data['irrad_mask'] == [1]*10 def test_openmc_time_setting(): diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index 6345ffdf..80633a78 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -298,8 +298,8 @@ def test_effective_fiss(): stat_fiss = grouper._get_saturation_fission_term(lams[0], np.exp) assert np.isclose(eff_fiss, stat_fiss), "Fission terms not equal" grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) - insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) - assert np.isclose(insitu_fiss[0][-1], eff_fiss), "Insitu fiss mismatch" + irrad_fiss = grouper._get_irrad_fission_component(grouper.fission_times, lams, np.exp, np.expm1) + assert np.isclose(irrad_fiss[0][-1], eff_fiss), "irrad fiss mismatch" grouper.full_fission_term = np.asarray([1, 1, 1]) hl = 250e3 @@ -309,8 +309,8 @@ def test_effective_fiss(): stat_fiss = grouper._get_saturation_fission_term(lams[0], np.exp) assert np.isclose(eff_fiss, stat_fiss), "Fission terms not equal" grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) - insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) - assert np.isclose(insitu_fiss[0][-1], eff_fiss), "Insitu fiss mismatch" + irrad_fiss = grouper._get_irrad_fission_component(grouper.fission_times, lams, np.exp, np.expm1) + assert np.isclose(irrad_fiss[0][-1], eff_fiss), "irrad fiss mismatch" grouper.full_fission_term = np.asarray([1, 1, 1]) hl = 1e10 @@ -320,9 +320,9 @@ def test_effective_fiss(): assert np.isclose(eff_fiss, grouper.t_net), "Limit for long-lived incorrect" assert np.isclose(stat_fiss, grouper.t_net), "Limit for long-lived incorrect" grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) - insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) / lams[0] - grouper.logger.error(f'{insitu_fiss = }') - assert np.isclose(insitu_fiss[0][-1], eff_fiss), "Limit for long-lived incorrect" + irrad_fiss = grouper._get_irrad_fission_component(grouper.fission_times, lams, np.exp, np.expm1) / lams[0] + grouper.logger.error(f'{irrad_fiss = }') + assert np.isclose(irrad_fiss[0][-1], eff_fiss), "Limit for long-lived incorrect" grouper.full_fission_term = np.asarray([1, 1, 1]) hl = 1e-10 @@ -332,8 +332,8 @@ def test_effective_fiss(): assert np.isclose(eff_fiss, 0), "Limit for long-lived incorrect" assert np.isclose(stat_fiss, 0), "Limit for long-lived incorrect" grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) - insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) / lams[0] - assert np.isclose(insitu_fiss[0][-1], eff_fiss), "Limit for long-lived incorrect" + irrad_fiss = grouper._get_irrad_fission_component(grouper.fission_times, lams, np.exp, np.expm1) / lams[0] + assert np.isclose(irrad_fiss[0][-1], eff_fiss), "Limit for long-lived incorrect" grouper.full_fission_term = np.asarray([1, 1, 1]) hl = [1e-10, 1e10] @@ -341,8 +341,8 @@ def test_effective_fiss(): eff_fiss = grouper._get_effective_fission(lams, np.exp, np.expm1) / lams assert np.allclose(eff_fiss, [0.0, grouper.t_net]), "Limit for multiple incorrect" grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) - insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) / lams[:, None] - assert np.allclose(insitu_fiss[:, -1], eff_fiss), "Limit for multiple incorrect" + irrad_fiss = grouper._get_irrad_fission_component(grouper.fission_times, lams, np.exp, np.expm1) / lams[:, None] + assert np.allclose(irrad_fiss[:, -1], eff_fiss), "Limit for multiple incorrect" @@ -374,11 +374,11 @@ def test_effective_fiss_many_ts(): eff_fiss = grouper._get_effective_fission(lams, np.exp, np.expm1) stat_fiss = grouper._get_saturation_fission_term(lam, np.exp) grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) - insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) + irrad_fiss = grouper._get_irrad_fission_component(grouper.fission_times, lams, np.exp, np.expm1) assert np.isclose(eff_fiss, 0.9424, rtol=1e-2), "Effective fission mismatch" assert np.isclose(stat_fiss, 0.666, rtol=1e-2), "Static effective fission mismatch" - assert np.isclose(insitu_fiss[0][-1], eff_fiss, rtol=1e-2), "Final insitu doesn't match effective" + assert np.isclose(irrad_fiss[0][-1], eff_fiss, rtol=1e-2), "Final irrad doesn't match effective" full_fission[(t_mid >= 1) & (t_mid < 2)] = 1.0 @@ -388,7 +388,7 @@ def test_effective_fiss_many_ts(): eff_fiss = grouper._get_effective_fission(lams, np.exp, np.expm1) stat_fiss = grouper._get_saturation_fission_term(lam, np.exp) grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) - insitu_fiss = grouper._get_insitu_fission_component(grouper.fission_times, lams, np.exp, np.expm1) + irrad_fiss = grouper._get_irrad_fission_component(grouper.fission_times, lams, np.exp, np.expm1) assert np.isclose(eff_fiss, stat_fiss, atol=1e-2) - assert np.isclose(eff_fiss, insitu_fiss[0][-1], atol=1e-2) \ No newline at end of file + assert np.isclose(eff_fiss, irrad_fiss[0][-1], atol=1e-2) \ No newline at end of file From 42d359efea1c4a4422b009003c6aa700e6116f42 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 2 Mar 2026 12:44:10 -0600 Subject: [PATCH 028/170] Clean up calculation of irrad index for short times --- mosden/base.py | 12 ++++++++---- tests/unit/test_base.py | 11 ++++++++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index f4eb627e..0f2cb841 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -333,10 +333,14 @@ def get_irrad_index(self, single_time_val: bool) -> int: in_use_time = np.min((self.openmc_settings['min_timestep'], self.t_in)) ex_use_time = np.min((self.openmc_settings['min_timestep'], self.t_ex)) - if self.t_in == 0: - return int(np.ceil(self.t_net / ex_use_time)) - if self.t_ex == 0: - return int(np.ceil(self.t_net / in_use_time)) + if self.t_in == 0 and self.t_ex != 0: + ratio = self.t_net / ex_use_time + return int(np.floor(ratio + (1 - 1e-12))) + elif self.t_ex == 0 and self.t_in != 0: + ratio = self.t_net / in_use_time + return int(np.floor(ratio + (1 - 1e-12))) + elif self.t_in == 0 and self.t_ex == 0: + raise ValueError('Residence times cannot all be zero') cycle_time = in_use_time + ex_use_time n_full = np.floor(self.t_net / cycle_time) diff --git a/tests/unit/test_base.py b/tests/unit/test_base.py index 41bc4774..90c1eae2 100644 --- a/tests/unit/test_base.py +++ b/tests/unit/test_base.py @@ -90,12 +90,14 @@ def test_irrad_and_update(): index = base.get_irrad_index(False) assert index == 3 + base.t_net = 30 base.t_in = 27 base.t_ex = 3 index = base.get_irrad_index(False) assert index == 2 base.t_net = base._update_t_net() + assert base.t_net == 57 index = base.get_irrad_index(False) assert index == 3 @@ -108,7 +110,6 @@ def test_irrad_and_update(): index = base.get_irrad_index(False) assert index == 51 - base.t_net = 30 base.t_in = 1 base.t_ex = 0.1 @@ -117,6 +118,14 @@ def test_irrad_and_update(): index = base.get_irrad_index(False) assert index == 55 + base.t_net = 0.00001 + base.t_in = 0.000001 + base.t_ex = 0 + base.t_net = base._update_t_net() + assert np.isclose(base.t_net, 0.00001) + index = base.get_irrad_index(False) + assert index == 10 + def test_times_rates_mask(): input_path = './tests/unit/input/input.json' base = BaseClass(input_path) From 437dc52c5da9806b69ab1ad7ace2399e1a8b5b2c Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 2 Mar 2026 13:31:10 -0600 Subject: [PATCH 029/170] Add [all] data (pulse doesnt vary) --- examples/phd_results/prk/input.json | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/examples/phd_results/prk/input.json b/examples/phd_results/prk/input.json index 95b87720..c73a8b71 100644 --- a/examples/phd_results/prk/input.json +++ b/examples/phd_results/prk/input.json @@ -1,6 +1,7 @@ { - "selections": ["pulse", "intermediate", "saturation"], - "problem": "sine_relative", + "selections": ["intermediate", "intermediate [all]"], + "o_selections": ["pulse", "intermediate", "saturation"], + "problem": "step_relative", "euler_mode": "backward", "time_steps": [1e-3], "tf": 60, @@ -27,10 +28,20 @@ "yields": [0.0005810767, 0.002995618, 0.00165845, 0.0065752589, 0.004701, 0.00214555], "hls": [55.395699, 22.939397, 8.79516, 2.8361, 0.82819, 0.15777] }, + "intermediate [all]": { + "description": "Calculated using ENDFB71 data, all, (1,0) 30 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.000591267, 0.00316419, 0.002834526, 0.007079536, 0.00482916, 0.00073507], + "hls": [55.222525, 22.459077, 6.3348598, 2.0843, 0.349625, 0.006170445] + }, "saturation": { "description": "Calculated using ENDFB71 data, post-irrad, (60,0) 1200 second irradiation, 100 decay times, 600 decay seconds", "yields": [0.000576267, 0.002988244, 0.0018862306, 0.0069244077, 0.0044298534, 0.001862336], "hls": [55.4938, 23.030678, 8.43461, 2.63272, 0.7163197, 0.139332515] + }, + "saturation [all]": { + "description": "Calculated using ENDFB71 data, all, (60,0) 1200 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.0005771185, 0.0030126616, 0.0020301955, 0.007109, 0.0043759, 0.0016164], + "hls": [55.4809, 22.969864, 8.044375, 8.0443754, 2.5102436, 0.637035, 0.1137935] } } \ No newline at end of file From 7575174228fff0286aecff424ee2110827951186 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 2 Mar 2026 13:58:03 -0600 Subject: [PATCH 030/170] Clean up chart form to use min and max data scaled to nearest 10 scale --- mosden/postprocessing.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index dcc08857..c8d4e7d2 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -137,7 +137,8 @@ def _plot_group_vs_counts(self) -> None: plt.close() return None - def _chart_form(self, name: str, data: dict, cbar_label: str) -> None: + def _chart_form(self, name: str, data: dict, cbar_label: str, vmin: float=1e-1, + vmax: float=1e1) -> None: """ Create a chart of the nuclides with file name and with data @@ -148,6 +149,12 @@ def _chart_form(self, name: str, data: dict, cbar_label: str) -> None: data : dict[str, float] Data to plot, using the nuclide name as a key and the value to plot (of the form "XE135") + cbar_label : str + Label for the colorbar + vmin : float, optional + The minimum value of the colorbar + vmax : float, optional + The maximum value of the colorbar """ configure(permissive=True) plt.figure(figsize=(12, 8)) @@ -162,7 +169,9 @@ def _chart_form(self, name: str, data: dict, cbar_label: str) -> None: C.append(value) except KeyError: continue - norm = LogNorm(vmin=0.1, vmax=10) + vmin_use = 10 ** np.floor(np.log10(vmin)) + vmax_use = 10 ** np.ceil(np.log10(vmax)) + norm = LogNorm(vmin=vmin_use, vmax=vmax_use) plt.scatter(N, Z, c=C, norm=norm, marker="s", s=60) plt.set_cmap('viridis') cbar = plt.colorbar() @@ -278,8 +287,10 @@ def _get_sens_coeffs(self, write=False) -> tuple[list[dict[str, float]], if write: self.logger.info(f'\n{pcc_latex}') self.logger.info('Completed writing nuclides \n') - self._chart_form(name='PCC', data=summed_pcc_data, cbar_label='Sum of Pearson Correlation Coefficient Magnitudes') - self._chart_form(name='PCC_uncertainty', data=scaled_uncert_pcc, cbar_label='Sum of Relative Uncertainties Scaled by PCC Magnitudes') + chart_min_data = np.min((np.min(list(summed_pcc_data.values())), np.min(list(scaled_uncert_pcc.values())))) + chart_max_data = np.max((np.max(list(summed_pcc_data.values())), np.max(list(scaled_uncert_pcc.values())))) + self._chart_form(name='PCC', data=summed_pcc_data, cbar_label='Sum of Pearson Correlation Coefficient Magnitudes', vmin=chart_min_data, vmax=chart_max_data) + self._chart_form(name='PCC_uncertainty', data=scaled_uncert_pcc, cbar_label='Sum of Relative Uncertainties Scaled by PCC Magnitudes', vmin=chart_min_data, vmax=chart_max_data) sorted_summed_pccs = sorted(summed_pcc_data.items(), key=lambda item: item[1], reverse=True) top = 10 self.logger.info(f'Writing {top = } summed |PCC| nuclides') From edb1e812e280804a8a772d41152eeae0ef366ef1 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 3 Mar 2026 10:22:39 -0600 Subject: [PATCH 031/170] Fix postprocessing bug and fix halflife data --- examples/phd_results/prk/input.json | 6 ++--- mosden/base.py | 28 ++++++++++++++++++++++ mosden/countrate.py | 15 ++++-------- mosden/postprocessing.py | 36 +++++++++++++++++++++-------- 4 files changed, 61 insertions(+), 24 deletions(-) diff --git a/examples/phd_results/prk/input.json b/examples/phd_results/prk/input.json index c73a8b71..b8cc6588 100644 --- a/examples/phd_results/prk/input.json +++ b/examples/phd_results/prk/input.json @@ -1,6 +1,6 @@ { - "selections": ["intermediate", "intermediate [all]"], - "o_selections": ["pulse", "intermediate", "saturation"], + "o_selections": ["intermediate", "intermediate [all]"], + "selections": ["pulse", "intermediate", "intermediate [all]", "saturation", "saturation [all]"], "problem": "step_relative", "euler_mode": "backward", "time_steps": [1e-3], @@ -41,7 +41,7 @@ "saturation [all]": { "description": "Calculated using ENDFB71 data, all, (60,0) 1200 second irradiation, 100 decay times, 600 decay seconds", "yields": [0.0005771185, 0.0030126616, 0.0020301955, 0.007109, 0.0043759, 0.0016164], - "hls": [55.4809, 22.969864, 8.044375, 8.0443754, 2.5102436, 0.637035, 0.1137935] + "hls": [55.4809, 22.969864, 8.044375, 2.5102436, 0.637035, 0.1137935] } } \ No newline at end of file diff --git a/mosden/base.py b/mosden/base.py index 0f2cb841..aca3b4bb 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -149,6 +149,8 @@ def __init__(self, input_path: str) -> None: self.post_irrad_only: bool = (len(self.residual_masks) == 1 and 'post-irrad' in self.residual_masks) self.no_post_irrad: bool = ('post-irrad' not in self.residual_masks and 'all' not in self.residual_masks) self.decay_times = self._set_decay_times() + self.use_times = self._get_use_times() + np.random.seed(self.seed) @@ -168,6 +170,32 @@ def time_track(self, starttime: float, modulename: str = '') -> None: self.logger.info(f'{modulename} took {round(time() - starttime, 3)}s') return None + def _get_use_times(self, single_time_val: bool=False) -> np.ndarray[float]: + """ + Get all the times steps over which count rate data exists + + Parameters + ---------- + single_time_val : bool + Whether the problem is evaluated at a single point in time + + Returns + ------- + use_times : np.ndarray[float] + The time values where data exists + """ + if self.post_irrad_only: + use_times = self.decay_times + else: + mask_data = self._get_times_and_rates() + use_times = np.concatenate(([0], np.cumsum(mask_data['timesteps']))) + + if self.no_post_irrad: + post_irrad_index = self.get_irrad_index(single_time_val) + use_times = use_times[:post_irrad_index+1] + return use_times + + def _set_cycle_times(self, residence_time: float) -> list[float]: """ Returns the list of times applied in OpenMC for each residence time diff --git a/mosden/countrate.py b/mosden/countrate.py index c26461b0..35649776 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -113,9 +113,10 @@ def _count_rate_from_groups(self) -> dict[str: list[float]]: counts = fit_function(self.decay_times, parameters) count_rate = np.asarray(unumpy.nominal_values(counts), dtype=float) sigma_count_rate = np.asarray(unumpy.std_devs(counts), dtype=float) + irrad_index = self.get_irrad_index(False) data = { - 'times': self.decay_times, + 'times': self.use_times[irrad_index+1:], 'counts': count_rate, 'sigma counts': sigma_count_rate } @@ -176,20 +177,12 @@ def sample_parameter(val: ufloat, dist: str) -> float: 'Error: no data exists for given data combination') data: dict[str: list[float]] = dict() - if self.post_irrad_only: - use_times = self.decay_times - else: - mask_data = self._get_times_and_rates() - use_times = np.concatenate(([0], np.cumsum(mask_data['timesteps']))) - num_data = len(list(self.concentration_data[net_similar_nucs[-1]].keys())) single_time_val = False if num_data == 1: single_time_val = True - post_irrad_index = self.get_irrad_index(single_time_val) - - if self.no_post_irrad: - use_times = use_times[:post_irrad_index+1] + use_times = self._get_use_times(single_time_val=single_time_val) + post_irrad_index = self.get_irrad_index(single_time_val=single_time_val) count_rate: np.ndarray = np.zeros(len(use_times)) sigma_count_rate: np.ndarray = np.zeros(len(use_times)) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index c8d4e7d2..d0f8aba8 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -124,16 +124,26 @@ def _plot_group_vs_counts(self) -> None: create=False).read_vector_csv() countrate = CountRate(self.input_path) countrate.group_params = group_data - group_counts = countrate._count_rate_from_groups()['counts'] - summed_counts = CSVHandler( - self.countrate_path).read_vector_csv()['counts'] + group_data = countrate._count_rate_from_groups() + group_counts = np.asarray(group_data['counts']) + group_times = group_data['times'] + summed_data = CSVHandler( + self.countrate_path).read_vector_csv() + summed_counts = summed_data['counts'] + summed_times = summed_data['times'] + index_shift = len(summed_times) - len(group_times) + subtractor = 0 + if index_shift != 0: + subtractor = self.t_net + summed_counts = np.asarray(summed_counts[index_shift:]) + summed_times = np.asarray(summed_times[index_shift:]) pcnt_diff = (summed_counts - group_counts) / summed_counts * 100 - plt.plot(self.decay_times, pcnt_diff) + plt.plot(np.asarray(summed_times)-subtractor, pcnt_diff) plt.xlabel('Time [s]') plt.xscale('log') plt.ylabel('Relative Difference [\\%]') plt.tight_layout() - plt.savefig(f'{self.img_dir}pcnt_diff_counts.png') + plt.savefig(f'{self.img_dir}pcnt_diff_post_irrad_counts.png') plt.close() return None @@ -981,7 +991,8 @@ def _plot_counts(self) -> None: counts = self.post_data[self.names['countsMC']] countrate = CountRate(self.input_path) - times = countrate.decay_times + irrad_index = self.get_irrad_index(False) + 1 + times = countrate.use_times alpha_MC: float = 1 / np.sqrt(self.MC_samples) for MC_iterm, count_val in enumerate(counts): label = mc_label if MC_iterm == 0 else None @@ -1009,7 +1020,7 @@ def _plot_counts(self) -> None: base_sigma = np.asarray(count_data['sigma counts']) group_counts = countrate.calculate_count_rate(write_data=False) plt.plot( - times, + group_counts['times'], group_counts['counts'], color=group_color, alpha=0.75, @@ -1017,7 +1028,7 @@ def _plot_counts(self) -> None: linestyle='--', zorder=3) plt.fill_between( - times, + group_counts['times'], group_counts['counts'] - group_counts['sigma counts'], group_counts['counts'] + @@ -1039,11 +1050,11 @@ def _plot_counts(self) -> None: name = name.capitalize() countrate.group_params = lit_data data = countrate._count_rate_from_groups() - plt.plot(times, data['counts'], label=f'{name} 6-Group Fit', + plt.plot(data['times'], data['counts'], label=f'{name} 6-Group Fit', color=colors[index], linestyle=self.linestyles[index%len(self.linestyles)]) plt.fill_between( - times, + data['times'], data['counts'] - data['sigma counts'], data['counts'] + data['sigma counts'], alpha=0.3, @@ -1075,6 +1086,9 @@ def _plot_counts(self) -> None: plt.savefig(f'{self.img_dir}MC_counts.png') plt.close() + times = self.decay_times + if len(counts) > len(times): + counts = counts[irrad_index:] for MC_iterm, count_val in enumerate(counts): label = mc_label if MC_iterm == 0 else None plt.plot( @@ -1088,6 +1102,8 @@ def _plot_counts(self) -> None: count_data['sigma counts']) counts_base = unumpy.uarray(base_counts, base_sigma) + if len(counts_this_work) > len(times): + counts_this_work = counts_this_work[irrad_index:] this_over_base = counts_this_work / counts_base plt.errorbar( times, From 28b56113d0df0698189492cda9ab01b85916ac73 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 3 Mar 2026 13:30:13 -0600 Subject: [PATCH 032/170] Add analysis for varying net irrad time --- .../phd_results/t_net_analysis/analysis.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 examples/phd_results/t_net_analysis/analysis.py diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py new file mode 100644 index 00000000..c3f6f0ad --- /dev/null +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -0,0 +1,33 @@ +import matplotlib.pyplot as plt +plt.style.use('mosden.plotting') + + +endfb71_data_post_irrad = { + "0.00001": { + "yields": [0.000601, 0.00325528, 0.00323466, 0.00678078, 0.0036572234, 0.001167046], + "hls": [55.047, 22.133, 5.6015, 1.9612, 0.4696, 0.095268] + }, + "30": { + "yields": [0.0005810767, 0.002995618, 0.00165845, 0.0065752589, 0.004701, 0.00214555], + "hls": [55.395699, 22.939397, 8.79516, 2.8361, 0.82819, 0.15777] + }, + "1200": { + "yields": [0.000576267, 0.002988244, 0.0018862306, 0.0069244077, 0.0044298534, 0.001862336], + "hls": [55.4938, 23.030678, 8.43461, 2.63272, 0.7163197, 0.139332515] + } +} + +endfb71_data_all = { + "0.00001": { + "yields": [0.000601, 0.00325528, 0.00323466, 0.00678078, 0.0036572234, 0.001167046], + "hls": [55.047, 22.133, 5.6015, 1.9612, 0.4696, 0.095268] + }, + "30": { + "yields": [0.000591267, 0.00316419, 0.002834526, 0.007079536, 0.00482916, 0.00073507], + "hls": [55.222525, 22.459077, 6.3348598, 2.0843, 0.349625, 0.006170445] + }, + "1200": { + "yields": [0.0005771185, 0.0030126616, 0.0020301955, 0.007109, 0.0043759, 0.0016164], + "hls": [55.4809, 22.969864, 8.044375, 2.5102436, 0.637035, 0.1137935] + } +} \ No newline at end of file From 35b830a9895eee02428f532472fd64fa2460e706 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 3 Mar 2026 14:32:33 -0600 Subject: [PATCH 033/170] Add relevant csv data for analysis --- .../phd_results/t_net_analysis/analysis.py | 101 +++++++++++++----- .../t_net_analysis/intermediate_10_all.csv | 7 ++ .../t_net_analysis/intermediate_10_post.csv | 7 ++ .../t_net_analysis/intermediate_120_all.csv | 7 ++ .../t_net_analysis/intermediate_120_post.csv | 7 ++ .../t_net_analysis/intermediate_30_all.csv | 7 ++ .../t_net_analysis/intermediate_30_post.csv | 7 ++ .../t_net_analysis/pulse_0.00001_all.csv | 7 ++ .../t_net_analysis/pulse_0.00001_post.csv | 7 ++ .../t_net_analysis/saturation_1200_all.csv | 7 ++ .../t_net_analysis/saturation_1200_post.csv | 7 ++ 11 files changed, 142 insertions(+), 29 deletions(-) create mode 100644 examples/phd_results/t_net_analysis/intermediate_10_all.csv create mode 100644 examples/phd_results/t_net_analysis/intermediate_10_post.csv create mode 100644 examples/phd_results/t_net_analysis/intermediate_120_all.csv create mode 100644 examples/phd_results/t_net_analysis/intermediate_120_post.csv create mode 100644 examples/phd_results/t_net_analysis/intermediate_30_all.csv create mode 100644 examples/phd_results/t_net_analysis/intermediate_30_post.csv create mode 100644 examples/phd_results/t_net_analysis/pulse_0.00001_all.csv create mode 100644 examples/phd_results/t_net_analysis/pulse_0.00001_post.csv create mode 100644 examples/phd_results/t_net_analysis/saturation_1200_all.csv create mode 100644 examples/phd_results/t_net_analysis/saturation_1200_post.csv diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index c3f6f0ad..1f1424e2 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -1,33 +1,76 @@ import matplotlib.pyplot as plt +from collections import defaultdict +from mosden.utils.csv_handler import CSVHandler +import glob +import os plt.style.use('mosden.plotting') +def plot_data(data_vals): + formatted_data = defaultdict(list) + formatted_data['yields'] = defaultdict(list) + formatted_data['hls'] = defaultdict(list) + formatted_data["xs"] = [] + xlab = 'Irradiation Time [s]' -endfb71_data_post_irrad = { - "0.00001": { - "yields": [0.000601, 0.00325528, 0.00323466, 0.00678078, 0.0036572234, 0.001167046], - "hls": [55.047, 22.133, 5.6015, 1.9612, 0.4696, 0.095268] - }, - "30": { - "yields": [0.0005810767, 0.002995618, 0.00165845, 0.0065752589, 0.004701, 0.00214555], - "hls": [55.395699, 22.939397, 8.79516, 2.8361, 0.82819, 0.15777] - }, - "1200": { - "yields": [0.000576267, 0.002988244, 0.0018862306, 0.0069244077, 0.0044298534, 0.001862336], - "hls": [55.4938, 23.030678, 8.43461, 2.63272, 0.7163197, 0.139332515] - } -} - -endfb71_data_all = { - "0.00001": { - "yields": [0.000601, 0.00325528, 0.00323466, 0.00678078, 0.0036572234, 0.001167046], - "hls": [55.047, 22.133, 5.6015, 1.9612, 0.4696, 0.095268] - }, - "30": { - "yields": [0.000591267, 0.00316419, 0.002834526, 0.007079536, 0.00482916, 0.00073507], - "hls": [55.222525, 22.459077, 6.3348598, 2.0843, 0.349625, 0.006170445] - }, - "1200": { - "yields": [0.0005771185, 0.0030126616, 0.0020301955, 0.007109, 0.0043759, 0.0016164], - "hls": [55.4809, 22.969864, 8.044375, 2.5102436, 0.637035, 0.1137935] - } -} \ No newline at end of file + for t_net, params in data_vals.items(): + formatted_data['xs'].append(t_net) + for name, data in params.items(): + for group, val in enumerate(data): + formatted_data[name][group].append(val) + + markers = ['.', '*', '>', '<', 'v', '^'] + for name, data in formatted_data.items(): + if type(data) is list: + continue + for group, params in data.items(): + plt.plot(formatted_data['xs'], params, label=f'Group {group+1}', + marker=markers[group], linestyle='--', markersize=5, + linewidth=1) + plt.legend() + plt.xlabel(xlab) + if name == 'yields': + ylab = 'Group Yield' + elif name == 'hls': + ylab = 'Group Half-life [s]' + plt.ylabel(ylab) + plt.savefig(f'{name}.png') + plt.close() + + xs = formatted_data['xs'] + yields = formatted_data['yields'] + + y_arrays = [yields[group] for group in sorted(yields.keys())] + labels = [f'Group {group + 1}' for group in sorted(yields.keys())] + + plt.stackplot(xs, y_arrays, labels=labels) + + plt.xlabel(xlab) + plt.ylabel('Yield') + plt.legend(loc='upper left') + + plt.tight_layout() + plt.savefig('stack_yields.png') + plt.close() + +def build_data_dict(data_path=r'./'): + def helper(pathmod): + files = glob.glob(os.path.join(data_path, f"*{pathmod}.csv")) + data = {} + for file in files: + file: str = file + time = file.split('_')[1] + data[time] = dict() + file_data = CSVHandler(file).read_vector_csv() + data[time]['yields'] = file_data['yield'] + data[time]['hls'] = file_data['half_life'] + data = dict(sorted(data.items())) + return data + + post_data = helper('_post') + all_data = helper('_all') + + return post_data, all_data + +if __name__ == '__main__': + post_data, all_data = build_data_dict() + plot_data(post_data) \ No newline at end of file diff --git a/examples/phd_results/t_net_analysis/intermediate_10_all.csv b/examples/phd_results/t_net_analysis/intermediate_10_all.csv new file mode 100644 index 00000000..53d0e0ef --- /dev/null +++ b/examples/phd_results/t_net_analysis/intermediate_10_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005960792791545259,0.0,55.135012580612894,0.0 +0.0032076980439315044,0.0,22.300052183480698,0.0 +0.002852067744538698,0.0,6.07979006431029,0.0 +0.0072500454214785865,0.0,2.068868164010149,0.0 +0.004558198674648902,0.0,0.34336751183229575,0.0 +0.001340870481079989,0.0,0.004507230924419563,0.0 diff --git a/examples/phd_results/t_net_analysis/intermediate_10_post.csv b/examples/phd_results/t_net_analysis/intermediate_10_post.csv new file mode 100644 index 00000000..e04c3543 --- /dev/null +++ b/examples/phd_results/t_net_analysis/intermediate_10_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005870727013651158,0.0,55.290077835858426,0.0 +0.003091369998492769,0.0,22.664905168525173,0.0 +0.001968341704938068,0.0,7.5899319720354885,0.0 +0.006438600070596588,0.0,2.6418605208557473,0.0 +0.004438727502047097,0.0,0.80027907621914,0.0 +0.0021307909835243557,0.0,0.15804682735133815,0.0 diff --git a/examples/phd_results/t_net_analysis/intermediate_120_all.csv b/examples/phd_results/t_net_analysis/intermediate_120_all.csv new file mode 100644 index 00000000..317d8661 --- /dev/null +++ b/examples/phd_results/t_net_analysis/intermediate_120_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005823400215057117,0.0,55.38630382837625,0.0 +0.0030897459200327363,0.0,22.743864037034047,0.0 +0.0023312673910747105,0.0,7.260463540180148,0.0 +0.007188639984811037,0.0,2.281422548703631,0.0 +0.005299839054028378,0.0,0.37494942046447,0.0 +0.0003861811628406449,0.0,0.011808495575342024,0.0 diff --git a/examples/phd_results/t_net_analysis/intermediate_120_post.csv b/examples/phd_results/t_net_analysis/intermediate_120_post.csv new file mode 100644 index 00000000..07b3a8fd --- /dev/null +++ b/examples/phd_results/t_net_analysis/intermediate_120_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005767048630914441,0.0,55.477220312818744,0.0 +0.0029564455268097263,0.0,23.089996196122005,0.0 +0.0017864532832818157,0.0,8.839865917748451,0.0 +0.006860686320503778,0.0,2.7158202487143988,0.0 +0.004538628126891252,0.0,0.750955358584509,0.0 +0.0019453670322669935,0.0,0.1444922641142176,0.0 diff --git a/examples/phd_results/t_net_analysis/intermediate_30_all.csv b/examples/phd_results/t_net_analysis/intermediate_30_all.csv new file mode 100644 index 00000000..d25ec2e0 --- /dev/null +++ b/examples/phd_results/t_net_analysis/intermediate_30_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005911850193901523,0.0,55.22393043614616,0.0 +0.003163109413726762,0.0,22.46245897522971,0.0 +0.0028222439571752517,0.0,6.349704456768178,0.0 +0.007080343614618728,0.0,2.0901662589500822,0.0 +0.004831262210233585,0.0,0.35113048748943776,0.0 +0.0007442719988219486,0.0,0.0062679624222023445,0.0 diff --git a/examples/phd_results/t_net_analysis/intermediate_30_post.csv b/examples/phd_results/t_net_analysis/intermediate_30_post.csv new file mode 100644 index 00000000..e305bd37 --- /dev/null +++ b/examples/phd_results/t_net_analysis/intermediate_30_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005811024743039744,0.0,55.39526601544824,0.0 +0.002996173853064892,0.0,22.937958196181093,0.0 +0.0016607510618795024,0.0,8.78676461612742,0.0 +0.0065818428022054246,0.0,2.8330939407621774,0.0 +0.0046993321437068525,0.0,0.8258084004380751,0.0 +0.002138155087000719,0.0,0.157340620909389,0.0 diff --git a/examples/phd_results/t_net_analysis/pulse_0.00001_all.csv b/examples/phd_results/t_net_analysis/pulse_0.00001_all.csv new file mode 100644 index 00000000..037a2fe4 --- /dev/null +++ b/examples/phd_results/t_net_analysis/pulse_0.00001_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006483599627133113,0.0,54.249302430034945,0.0 +0.003603201783433704,0.0,20.75272053617694,0.0 +0.006892455512097611,0.0,3.418177728377391,0.0 +0.005634490916347498,0.0,0.8419229562786248,0.0 +0.0018999590391563853,0.0,0.13128248341716664,0.0 +2.8612956761155514e-05,0.0,0.004057200980891107,0.0 diff --git a/examples/phd_results/t_net_analysis/pulse_0.00001_post.csv b/examples/phd_results/t_net_analysis/pulse_0.00001_post.csv new file mode 100644 index 00000000..e55c9dad --- /dev/null +++ b/examples/phd_results/t_net_analysis/pulse_0.00001_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006010003059852591,0.0,55.04723041412313,0.0 +0.003255280588350585,0.0,22.133220787208796,0.0 +0.0032346608600193516,0.0,5.601539640596733,0.0 +0.006780784272096461,0.0,1.9611956331472495,0.0 +0.0036572233997257285,0.0,0.46959941257806,0.0 +0.0011670464710297904,0.0,0.0952681389499337,0.0 diff --git a/examples/phd_results/t_net_analysis/saturation_1200_all.csv b/examples/phd_results/t_net_analysis/saturation_1200_all.csv new file mode 100644 index 00000000..5344c0d2 --- /dev/null +++ b/examples/phd_results/t_net_analysis/saturation_1200_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005771243371292638,0.0,55.48081611875357,0.0 +0.003012739319976157,0.0,22.969586143388984,0.0 +0.002030301243574989,0.0,8.043850048784337,0.0 +0.007109375113888054,0.0,2.510086618543929,0.0 +0.0043760294212489715,0.0,0.6368977344666057,0.0 +0.0016159408687693988,0.0,0.11373253387826857,0.0 diff --git a/examples/phd_results/t_net_analysis/saturation_1200_post.csv b/examples/phd_results/t_net_analysis/saturation_1200_post.csv new file mode 100644 index 00000000..eb382360 --- /dev/null +++ b/examples/phd_results/t_net_analysis/saturation_1200_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005762611622725469,0.0,55.493895657763666,0.0 +0.0029881883988900804,0.0,23.030931376368496,0.0 +0.0018865443985343047,0.0,8.434280814626245,0.0 +0.00692468430202603,0.0,2.6325228359849797,0.0 +0.004429601324485666,0.0,0.7162201664170799,0.0 +0.001862075575732143,0.0,0.13931585236741362,0.0 From 4f30d8ae94762e13cdbdef4c7d891c8cee6fa6a7 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 3 Mar 2026 14:57:42 -0600 Subject: [PATCH 034/170] Move data and update analysis --- examples/phd_results/t_net_analysis/analysis.py | 16 ++++++++++------ .../{ => data}/intermediate_10_all.csv | 0 .../{ => data}/intermediate_10_post.csv | 0 .../{ => data}/intermediate_120_all.csv | 0 .../{ => data}/intermediate_120_post.csv | 0 .../{ => data}/intermediate_30_all.csv | 0 .../{ => data}/intermediate_30_post.csv | 0 .../t_net_analysis/data/intermediate_5_all.csv | 7 +++++++ .../t_net_analysis/data/intermediate_5_post.csv | 7 +++++++ .../{ => data}/pulse_0.00001_all.csv | 0 .../{ => data}/pulse_0.00001_post.csv | 0 .../{ => data}/saturation_1200_all.csv | 0 .../{ => data}/saturation_1200_post.csv | 0 13 files changed, 24 insertions(+), 6 deletions(-) rename examples/phd_results/t_net_analysis/{ => data}/intermediate_10_all.csv (100%) rename examples/phd_results/t_net_analysis/{ => data}/intermediate_10_post.csv (100%) rename examples/phd_results/t_net_analysis/{ => data}/intermediate_120_all.csv (100%) rename examples/phd_results/t_net_analysis/{ => data}/intermediate_120_post.csv (100%) rename examples/phd_results/t_net_analysis/{ => data}/intermediate_30_all.csv (100%) rename examples/phd_results/t_net_analysis/{ => data}/intermediate_30_post.csv (100%) create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_5_all.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_5_post.csv rename examples/phd_results/t_net_analysis/{ => data}/pulse_0.00001_all.csv (100%) rename examples/phd_results/t_net_analysis/{ => data}/pulse_0.00001_post.csv (100%) rename examples/phd_results/t_net_analysis/{ => data}/saturation_1200_all.csv (100%) rename examples/phd_results/t_net_analysis/{ => data}/saturation_1200_post.csv (100%) diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index 1f1424e2..77f54661 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -5,12 +5,13 @@ import os plt.style.use('mosden.plotting') -def plot_data(data_vals): +def plot_data(data_vals, namemod=''): formatted_data = defaultdict(list) formatted_data['yields'] = defaultdict(list) formatted_data['hls'] = defaultdict(list) formatted_data["xs"] = [] xlab = 'Irradiation Time [s]' + xscale = 'log' for t_net, params in data_vals.items(): formatted_data['xs'].append(t_net) @@ -28,12 +29,13 @@ def plot_data(data_vals): linewidth=1) plt.legend() plt.xlabel(xlab) + plt.xscale(xscale) if name == 'yields': ylab = 'Group Yield' elif name == 'hls': ylab = 'Group Half-life [s]' plt.ylabel(ylab) - plt.savefig(f'{name}.png') + plt.savefig(f'{name}{namemod}.png') plt.close() xs = formatted_data['xs'] @@ -45,20 +47,21 @@ def plot_data(data_vals): plt.stackplot(xs, y_arrays, labels=labels) plt.xlabel(xlab) + plt.xscale(xscale) plt.ylabel('Yield') plt.legend(loc='upper left') plt.tight_layout() - plt.savefig('stack_yields.png') + plt.savefig(f'stack_yields{namemod}.png') plt.close() -def build_data_dict(data_path=r'./'): +def build_data_dict(data_path=r'./data/'): def helper(pathmod): files = glob.glob(os.path.join(data_path, f"*{pathmod}.csv")) data = {} for file in files: file: str = file - time = file.split('_')[1] + time = float(file.split('_')[1]) data[time] = dict() file_data = CSVHandler(file).read_vector_csv() data[time]['yields'] = file_data['yield'] @@ -73,4 +76,5 @@ def helper(pathmod): if __name__ == '__main__': post_data, all_data = build_data_dict() - plot_data(post_data) \ No newline at end of file + plot_data(post_data, '_post') + plot_data(all_data, '_all') \ No newline at end of file diff --git a/examples/phd_results/t_net_analysis/intermediate_10_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_10_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/intermediate_10_all.csv rename to examples/phd_results/t_net_analysis/data/intermediate_10_all.csv diff --git a/examples/phd_results/t_net_analysis/intermediate_10_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_10_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/intermediate_10_post.csv rename to examples/phd_results/t_net_analysis/data/intermediate_10_post.csv diff --git a/examples/phd_results/t_net_analysis/intermediate_120_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_120_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/intermediate_120_all.csv rename to examples/phd_results/t_net_analysis/data/intermediate_120_all.csv diff --git a/examples/phd_results/t_net_analysis/intermediate_120_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_120_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/intermediate_120_post.csv rename to examples/phd_results/t_net_analysis/data/intermediate_120_post.csv diff --git a/examples/phd_results/t_net_analysis/intermediate_30_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_30_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/intermediate_30_all.csv rename to examples/phd_results/t_net_analysis/data/intermediate_30_all.csv diff --git a/examples/phd_results/t_net_analysis/intermediate_30_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_30_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/intermediate_30_post.csv rename to examples/phd_results/t_net_analysis/data/intermediate_30_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_5_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_5_all.csv new file mode 100644 index 00000000..cfc5febb --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_5_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006040269933788191,0.0,54.99680567432679,0.0 +0.0032856673874108776,0.0,22.026042584018736,0.0 +0.003569557213842515,0.0,5.299852716912248,0.0 +0.0069782715302884124,0.0,1.8038796498336802,0.0 +0.004055442992768717,0.0,0.31053717635571987,0.0 +0.0018310736631602115,0.0,0.0035938010426241267,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_5_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_5_post.csv new file mode 100644 index 00000000..f8f99a4c --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_5_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005904140511414849,0.0,55.23145144394892,0.0 +0.0031371175622057013,0.0,22.52568079668908,0.0 +0.0022401297336000223,0.0,6.979697394504298,0.0 +0.006544079642354292,0.0,2.462907449353168,0.0 +0.004128534894667884,0.0,0.7361235759565475,0.0 +0.0020150655483998285,0.0,0.15158001703723162,0.0 diff --git a/examples/phd_results/t_net_analysis/pulse_0.00001_all.csv b/examples/phd_results/t_net_analysis/data/pulse_0.00001_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/pulse_0.00001_all.csv rename to examples/phd_results/t_net_analysis/data/pulse_0.00001_all.csv diff --git a/examples/phd_results/t_net_analysis/pulse_0.00001_post.csv b/examples/phd_results/t_net_analysis/data/pulse_0.00001_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/pulse_0.00001_post.csv rename to examples/phd_results/t_net_analysis/data/pulse_0.00001_post.csv diff --git a/examples/phd_results/t_net_analysis/saturation_1200_all.csv b/examples/phd_results/t_net_analysis/data/saturation_1200_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/saturation_1200_all.csv rename to examples/phd_results/t_net_analysis/data/saturation_1200_all.csv diff --git a/examples/phd_results/t_net_analysis/saturation_1200_post.csv b/examples/phd_results/t_net_analysis/data/saturation_1200_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/saturation_1200_post.csv rename to examples/phd_results/t_net_analysis/data/saturation_1200_post.csv From ab53c0563e9234dd42cf7abd564cb7d538da8cb5 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 3 Mar 2026 15:25:41 -0600 Subject: [PATCH 035/170] Fix count rate bug for post processing --- mosden/countrate.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mosden/countrate.py b/mosden/countrate.py index 35649776..ee173665 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -97,6 +97,12 @@ def _count_rate_from_groups(self) -> dict[str: list[float]]: else: raise NotImplementedError(msg) + irrad_index = self.get_irrad_index(False) + if self.post_irrad_only: + use_times = self.decay_times + else: + use_times = self.use_times[irrad_index+1:] + parameters = np.zeros(grouper.num_groups * 2, dtype=object) for i in range(grouper.num_groups): yield_val = ufloat( @@ -113,10 +119,9 @@ def _count_rate_from_groups(self) -> dict[str: list[float]]: counts = fit_function(self.decay_times, parameters) count_rate = np.asarray(unumpy.nominal_values(counts), dtype=float) sigma_count_rate = np.asarray(unumpy.std_devs(counts), dtype=float) - irrad_index = self.get_irrad_index(False) data = { - 'times': self.use_times[irrad_index+1:], + 'times': use_times, 'counts': count_rate, 'sigma counts': sigma_count_rate } From 3b284b4e46bae4999163877532c46830e7a366be Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 3 Mar 2026 15:38:18 -0600 Subject: [PATCH 036/170] Add more data to analysis --- examples/phd_results/t_net_analysis/analysis.py | 1 + .../t_net_analysis/data/intermediate_0.01_all.csv | 7 +++++++ .../t_net_analysis/data/intermediate_0.01_post.csv | 7 +++++++ .../t_net_analysis/data/intermediate_0.1_all.csv | 7 +++++++ .../t_net_analysis/data/intermediate_0.1_post.csv | 7 +++++++ .../phd_results/t_net_analysis/data/intermediate_1_all.csv | 7 +++++++ .../t_net_analysis/data/intermediate_1_post.csv | 7 +++++++ 7 files changed, 43 insertions(+) create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_0.01_all.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_0.01_post.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_0.1_all.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_0.1_post.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_1_all.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_1_post.csv diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index 77f54661..564027f2 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -34,6 +34,7 @@ def plot_data(data_vals, namemod=''): ylab = 'Group Yield' elif name == 'hls': ylab = 'Group Half-life [s]' + plt.yscale('log') plt.ylabel(ylab) plt.savefig(f'{name}{namemod}.png') plt.close() diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.01_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_0.01_all.csv new file mode 100644 index 00000000..5c812403 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_0.01_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006485018518832016,0.0,54.2469856753461,0.0 +0.0036040603696307905,0.0,20.749027901277156,0.0 +0.006900010280872543,0.0,3.4150939273763403,0.0 +0.005632050428006963,0.0,0.8399619029265551,0.0 +0.0018971833873130657,0.0,0.13065211904843477,0.0 +2.4623215498992977e-05,0.0,0.0010000000000000002,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.01_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_0.01_post.csv new file mode 100644 index 00000000..951243d8 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_0.01_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006008555876926074,0.0,55.04973097665621,0.0 +0.0032538616121506993,0.0,22.13821610446272,0.0 +0.003220838250943124,0.0,5.615787757111658,0.0 +0.00678174382603953,0.0,1.9667995273608267,0.0 +0.00366131834572984,0.0,0.4721474302593159,0.0 +0.00117658898775106,0.0,0.09601983117696204,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.1_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_0.1_all.csv new file mode 100644 index 00000000..dc5fa92c --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_0.1_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006453473469655309,0.0,54.298815148000386,0.0 +0.0035848091840109324,0.0,20.83134371204134,0.0 +0.006722002274506182,0.0,3.487324533092996,0.0 +0.005685382325368996,0.0,0.8872719240352288,0.0 +0.002019732218546167,0.0,0.14274090925701588,0.0 +0.00017298158522748038,0.0,0.0023762578890053655,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.1_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_0.1_post.csv new file mode 100644 index 00000000..2c7782c8 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_0.1_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.000599786164298651,0.0,55.0682206693197,0.0 +0.003243239058797959,0.0,22.175399604072048,0.0 +0.0031186126524967495,0.0,5.724229027857738,0.0 +0.006786074919922997,0.0,2.0090780583378023,0.0 +0.0036899531367383153,0.0,0.4919526840121775,0.0 +0.0012493498153551366,0.0,0.10209310785234799,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_1_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_1_all.csv new file mode 100644 index 00000000..437b7dd3 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_1_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006086262937084633,0.0,54.91640504645117,0.0 +0.0033250707126951905,0.0,21.87971705687883,0.0 +0.003949574576303563,0.0,4.970151056033985,0.0 +0.0066446222836115,0.0,1.6991109207325052,0.0 +0.003570886091169657,0.0,0.35787759324900703,0.0 +0.0012549488909106414,0.0,0.015288249158700713,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_1_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_1_post.csv new file mode 100644 index 00000000..5d00a83c --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_1_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005958154458226755,0.0,55.13710442225809,0.0 +0.003201467002514021,0.0,22.317924063808807,0.0 +0.002739069631935949,0.0,6.182045540269402,0.0 +0.006746951485608541,0.0,2.182126582675833,0.0 +0.003776253848630239,0.0,0.5845317036745138,0.0 +0.0016138318005039574,0.0,0.1289300613718118,0.0 From 0efebc6dfc2532cef6356eb8e9b17c6be4eba333 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 4 Mar 2026 11:24:14 -0600 Subject: [PATCH 037/170] Add more data and total yields analysis --- .../phd_results/t_net_analysis/analysis.py | 18 ++++++++++++++++++ .../data/intermediate_0.001_all.csv | 7 +++++++ .../data/intermediate_0.001_post.csv | 7 +++++++ .../t_net_analysis/data/intermediate_2_all.csv | 7 +++++++ .../data/intermediate_2_post.csv | 7 +++++++ .../t_net_analysis/data/intermediate_3_all.csv | 7 +++++++ .../data/intermediate_3_post.csv | 7 +++++++ .../t_net_analysis/data/intermediate_4_all.csv | 7 +++++++ .../data/intermediate_4_post.csv | 7 +++++++ .../data/intermediate_600_all.csv | 7 +++++++ .../data/intermediate_600_post.csv | 7 +++++++ 11 files changed, 88 insertions(+) create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_0.001_all.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_0.001_post.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_2_all.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_2_post.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_3_all.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_3_post.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_4_all.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_4_post.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_600_all.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_600_post.csv diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index 564027f2..9d373f51 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -13,6 +13,14 @@ def plot_data(data_vals, namemod=''): xlab = 'Irradiation Time [s]' xscale = 'log' + total_yields = [] + for t, params in data_vals.items(): + for key, vals in params.items(): + if key == 'yields': + total_yield = sum(vals) + total_yields.append(total_yield) + max_index = total_yields.index(max(total_yields)) + for t_net, params in data_vals.items(): formatted_data['xs'].append(t_net) for name, data in params.items(): @@ -20,6 +28,16 @@ def plot_data(data_vals, namemod=''): formatted_data[name][group].append(val) markers = ['.', '*', '>', '<', 'v', '^'] + print(f'Maximum yield of {total_yields[max_index]} at {formatted_data["xs"][max_index]}s') + plt.plot(formatted_data['xs'], total_yields) + plt.xscale(xscale) + plt.xlabel(xlab) + plt.ylabel('Total Yield') + plt.savefig(f'total_yield{namemod}.png') + plt.close() + + + for name, data in formatted_data.items(): if type(data) is list: continue diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.001_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_0.001_all.csv new file mode 100644 index 00000000..fe1c47e5 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_0.001_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006499096769369495,0.0,54.22394242342692,0.0 +0.003612551633452274,0.0,20.712549679607605,0.0 +0.006976008391641474,0.0,3.3845073029727235,0.0 +0.005607032005514416,0.0,0.8201904585702068,0.0 +0.0018402138932761744,0.0,0.12620856467784933,0.0 +8.381311020611309e-06,0.0,0.0010000000000000002,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.001_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_0.001_post.csv new file mode 100644 index 00000000..c2a91f06 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_0.001_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006009856919977145,0.0,55.04748291105819,0.0 +0.0032551374913199435,0.0,22.133724839690096,0.0 +0.0032332651271008116,0.0,5.602973990360857,0.0 +0.006780884948189207,0.0,1.961760325227637,0.0 +0.00365763910509533,0.0,0.4698553892465339,0.0 +0.0011680076099961233,0.0,0.09534331347729975,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_2_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_2_all.csv new file mode 100644 index 00000000..e6e98d69 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_2_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006263892162067747,0.0,54.61523783342842,0.0 +0.003461351085999831,0.0,21.346359447850258,0.0 +0.005463035391559748,0.0,4.053420132372419,0.0 +0.006225119025448004,0.0,1.2253311135018417,0.0 +0.0028132840954583683,0.0,0.19840416473769726,0.0 +0.0010237354709824056,0.0,0.004263335271984507,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_2_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_2_post.csv new file mode 100644 index 00000000..5b0cdf1b --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_2_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005938318006019015,0.0,55.17167215796692,0.0 +0.003178993193604193,0.0,22.392115022438382,0.0 +0.002551465382412492,0.0,6.448980277194463,0.0 +0.006687916480591118,0.0,2.279717171213451,0.0 +0.0038488166863012503,0.0,0.641530422099903,0.0 +0.0018012500083226714,0.0,0.1395154918970284,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_3_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_3_all.csv new file mode 100644 index 00000000..014a8d0c --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_3_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006188858643760996,0.0,54.742546658750584,0.0 +0.0034075733491696794,0.0,21.562579701225726,0.0 +0.0048909808497902,0.0,4.365341577673077,0.0 +0.0066001300771524425,0.0,1.374740027500838,0.0 +0.003146833501667833,0.0,0.19276381383953434,0.0 +0.0009984691598396826,0.0,0.0022472902205434263,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_3_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_3_post.csv new file mode 100644 index 00000000..73ccc12e --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_3_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005920974849588064,0.0,55.20197603287414,0.0 +0.003158291408853417,0.0,22.458901690967924,0.0 +0.0023908047135946385,0.0,6.706526714901117,0.0 +0.0066181346070878985,0.0,2.370875249808899,0.0 +0.003969532986168156,0.0,0.6917857850932042,0.0 +0.001923344322672401,0.0,0.1463294252893909,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_4_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_4_all.csv new file mode 100644 index 00000000..233448c7 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_4_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006128170829504414,0.0,54.846004003273706,0.0 +0.0033607800074906225,0.0,21.74529226799735,0.0 +0.0043790713188775685,0.0,4.682629795900243,0.0 +0.006809123979373981,0.0,1.52674840336516,0.0 +0.0034690074340597496,0.0,0.22246950402019913,0.0 +0.0011326338446230708,0.0,0.002582898398175469,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_4_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_4_post.csv new file mode 100644 index 00000000..a79a8b1f --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_4_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005913451669565439,0.0,55.21514052814437,0.0 +0.003148967018047109,0.0,22.488497265861213,0.0 +0.002322649109552858,0.0,6.825749901184098,0.0 +0.0065848230820852015,0.0,2.411759446983226,0.0 +0.004036181844800443,0.0,0.71253927043821,0.0 +0.001968557919406881,0.0,0.14896036242025062,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_600_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_600_all.csv new file mode 100644 index 00000000..3df93ecd --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_600_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005789431597744432,0.0,55.45308337627322,0.0 +0.0030606650371916557,0.0,22.846884339999015,0.0 +0.002293762517943019,0.0,7.372470207605848,0.0 +0.007202992783117786,0.0,2.346831111495085,0.0 +0.004256297356130838,0.0,0.558691092398395,0.0 +0.0013756165479870746,0.0,0.09064126062053926,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_600_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_600_post.csv new file mode 100644 index 00000000..6d829269 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_600_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005762537167555658,0.0,55.49390818310142,0.0 +0.0029881579652593976,0.0,23.031149723077817,0.0 +0.001886672218267134,0.0,8.434057691141492,0.0 +0.006924716379900181,0.0,2.6324698838758764,0.0 +0.004429534624673338,0.0,0.7161978226253582,0.0 +0.001862019901422795,0.0,0.1393123536322186,0.0 From 9af7f89cb137647c727fa9b785a265f2a1503cd1 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 4 Mar 2026 11:40:02 -0600 Subject: [PATCH 038/170] Add new example for four DNPs and fix overwrite function --- examples/four_dnps/emission_probability.csv | 5 ++ examples/four_dnps/input.json | 65 +++++++++++++++++++++ mosden/utils/csv_handler.py | 1 + 3 files changed, 71 insertions(+) create mode 100644 examples/four_dnps/emission_probability.csv create mode 100644 examples/four_dnps/input.json diff --git a/examples/four_dnps/emission_probability.csv b/examples/four_dnps/emission_probability.csv new file mode 100644 index 00000000..fb9bbe00 --- /dev/null +++ b/examples/four_dnps/emission_probability.csv @@ -0,0 +1,5 @@ +Nuclide,emission probability,sigma emission probability,half_life,sigma half_life +Br87,0.026,0.0004,55.65,0.13 +I137,0.0714,0.0023,24.5,0.2 +Rb94,0.105,0.004,2.702,0.005 +As86,0.1248662982,1e-12,0.945,0.008 \ No newline at end of file diff --git a/examples/four_dnps/input.json b/examples/four_dnps/input.json new file mode 100644 index 00000000..005a02b6 --- /dev/null +++ b/examples/four_dnps/input.json @@ -0,0 +1,65 @@ +{ + "name": "Four DNPs", + "file_options": { + "overwrite": { + "preprocessing": false, + "concentrations": true, + "count_rate": true, + "group_fitting": true, + "postprocessing": true, + "logger": true + }, + "unprocessed_data_dir": "/home/luke/github/mosden/mosden/data/unprocessed/", + "log_level": 20 + }, + "data_options": { + "half_life": "endfb71/decay/", + "cross_section": "", + "emission_probability": "endfb71/decay/", + "fission_yield": "endfb71/nfy/", + "decay_time_spacing": "log", + "temperature_K": 920, + "density_g_cm3": 2.3275, + "energy_MeV": 0.0253e-6, + "fissile_fractions": { + "U235": 1.0 + } + }, + "modeling_options": { + "concentration_handling": "OMC", + "count_rate_handling": "data", + "residual_handling": ["all"], + "reprocessing_locations": ["excore"], + "reprocessing": { + "Xe": 0.0 + }, + "irrad_type": "intermediate", + "spatial_scaling": { + "flux": false, + "reprocessing": false + }, + "base_removal_scaling": 0.5, + "incore_s": 0.5, + "excore_s": 0, + "net_irrad_s": 5, + "decay_time": 600, + "num_decay_times": 100, + "openmc_settings": { + "nps": 5000, + "batches": 10, + "source": 1e3, + "run_omc": true, + "write_fission_json": true, + "write_nuyield_json": true, + "min_timestep": 1e10 + } + }, + "group_options": { + "num_groups": 4, + "method": "nlls", + "parameter_guesses": 10, + "samples": 1, + "sample_func": "normal", + "seed": 1 + } +} diff --git a/mosden/utils/csv_handler.py b/mosden/utils/csv_handler.py index a849a522..5ea19166 100644 --- a/mosden/utils/csv_handler.py +++ b/mosden/utils/csv_handler.py @@ -160,6 +160,7 @@ def write_csv(self, data: dict[str: dict[str, float]]) -> None: """ if not self.overwrite and self._file_exists(): self.logger.warning(f"File {self.file_path} already exists. Set overwrite=True to overwrite.") + return None df = pd.DataFrame.from_dict(data, orient='index') df.index.name = 'Nuclide' df.to_csv(self.file_path, index=True) From 32efef2eb6d57975dd62d7530e6ea9a5c94d7f8c Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 4 Mar 2026 12:01:37 -0600 Subject: [PATCH 039/170] Add a test to make sure irrad fit working as expected --- tests/unit/test_groupfit.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index 80633a78..1a61cab5 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -391,4 +391,25 @@ def test_effective_fiss_many_ts(): irrad_fiss = grouper._get_irrad_fission_component(grouper.fission_times, lams, np.exp, np.expm1) assert np.isclose(eff_fiss, stat_fiss, atol=1e-2) - assert np.isclose(eff_fiss, irrad_fiss[0][-1], atol=1e-2) \ No newline at end of file + assert np.isclose(eff_fiss, irrad_fiss[0][-1], atol=1e-2) + +def test_irrad_fit(): + input_path = './tests/unit/input/input.json' + grouper = Grouper(input_path) + tf = 1000 + times = np.arange(0, tf, tf/100) + grouper.fission_times = times + grouper.t_net = tf + grouper.full_fission_term = np.ones(len(times)) + yield_val = 1 + half_life = 10 + parameters = [yield_val, half_life] + grouper.num_groups = 1 + lam_val = np.log(2)/half_life + expected_counts = lam_val * (yield_val / lam_val * (1 - np.exp(-lam_val * times))) + steady_state_val = yield_val + + count_rate = grouper._get_irrad_counts(times, parameters) + assert np.allclose(count_rate, expected_counts) + assert count_rate[0] == 0.0 + assert count_rate[-1] == steady_state_val \ No newline at end of file From e24b4e6f46fb292a7b09473302eb4ddb00276b59 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 4 Mar 2026 13:49:14 -0600 Subject: [PATCH 040/170] Add in further diagnostics and count rate plotting pre-decay --- mosden/groupfit.py | 35 +++++++++++++++++++++-------- mosden/postprocessing.py | 44 +++++++++++++++++++++++++++++++++++-- tests/unit/test_groupfit.py | 40 ++++++++++++++++++++++++++++++--- 3 files changed, 105 insertions(+), 14 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 9c29af8f..35a6b949 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -422,6 +422,31 @@ def _restructure_intermediate_yields(self, parameters: np.ndarray[float|object], actual_parameters = np.concatenate((actual_yields, half_lives)) return actual_parameters + def _get_fit_func(self) -> Callable: + """ + Get the associated function for the irradiation type + + Returns + ------- + fit_function : Callable + The function that fits the group parameter data to count rates + + Raises + ------ + NotImplementedError + If an irradiation type is not implemented + """ + if self.irrad_type == 'pulse': + fit_function = self._pulse_fit_function + elif self.irrad_type == 'saturation': + fit_function = self._saturation_fit_function + elif self.irrad_type == 'intermediate': + fit_function = self._intermediate_numerical_fit_function + else: + raise NotImplementedError(f'{self.irrad_type} not supported') + return fit_function + + def _get_modified_counts_and_times(self, times: np.ndarray[float], counts: np.ndarray[float]) -> tuple[np.ndarray[float], np.ndarray[float], np.ndarray[float], np.ndarray[float]]: """ @@ -493,15 +518,7 @@ def _nonlinear_least_squares(self, self._set_refined_fission_term(times) counts = np.asarray(count_data['counts']) count_err = np.asarray(count_data['sigma counts']) - if self.irrad_type == 'pulse': - fit_function = self._pulse_fit_function - elif self.irrad_type == 'saturation': - fit_function = self._saturation_fit_function - elif self.irrad_type == 'intermediate': - fit_function = self._intermediate_numerical_fit_function - else: - raise NotImplementedError( - f'{self.irrad_type} not supported in nonlinear least squares') + fit_function = self._get_fit_func() min_half_life = 1e-3 max_half_life = 1e3 diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index d0f8aba8..7a702e36 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -104,7 +104,9 @@ def run(self) -> None: """ self.compare_yields() - self.compare_group_to_data() + if not self.no_post_irrad: + self.compare_group_to_data() + self.compare_counts() self.MC_NLLS_analysis() return None @@ -114,6 +116,43 @@ def compare_group_to_data(self) -> None: """ self._plot_group_vs_counts() return None + + def compare_counts(self) -> None: + """ + Compare the counts from the actual data to the fit from params + """ + grouper = Grouper(self.input_path) + group_data = CSVHandler( + self.group_path, + create=False).read_vector_csv() + parameters = group_data['yield'] + group_data['half_life'] + count_data = CSVHandler(self.countrate_path).read_vector_csv() + times = np.asarray(count_data['times']) + grouper._set_refined_fission_term(times) + counts = np.asarray(count_data['counts']) + fit_func = grouper._get_fit_func() + times, counts, irrad_times, irrad_counts = grouper._get_modified_counts_and_times(times, counts) + + + irrad_fit_counts = grouper._get_irrad_counts(irrad_times, parameters) + post_irrad_fit_counts = fit_func(times, parameters) + + total_time = np.append(irrad_times, times) + total_fit_counts = np.append(irrad_fit_counts, post_irrad_fit_counts) + + plt.plot(irrad_times, irrad_counts, label='Mean, This Work', color='black', + marker='x', markersize=5, linestyle='') + plt.plot(times, counts, color='black', + marker='x', markersize=5, linestyle='', markevery=5) + plt.plot(total_time, total_fit_counts, label='Group Fit, This Work', color='blue', + linestyle='--') + plt.legend() + plt.xlabel('Time [s]') + plt.ylabel(r'Delayed Neutron Count Rate [$\# \cdot s^{-1}$]') + plt.tight_layout() + plt.savefig(f'{self.img_dir}full_countrate.png') + plt.close() + def _plot_group_vs_counts(self) -> None: """ @@ -196,7 +235,8 @@ def MC_NLLS_analysis(self) -> None: """ Analyze Monte Carlo Non-linear Least Squares results """ - self._plot_counts() + if not self.no_post_irrad: + self._plot_counts() if self.MC_samples > 2: self._plot_MC_group_params() self._get_sens_coeffs(write=True) diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index 1a61cab5..fe20659a 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -407,9 +407,43 @@ def test_irrad_fit(): grouper.num_groups = 1 lam_val = np.log(2)/half_life expected_counts = lam_val * (yield_val / lam_val * (1 - np.exp(-lam_val * times))) - steady_state_val = yield_val count_rate = grouper._get_irrad_counts(times, parameters) assert np.allclose(count_rate, expected_counts) - assert count_rate[0] == 0.0 - assert count_rate[-1] == steady_state_val \ No newline at end of file + +def test_get_mod_counts(): + input_path = './tests/unit/input/input.json' + grouper = Grouper(input_path) + irrad_times = np.arange(0, 10, 1) + post_irrad_times = np.geomspace(0.01, 7, 3) + grouper.fission_times = irrad_times + grouper.t_in = 1 + grouper.t_ex = 0 + grouper.t_net = 10 + grouper.decay_times = post_irrad_times + grouper.residual_masks = 'all' + grouper.post_irrad_only = False + grouper.no_post_irrad = True + grouper + grouper.full_fission_term = np.ones(len(irrad_times)) + yield_val = 1 + half_life = 10 + parameters = [yield_val, half_life] + grouper.num_groups = 1 + lam_val = np.log(2)/half_life + expected_counts = lam_val * (yield_val / lam_val * (1 - np.exp(-lam_val * irrad_times))) + + post_irrad_index = grouper.get_irrad_index(False) + assert post_irrad_index == 10 + + data_times = grouper._get_times_and_rates() + assert np.allclose(data_times['irrad_mask'], 1) + + cumulative_times = np.cumsum(data_times["timesteps"][:post_irrad_index]) + + times_post, counts_post, irrad_times, irrad_counts = grouper._get_modified_counts_and_times(post_irrad_times, np.ones(len(post_irrad_times)+8)) + assert np.allclose(cumulative_times, irrad_times) + assert len(irrad_times) > 0 + fit_irrad = grouper._get_irrad_counts(irrad_times, parameters) + expected_counts = lam_val * (yield_val / lam_val * (1 - np.exp(-lam_val * irrad_times))) + assert np.allclose(fit_irrad[1:], expected_counts[:-1]), "Fit error" From c38fb5ec39046975440a19fc0b66ba6e4c9253dc Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 4 Mar 2026 14:25:24 -0600 Subject: [PATCH 041/170] Fix plotting of irrad counts --- mosden/groupfit.py | 1 - mosden/postprocessing.py | 10 +++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 35a6b949..f9e6a420 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -155,7 +155,6 @@ def _get_irrad_counts(self, counts : np.ndarray[float|object] Array of counts for each time point (can be float or ufloat) """ - parameters = self._restructure_intermediate_yields(parameters) yields = parameters[:self.num_groups] half_lives = parameters[self.num_groups:] diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index 7a702e36..ce074df9 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -125,16 +125,16 @@ def compare_counts(self) -> None: group_data = CSVHandler( self.group_path, create=False).read_vector_csv() - parameters = group_data['yield'] + group_data['half_life'] count_data = CSVHandler(self.countrate_path).read_vector_csv() times = np.asarray(count_data['times']) - grouper._set_refined_fission_term(times) counts = np.asarray(count_data['counts']) + grouper._set_refined_fission_term(times) + parameters = group_data['yield'] + group_data['half_life'] + parameters = grouper._restructure_intermediate_yields(parameters, False) fit_func = grouper._get_fit_func() - times, counts, irrad_times, irrad_counts = grouper._get_modified_counts_and_times(times, counts) - - + times, counts, irrad_times, irrad_counts = grouper._get_modified_counts_and_times(times, counts) irrad_fit_counts = grouper._get_irrad_counts(irrad_times, parameters) + post_irrad_fit_counts = fit_func(times, parameters) total_time = np.append(irrad_times, times) From 3ae429301a7b15ca8530397fb3ca6b3de9d5e833 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 5 Mar 2026 09:34:00 -0600 Subject: [PATCH 042/170] Clean up count rate printing and add residual print --- mosden/groupfit.py | 2 ++ mosden/postprocessing.py | 27 ++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index f9e6a420..f9cace39 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -589,6 +589,8 @@ def _nonlinear_least_squares(self, self.logger.info(f'{np.diag(cov) = }') sigma = np.sqrt(np.diag(cov)) self.logger.info(f'{sigma = }') + residual = self._residual_function(result.x, times, counts, count_err, irrad_counts, irrad_times, fit_function) + self.logger.info(f'{residual = }') self.logger.info(result) sampled_params: list[float] = list() tracked_counts: list[float] = list() diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index ce074df9..9579749c 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -104,9 +104,9 @@ def run(self) -> None: """ self.compare_yields() + self.compare_counts() if not self.no_post_irrad: self.compare_group_to_data() - self.compare_counts() self.MC_NLLS_analysis() return None @@ -128,6 +128,7 @@ def compare_counts(self) -> None: count_data = CSVHandler(self.countrate_path).read_vector_csv() times = np.asarray(count_data['times']) counts = np.asarray(count_data['counts']) + count_errs = np.asarray(count_data['sigma counts']) grouper._set_refined_fission_term(times) parameters = group_data['yield'] + group_data['half_life'] parameters = grouper._restructure_intermediate_yields(parameters, False) @@ -136,16 +137,32 @@ def compare_counts(self) -> None: irrad_fit_counts = grouper._get_irrad_counts(irrad_times, parameters) post_irrad_fit_counts = fit_func(times, parameters) + if len(irrad_times) > 0 and not self.post_irrad_only: + irrad_times = np.append([0], irrad_times) + irrad_counts = np.append([0], irrad_counts) + irrad_fit_counts = np.append([0], irrad_fit_counts) + + if not self.no_post_irrad and not self.post_irrad_only: + times = np.asarray(times) + irrad_times[-1] total_time = np.append(irrad_times, times) total_fit_counts = np.append(irrad_fit_counts, post_irrad_fit_counts) - plt.plot(irrad_times, irrad_counts, label='Mean, This Work', color='black', - marker='x', markersize=5, linestyle='') - plt.plot(times, counts, color='black', - marker='x', markersize=5, linestyle='', markevery=5) + markevery_irrad = 1 + if not self.no_post_irrad: + markevery_irrad = 5 + + plt.errorbar(irrad_times, irrad_counts, count_errs[:len(irrad_times)], label='Mean, This Work', color='black', marker='x', markersize=5, markevery=markevery_irrad, linestyle='') + plt.errorbar(times, counts, count_errs[len(irrad_times):], color='black', marker='x', markersize=5, linestyle='', markevery=5) + plt.plot(total_time, total_fit_counts, label='Group Fit, This Work', color='blue', linestyle='--') + + if self.no_post_irrad: + plt.xscale('linear') + else: + plt.xscale('log') + plt.legend() plt.xlabel('Time [s]') plt.ylabel(r'Delayed Neutron Count Rate [$\# \cdot s^{-1}$]') From 2263fedcd2debd9a8b8451ab11466d2d868f0123 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 5 Mar 2026 09:54:43 -0600 Subject: [PATCH 043/170] Display residual norm --- mosden/groupfit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index f9cace39..d9204ad8 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -589,7 +589,7 @@ def _nonlinear_least_squares(self, self.logger.info(f'{np.diag(cov) = }') sigma = np.sqrt(np.diag(cov)) self.logger.info(f'{sigma = }') - residual = self._residual_function(result.x, times, counts, count_err, irrad_counts, irrad_times, fit_function) + residual = np.linalg.norm(self._residual_function(result.x, times, counts, count_err, irrad_counts, irrad_times, fit_function)) self.logger.info(f'{residual = }') self.logger.info(result) sampled_params: list[float] = list() From f7b03c90715767e421b1cf203c0f59099620da5c Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 5 Mar 2026 09:58:59 -0600 Subject: [PATCH 044/170] Limit compare counts to only with irrad --- mosden/postprocessing.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index 9579749c..2035d1d7 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -104,7 +104,8 @@ def run(self) -> None: """ self.compare_yields() - self.compare_counts() + if not self.post_irrad_only: + self.compare_counts() if not self.no_post_irrad: self.compare_group_to_data() self.MC_NLLS_analysis() From 0c19c6cd0d77ac656859f0cb57b3970e65ca083e Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 5 Mar 2026 10:47:31 -0600 Subject: [PATCH 045/170] Add more data for later timesteps --- .../t_net_analysis/data/intermediate_5000_all.csv | 7 +++++++ .../t_net_analysis/data/intermediate_5000_post.csv | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_5000_all.csv create mode 100644 examples/phd_results/t_net_analysis/data/intermediate_5000_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_5000_all.csv b/examples/phd_results/t_net_analysis/data/intermediate_5000_all.csv new file mode 100644 index 00000000..b233f028 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_5000_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.000576705409255332,0.0,55.48718370069069,0.0 +0.0030013527252656254,0.0,22.998508311128898,0.0 +0.0019498479794932482,0.0,8.242332968716125,0.0 +0.007006733877122229,0.0,2.576751114981142,0.0 +0.004402260798666613,0.0,0.6804870920413328,0.0 +0.0017534807653463748,0.0,0.1281644942069835,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_5000_post.csv b/examples/phd_results/t_net_analysis/data/intermediate_5000_post.csv new file mode 100644 index 00000000..927484eb --- /dev/null +++ b/examples/phd_results/t_net_analysis/data/intermediate_5000_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005762572713094761,0.0,55.49396612096345,0.0 +0.0029881539027100724,0.0,23.031084684305146,0.0 +0.0018867891489398178,0.0,8.433996420500357,0.0 +0.006924896479208246,0.0,2.632369563619486,0.0 +0.004429401522670126,0.0,0.7161423493452548,0.0 +0.0018618725758255095,0.0,0.13930288167466812,0.0 From 1f0f5e56d6c115bd18a69008d16594ce8f0f78e4 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 5 Mar 2026 11:09:51 -0600 Subject: [PATCH 046/170] Move data and add new dt analysis --- .../data_dt_5s_irrad/intermediate_0.05_all.csv | 7 +++++++ .../data_dt_5s_irrad/intermediate_0.05_post.csv | 7 +++++++ .../intermediate_0.5_all.csv} | 0 .../intermediate_0.5_post.csv} | 0 .../{data => data_t_net}/intermediate_0.001_all.csv | 0 .../{data => data_t_net}/intermediate_0.001_post.csv | 0 .../{data => data_t_net}/intermediate_0.01_all.csv | 0 .../{data => data_t_net}/intermediate_0.01_post.csv | 0 .../{data => data_t_net}/intermediate_0.1_all.csv | 0 .../{data => data_t_net}/intermediate_0.1_post.csv | 0 .../{data => data_t_net}/intermediate_10_all.csv | 0 .../{data => data_t_net}/intermediate_10_post.csv | 0 .../{data => data_t_net}/intermediate_120_all.csv | 0 .../{data => data_t_net}/intermediate_120_post.csv | 0 .../{data => data_t_net}/intermediate_1_all.csv | 0 .../{data => data_t_net}/intermediate_1_post.csv | 0 .../{data => data_t_net}/intermediate_2_all.csv | 0 .../{data => data_t_net}/intermediate_2_post.csv | 0 .../{data => data_t_net}/intermediate_30_all.csv | 0 .../{data => data_t_net}/intermediate_30_post.csv | 0 .../{data => data_t_net}/intermediate_3_all.csv | 0 .../{data => data_t_net}/intermediate_3_post.csv | 0 .../{data => data_t_net}/intermediate_4_all.csv | 0 .../{data => data_t_net}/intermediate_4_post.csv | 0 .../{data => data_t_net}/intermediate_5000_all.csv | 0 .../{data => data_t_net}/intermediate_5000_post.csv | 0 .../t_net_analysis/data_t_net/intermediate_5_all.csv | 7 +++++++ .../t_net_analysis/data_t_net/intermediate_5_post.csv | 7 +++++++ .../{data => data_t_net}/intermediate_600_all.csv | 0 .../{data => data_t_net}/intermediate_600_post.csv | 0 .../{data => data_t_net}/pulse_0.00001_all.csv | 0 .../{data => data_t_net}/pulse_0.00001_post.csv | 0 .../{data => data_t_net}/saturation_1200_all.csv | 0 .../{data => data_t_net}/saturation_1200_post.csv | 0 34 files changed, 28 insertions(+) create mode 100644 examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_all.csv create mode 100644 examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_post.csv rename examples/phd_results/t_net_analysis/{data/intermediate_5_all.csv => data_dt_5s_irrad/intermediate_0.5_all.csv} (100%) rename examples/phd_results/t_net_analysis/{data/intermediate_5_post.csv => data_dt_5s_irrad/intermediate_0.5_post.csv} (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_0.001_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_0.001_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_0.01_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_0.01_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_0.1_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_0.1_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_10_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_10_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_120_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_120_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_1_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_1_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_2_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_2_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_30_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_30_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_3_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_3_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_4_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_4_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_5000_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_5000_post.csv (100%) create mode 100644 examples/phd_results/t_net_analysis/data_t_net/intermediate_5_all.csv create mode 100644 examples/phd_results/t_net_analysis/data_t_net/intermediate_5_post.csv rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_600_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/intermediate_600_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/pulse_0.00001_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/pulse_0.00001_post.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/saturation_1200_all.csv (100%) rename examples/phd_results/t_net_analysis/{data => data_t_net}/saturation_1200_post.csv (100%) diff --git a/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_all.csv b/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_all.csv new file mode 100644 index 00000000..d20b7a8d --- /dev/null +++ b/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006065600042876593,0.0,54.95335989582147,0.0 +0.0033086632440693857,0.0,21.94229132529539,0.0 +0.00383224697621714,0.0,5.088042543099311,0.0 +0.0070137738811966305,0.0,1.6983594001638218,0.0 +0.003089808491644879,0.0,0.3344261832340821,0.0 +0.0010397161906897053,0.0,0.020852576574656057,0.0 diff --git a/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_post.csv b/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_post.csv new file mode 100644 index 00000000..aae639e9 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005904156776584032,0.0,55.231422363828585,0.0 +0.003137137764313036,0.0,22.525617261725607,0.0 +0.002240262658999735,0.0,6.9794347163178,0.0 +0.006544054694288273,0.0,2.462834508422723,0.0 +0.004127920659416374,0.0,0.7361599998014058,0.0 +0.002015377041911152,0.0,0.1516341827883638,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_5_all.csv b/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.5_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_5_all.csv rename to examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.5_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_5_post.csv b/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.5_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_5_post.csv rename to examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.5_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.001_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.001_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_0.001_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_0.001_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.001_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.001_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_0.001_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_0.001_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.01_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.01_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_0.01_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_0.01_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.01_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.01_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_0.01_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_0.01_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.1_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.1_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_0.1_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_0.1_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_0.1_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.1_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_0.1_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_0.1_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_10_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_10_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_10_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_10_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_10_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_10_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_10_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_10_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_120_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_120_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_120_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_120_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_120_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_120_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_120_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_120_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_1_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_1_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_1_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_1_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_1_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_1_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_1_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_1_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_2_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_2_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_2_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_2_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_2_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_2_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_2_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_2_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_30_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_30_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_30_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_30_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_30_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_30_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_30_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_30_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_3_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_3_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_3_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_3_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_3_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_3_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_3_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_3_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_4_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_4_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_4_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_4_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_4_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_4_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_4_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_4_post.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_5000_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_5000_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_5000_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_5000_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_5000_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_5000_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_5000_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_5000_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_5_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_5_all.csv new file mode 100644 index 00000000..d20b7a8d --- /dev/null +++ b/examples/phd_results/t_net_analysis/data_t_net/intermediate_5_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006065600042876593,0.0,54.95335989582147,0.0 +0.0033086632440693857,0.0,21.94229132529539,0.0 +0.00383224697621714,0.0,5.088042543099311,0.0 +0.0070137738811966305,0.0,1.6983594001638218,0.0 +0.003089808491644879,0.0,0.3344261832340821,0.0 +0.0010397161906897053,0.0,0.020852576574656057,0.0 diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_5_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_5_post.csv new file mode 100644 index 00000000..aae639e9 --- /dev/null +++ b/examples/phd_results/t_net_analysis/data_t_net/intermediate_5_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005904156776584032,0.0,55.231422363828585,0.0 +0.003137137764313036,0.0,22.525617261725607,0.0 +0.002240262658999735,0.0,6.9794347163178,0.0 +0.006544054694288273,0.0,2.462834508422723,0.0 +0.004127920659416374,0.0,0.7361599998014058,0.0 +0.002015377041911152,0.0,0.1516341827883638,0.0 diff --git a/examples/phd_results/t_net_analysis/data/intermediate_600_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_600_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_600_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_600_all.csv diff --git a/examples/phd_results/t_net_analysis/data/intermediate_600_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_600_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/intermediate_600_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/intermediate_600_post.csv diff --git a/examples/phd_results/t_net_analysis/data/pulse_0.00001_all.csv b/examples/phd_results/t_net_analysis/data_t_net/pulse_0.00001_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/pulse_0.00001_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/pulse_0.00001_all.csv diff --git a/examples/phd_results/t_net_analysis/data/pulse_0.00001_post.csv b/examples/phd_results/t_net_analysis/data_t_net/pulse_0.00001_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/pulse_0.00001_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/pulse_0.00001_post.csv diff --git a/examples/phd_results/t_net_analysis/data/saturation_1200_all.csv b/examples/phd_results/t_net_analysis/data_t_net/saturation_1200_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/saturation_1200_all.csv rename to examples/phd_results/t_net_analysis/data_t_net/saturation_1200_all.csv diff --git a/examples/phd_results/t_net_analysis/data/saturation_1200_post.csv b/examples/phd_results/t_net_analysis/data_t_net/saturation_1200_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data/saturation_1200_post.csv rename to examples/phd_results/t_net_analysis/data_t_net/saturation_1200_post.csv From 4ffa0c9be46ec3caea0b94ab09c84efab3c022e1 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 5 Mar 2026 11:16:58 -0600 Subject: [PATCH 047/170] Change data location and add dt analysis --- examples/phd_results/t_net_analysis/analysis.py | 12 ++++++++---- .../intermediate_0.05_all.csv | 0 .../intermediate_0.05_post.csv | 0 .../intermediate_0.5_all.csv | 0 .../intermediate_0.5_post.csv | 0 .../intermediate_0.001_all.csv | 0 .../intermediate_0.001_post.csv | 0 .../intermediate_0.01_all.csv | 0 .../intermediate_0.01_post.csv | 0 .../{data_t_net => dataNet}/intermediate_0.1_all.csv | 0 .../intermediate_0.1_post.csv | 0 .../t_net_analysis/dataNet/intermediate_10_all.csv | 7 +++++++ .../t_net_analysis/dataNet/intermediate_10_post.csv | 7 +++++++ .../{data_t_net => dataNet}/intermediate_120_all.csv | 0 .../intermediate_120_post.csv | 0 .../{data_t_net => dataNet}/intermediate_1_all.csv | 0 .../{data_t_net => dataNet}/intermediate_1_post.csv | 0 .../{data_t_net => dataNet}/intermediate_2_all.csv | 0 .../{data_t_net => dataNet}/intermediate_2_post.csv | 0 .../{data_t_net => dataNet}/intermediate_30_all.csv | 0 .../{data_t_net => dataNet}/intermediate_30_post.csv | 0 .../{data_t_net => dataNet}/intermediate_3_all.csv | 0 .../{data_t_net => dataNet}/intermediate_3_post.csv | 0 .../{data_t_net => dataNet}/intermediate_4_all.csv | 0 .../{data_t_net => dataNet}/intermediate_4_post.csv | 0 .../intermediate_5000_all.csv | 0 .../intermediate_5000_post.csv | 0 .../{data_t_net => dataNet}/intermediate_5_all.csv | 0 .../{data_t_net => dataNet}/intermediate_5_post.csv | 0 .../{data_t_net => dataNet}/intermediate_600_all.csv | 0 .../intermediate_600_post.csv | 0 .../{data_t_net => dataNet}/pulse_0.00001_all.csv | 0 .../{data_t_net => dataNet}/pulse_0.00001_post.csv | 0 .../{data_t_net => dataNet}/saturation_1200_all.csv | 0 .../{data_t_net => dataNet}/saturation_1200_post.csv | 0 .../data_t_net/intermediate_10_all.csv | 7 ------- .../data_t_net/intermediate_10_post.csv | 7 ------- 37 files changed, 22 insertions(+), 18 deletions(-) rename examples/phd_results/t_net_analysis/{data_dt_5s_irrad => dataDt5s}/intermediate_0.05_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_dt_5s_irrad => dataDt5s}/intermediate_0.05_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_dt_5s_irrad => dataDt5s}/intermediate_0.5_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_dt_5s_irrad => dataDt5s}/intermediate_0.5_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_0.001_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_0.001_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_0.01_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_0.01_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_0.1_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_0.1_post.csv (100%) create mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv create mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_120_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_120_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_1_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_1_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_2_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_2_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_30_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_30_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_3_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_3_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_4_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_4_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_5000_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_5000_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_5_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_5_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_600_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/intermediate_600_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/pulse_0.00001_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/pulse_0.00001_post.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/saturation_1200_all.csv (100%) rename examples/phd_results/t_net_analysis/{data_t_net => dataNet}/saturation_1200_post.csv (100%) delete mode 100644 examples/phd_results/t_net_analysis/data_t_net/intermediate_10_all.csv delete mode 100644 examples/phd_results/t_net_analysis/data_t_net/intermediate_10_post.csv diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index 9d373f51..a3ae6064 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -5,12 +5,11 @@ import os plt.style.use('mosden.plotting') -def plot_data(data_vals, namemod=''): +def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$'): formatted_data = defaultdict(list) formatted_data['yields'] = defaultdict(list) formatted_data['hls'] = defaultdict(list) formatted_data["xs"] = [] - xlab = 'Irradiation Time [s]' xscale = 'log' total_yields = [] @@ -74,7 +73,7 @@ def plot_data(data_vals, namemod=''): plt.savefig(f'stack_yields{namemod}.png') plt.close() -def build_data_dict(data_path=r'./data/'): +def build_data_dict(data_path=r'./dataNet/'): def helper(pathmod): files = glob.glob(os.path.join(data_path, f"*{pathmod}.csv")) data = {} @@ -96,4 +95,9 @@ def helper(pathmod): if __name__ == '__main__': post_data, all_data = build_data_dict() plot_data(post_data, '_post') - plot_data(all_data, '_all') \ No newline at end of file + plot_data(all_data, '_all') + + post_data, all_data = build_data_dict('./dataDt5s/') + xlab = r'Irradiation Time Step $[s]$' + plot_data(post_data, '_post_dt', xlab) + plot_data(all_data, '_all_dt', xlab) \ No newline at end of file diff --git a/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_all.csv b/examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.05_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_all.csv rename to examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.05_all.csv diff --git a/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_post.csv b/examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.05_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.05_post.csv rename to examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.05_post.csv diff --git a/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.5_all.csv b/examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.5_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.5_all.csv rename to examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.5_all.csv diff --git a/examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.5_post.csv b/examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.5_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_dt_5s_irrad/intermediate_0.5_post.csv rename to examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.5_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.001_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_0.001_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.001_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_0.001_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.01_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_0.01_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.01_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_0.01_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.1_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_0.1_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_0.1_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_0.1_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_post.csv diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv new file mode 100644 index 00000000..f72d9abb --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005907204232151493,0.0,55.22732091610048,0.0 +0.0031441874956869907,0.0,22.507083381283604,0.0 +0.0023844142629210387,0.0,6.813397911113515,0.0 +0.007363485845659069,0.0,2.275850551991717,0.0 +0.003648168543292984,0.0,0.5128876443699149,0.0 +0.0018097847340523881,0.0,0.04321723401443949,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv new file mode 100644 index 00000000..017629fa --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005870792293887829,0.0,55.289964797259024,0.0 +0.0030914678800217877,0.0,22.664616628706085,0.0 +0.0019688681906939974,0.0,7.588589786446466,0.0 +0.0064391555780816435,0.0,2.6414443366188616,0.0 +0.004439267410030921,0.0,0.799903764420208,0.0 +0.002129293201117738,0.0,0.15793294095181293,0.0 diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_120_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_120_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_120_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_120_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_120_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_120_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_120_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_120_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_1_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_1_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_1_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_1_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_1_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_1_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_1_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_1_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_2_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_2_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_2_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_2_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_2_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_2_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_2_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_2_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_30_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_30_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_30_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_30_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_30_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_30_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_30_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_30_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_3_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_3_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_3_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_3_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_3_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_3_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_3_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_3_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_4_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_4_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_4_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_4_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_4_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_4_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_4_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_4_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_5000_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_5000_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_5000_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_5000_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_5_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_5_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_5_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_5_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_5_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_5_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_600_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_600_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_600_all.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_600_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_600_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_600_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/intermediate_600_post.csv rename to examples/phd_results/t_net_analysis/dataNet/intermediate_600_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/pulse_0.00001_all.csv b/examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/pulse_0.00001_all.csv rename to examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/pulse_0.00001_post.csv b/examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/pulse_0.00001_post.csv rename to examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/saturation_1200_all.csv b/examples/phd_results/t_net_analysis/dataNet/saturation_1200_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/saturation_1200_all.csv rename to examples/phd_results/t_net_analysis/dataNet/saturation_1200_all.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/saturation_1200_post.csv b/examples/phd_results/t_net_analysis/dataNet/saturation_1200_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/data_t_net/saturation_1200_post.csv rename to examples/phd_results/t_net_analysis/dataNet/saturation_1200_post.csv diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_10_all.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_10_all.csv deleted file mode 100644 index 53d0e0ef..00000000 --- a/examples/phd_results/t_net_analysis/data_t_net/intermediate_10_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005960792791545259,0.0,55.135012580612894,0.0 -0.0032076980439315044,0.0,22.300052183480698,0.0 -0.002852067744538698,0.0,6.07979006431029,0.0 -0.0072500454214785865,0.0,2.068868164010149,0.0 -0.004558198674648902,0.0,0.34336751183229575,0.0 -0.001340870481079989,0.0,0.004507230924419563,0.0 diff --git a/examples/phd_results/t_net_analysis/data_t_net/intermediate_10_post.csv b/examples/phd_results/t_net_analysis/data_t_net/intermediate_10_post.csv deleted file mode 100644 index e04c3543..00000000 --- a/examples/phd_results/t_net_analysis/data_t_net/intermediate_10_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005870727013651158,0.0,55.290077835858426,0.0 -0.003091369998492769,0.0,22.664905168525173,0.0 -0.001968341704938068,0.0,7.5899319720354885,0.0 -0.006438600070596588,0.0,2.6418605208557473,0.0 -0.004438727502047097,0.0,0.80027907621914,0.0 -0.0021307909835243557,0.0,0.15804682735133815,0.0 From ed6f8c7e23833318fbc028aff2e7b610c8d9b961 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 5 Mar 2026 11:30:00 -0600 Subject: [PATCH 048/170] Alter analysis to use number of time steps --- examples/phd_results/t_net_analysis/analysis.py | 4 ++-- .../intermediate_100_all.csv} | 0 .../intermediate_100_post.csv} | 0 .../intermediate_10_all.csv} | 0 .../intermediate_10_post.csv} | 0 .../t_net_analysis/dataNumSteps5s/intermediate_1_all.csv | 7 +++++++ .../t_net_analysis/dataNumSteps5s/intermediate_1_post.csv | 7 +++++++ 7 files changed, 16 insertions(+), 2 deletions(-) rename examples/phd_results/t_net_analysis/{dataDt5s/intermediate_0.05_all.csv => dataNumSteps5s/intermediate_100_all.csv} (100%) rename examples/phd_results/t_net_analysis/{dataDt5s/intermediate_0.05_post.csv => dataNumSteps5s/intermediate_100_post.csv} (100%) rename examples/phd_results/t_net_analysis/{dataDt5s/intermediate_0.5_all.csv => dataNumSteps5s/intermediate_10_all.csv} (100%) rename examples/phd_results/t_net_analysis/{dataDt5s/intermediate_0.5_post.csv => dataNumSteps5s/intermediate_10_post.csv} (100%) create mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_all.csv create mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_post.csv diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index a3ae6064..e9a653e5 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -97,7 +97,7 @@ def helper(pathmod): plot_data(post_data, '_post') plot_data(all_data, '_all') - post_data, all_data = build_data_dict('./dataDt5s/') - xlab = r'Irradiation Time Step $[s]$' + post_data, all_data = build_data_dict('./dataNumSteps5s/') + xlab = r'Number of Irradiation Time Steps' plot_data(post_data, '_post_dt', xlab) plot_data(all_data, '_all_dt', xlab) \ No newline at end of file diff --git a/examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.05_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.05_all.csv rename to examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_all.csv diff --git a/examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.05_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.05_post.csv rename to examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_post.csv diff --git a/examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.5_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_all.csv similarity index 100% rename from examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.5_all.csv rename to examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_all.csv diff --git a/examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.5_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_post.csv similarity index 100% rename from examples/phd_results/t_net_analysis/dataDt5s/intermediate_0.5_post.csv rename to examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_post.csv diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_all.csv new file mode 100644 index 00000000..c7793f66 --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005904199394329888,0.0,55.23134874637851,0.0 +0.003137194550517086,0.0,22.525441574823233,0.0 +0.002240666610131754,0.0,6.9786766562306015,0.0 +0.006544460943285461,0.0,2.4625520610958915,0.0 +0.004127913806916037,0.0,0.7359334684585879,0.0 +0.0020146670128793702,0.0,0.151556528708939,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_post.csv new file mode 100644 index 00000000..4da0d19f --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.000590419742943124,0.0,55.231352150176455,0.0 +0.003137192073348421,0.0,22.525449438261457,0.0 +0.002240651631570589,0.0,6.978707107308105,0.0 +0.006544452484095048,0.0,2.462561599041238,0.0 +0.004127921451650911,0.0,0.7359392505586764,0.0 +0.002014684279741236,0.0,0.1515577482822932,0.0 From cb2896d0e0115f35316c2184949e87f5f04f8848 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 5 Mar 2026 12:32:57 -0600 Subject: [PATCH 049/170] Add additional assertions to groupfit to make sure it works as it should --- tests/unit/test_groupfit.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index fe20659a..20632185 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -424,7 +424,6 @@ def test_get_mod_counts(): grouper.residual_masks = 'all' grouper.post_irrad_only = False grouper.no_post_irrad = True - grouper grouper.full_fission_term = np.ones(len(irrad_times)) yield_val = 1 half_life = 10 @@ -433,6 +432,10 @@ def test_get_mod_counts(): lam_val = np.log(2)/half_life expected_counts = lam_val * (yield_val / lam_val * (1 - np.exp(-lam_val * irrad_times))) + assert grouper.openmc_settings['min_timestep'] == 1e10 + assert grouper.t_in == 1 + assert grouper.t_ex == 0 + assert grouper.t_net == 10 post_irrad_index = grouper.get_irrad_index(False) assert post_irrad_index == 10 From 24fcacd72a9aab683979066111afd10cb8d85ee8 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 5 Mar 2026 15:07:26 -0600 Subject: [PATCH 050/170] Add more data to time step analysis --- .../phd_results/t_net_analysis/analysis.py | 18 ++++++++++++------ .../dataNet/intermediate_1200_all.csv | 7 +++++++ .../dataNet/intermediate_1200_post.csv | 7 +++++++ .../dataNet/saturation_1200_all.csv | 7 ------- .../dataNet/saturation_1200_post.csv | 7 ------- .../dataNumSteps5s/intermediate_1000_all.csv | 7 +++++++ .../dataNumSteps5s/intermediate_1000_post.csv | 7 +++++++ .../dataNumSteps5s/intermediate_50_all.csv | 7 +++++++ .../dataNumSteps5s/intermediate_50_post.csv | 7 +++++++ .../dataNumSteps5s/intermediate_5_all.csv | 7 +++++++ .../dataNumSteps5s/intermediate_5_post.csv | 7 +++++++ 11 files changed, 68 insertions(+), 20 deletions(-) create mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_1200_all.csv create mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_1200_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/saturation_1200_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/saturation_1200_post.csv create mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_all.csv create mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_post.csv create mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_all.csv create mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_post.csv create mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_all.csv create mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_post.csv diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index e9a653e5..aa32c4f8 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -5,7 +5,7 @@ import os plt.style.use('mosden.plotting') -def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$'): +def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yield=None): formatted_data = defaultdict(list) formatted_data['yields'] = defaultdict(list) formatted_data['hls'] = defaultdict(list) @@ -28,7 +28,11 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$'): markers = ['.', '*', '>', '<', 'v', '^'] print(f'Maximum yield of {total_yields[max_index]} at {formatted_data["xs"][max_index]}s') - plt.plot(formatted_data['xs'], total_yields) + plt.plot(formatted_data['xs'], total_yields, label="Yields") + if actual_yield: + plt.hlines(actual_yield, min(formatted_data['xs']), max(formatted_data['xs']), label='Actual Yield', + linestyle='--', color='orange') + plt.legend() plt.xscale(xscale) plt.xlabel(xlab) plt.ylabel('Total Yield') @@ -93,11 +97,13 @@ def helper(pathmod): return post_data, all_data if __name__ == '__main__': + #actual_yield = 0.018655 + actual_yield = None post_data, all_data = build_data_dict() - plot_data(post_data, '_post') - plot_data(all_data, '_all') + plot_data(post_data, '_post', actual_yield=actual_yield) + plot_data(all_data, '_all', actual_yield=actual_yield) post_data, all_data = build_data_dict('./dataNumSteps5s/') xlab = r'Number of Irradiation Time Steps' - plot_data(post_data, '_post_dt', xlab) - plot_data(all_data, '_all_dt', xlab) \ No newline at end of file + plot_data(post_data, '_post_dt', xlab, actual_yield=actual_yield) + plot_data(all_data, '_all_dt', xlab, actual_yield=actual_yield) \ No newline at end of file diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_all.csv new file mode 100644 index 00000000..fd0b4219 --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005777758000447569,0.0,55.46726307784736,0.0 +0.003014070646221825,0.0,22.957807948589082,0.0 +0.0019990809244505086,0.0,8.082141089792003,0.0 +0.007049954476460081,0.0,2.5368445835126616,0.0 +0.004374995284528601,0.0,0.6583272534405827,0.0 +0.0016872648060187287,0.0,0.12172020526783002,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_post.csv new file mode 100644 index 00000000..35a9eed0 --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005771080885334702,0.0,55.47761168843076,0.0 +0.0029960421406315875,0.0,23.003189274421793,0.0 +0.0019012565373335876,0.0,8.35620831202458,0.0 +0.006926863411307543,0.0,2.620276032784385,0.0 +0.004412697914806575,0.0,0.7121766849123173,0.0 +0.0018531329736106751,0.0,0.1389026704379304,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/saturation_1200_all.csv b/examples/phd_results/t_net_analysis/dataNet/saturation_1200_all.csv deleted file mode 100644 index 5344c0d2..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/saturation_1200_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005771243371292638,0.0,55.48081611875357,0.0 -0.003012739319976157,0.0,22.969586143388984,0.0 -0.002030301243574989,0.0,8.043850048784337,0.0 -0.007109375113888054,0.0,2.510086618543929,0.0 -0.0043760294212489715,0.0,0.6368977344666057,0.0 -0.0016159408687693988,0.0,0.11373253387826857,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/saturation_1200_post.csv b/examples/phd_results/t_net_analysis/dataNet/saturation_1200_post.csv deleted file mode 100644 index eb382360..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/saturation_1200_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005762611622725469,0.0,55.493895657763666,0.0 -0.0029881883988900804,0.0,23.030931376368496,0.0 -0.0018865443985343047,0.0,8.434280814626245,0.0 -0.00692468430202603,0.0,2.6325228359849797,0.0 -0.004429601324485666,0.0,0.7162201664170799,0.0 -0.001862075575732143,0.0,0.13931585236741362,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_all.csv new file mode 100644 index 00000000..504488b6 --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006420567960255477,0.0,54.35638354908993,0.0 +0.003565325515196418,0.0,20.913531825418737,0.0 +0.006555873640894113,0.0,3.564083947100355,0.0 +0.005731549685976585,0.0,0.9271559743943968,0.0 +0.0020861411852095353,0.0,0.14872170634140372,0.0 +0.0001047485294252018,0.0,0.0018986318468918477,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_post.csv new file mode 100644 index 00000000..ddb9d8d0 --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005904184270829813,0.0,55.231374873684416,0.0 +0.003137174528005383,0.0,22.5255037134342,0.0 +0.0022405276301212516,0.0,6.978940690940743,0.0 +0.006544332105306523,0.0,2.4626475591897248,0.0 +0.004127867690696769,0.0,0.7360112413431618,0.0 +0.0020149751650604896,0.0,0.15158778232503106,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_all.csv new file mode 100644 index 00000000..04178049 --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006021673340764964,0.0,55.0287678038575,0.0 +0.0032683262692956203,0.0,22.088595850884868,0.0 +0.0033994562172370464,0.0,5.459150334429745,0.0 +0.006950678380171376,0.0,1.8706376801161926,0.0 +0.0031023624324558532,0.0,0.45491148668105036,0.0 +0.001734702739560994,0.0,0.03995590427833553,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_post.csv new file mode 100644 index 00000000..1985b761 --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005904113836468502,0.0,55.23149704607527,0.0 +0.0031370809698599666,0.0,22.52579297907246,0.0 +0.0022398495269453774,0.0,6.980202105897436,0.0 +0.0065436280451903785,0.0,2.4631259215900925,0.0 +0.004128378752750597,0.0,0.7363652006123198,0.0 +0.0020160858170970436,0.0,0.15158626009418205,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_all.csv new file mode 100644 index 00000000..a6afaa77 --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_all.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0006040487232770398,0.0,54.99643017005205,0.0 +0.0032858662091828266,0.0,22.02532205477871,0.0 +0.0035716480122779735,0.0,5.298012927607035,0.0 +0.006977954965265861,0.0,1.8031040644875136,0.0 +0.004054389619828634,0.0,0.3102762948529634,0.0 +0.0018267842223195466,0.0,0.003592586605047965,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_post.csv new file mode 100644 index 00000000..cb319b3f --- /dev/null +++ b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_post.csv @@ -0,0 +1,7 @@ +yield,sigma yield,half_life,sigma half_life +0.0005904195202098858,0.0,55.231355487388406,0.0 +0.0031371883353184106,0.0,22.525460455184128,0.0 +0.002240618698716042,0.0,6.978761162369362,0.0 +0.006544314656410725,0.0,2.462597501401445,0.0 +0.004127531648290001,0.0,0.7360338131383783,0.0 +0.002015149201266732,0.0,0.15158482961626957,0.0 From 9f4dfbf724288b722b43b36557020cba1efe2f20 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 9 Mar 2026 13:10:38 -0500 Subject: [PATCH 051/170] Fix failing test --- tests/unit/test_groupfit.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index 20632185..81d741d3 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -424,6 +424,7 @@ def test_get_mod_counts(): grouper.residual_masks = 'all' grouper.post_irrad_only = False grouper.no_post_irrad = True + grouper.openmc_settings['min_timestep'] = 1e10 grouper.full_fission_term = np.ones(len(irrad_times)) yield_val = 1 half_life = 10 From ddc3d3911e62c15bbd30d53809ae83c4314c7fb8 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 9 Mar 2026 13:10:55 -0500 Subject: [PATCH 052/170] Add minimum timestep suggestion --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index f3e3d905..d759fdc9 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,9 @@ For example, using an in-core residence time of 30 seconds with a net irradiation time of 30 seconds (1 OpenMC simulation) will give less accurate measures of the summed data than an in-core residence time of 30 seconds (30 OpenMC simulations). +This can be resolved by using a smaller minimum OpenMC timestep. +The minimum timestep should be set such that approximately 100 simulations are +run during irradiation. Chemical removal of DNPs changes the group parameters (as expected). However, chemical removal of fission products also has an effect due to the way MoSDeN From 13596a0d617e6b23a14425b3fb8fff82b1836ec3 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 9 Mar 2026 13:13:15 -0500 Subject: [PATCH 053/170] Add new sims to results generator --- examples/phd_results/results_generator.py | 51 +++++++++++++++++++++-- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/examples/phd_results/results_generator.py b/examples/phd_results/results_generator.py index d3bac284..83b97d17 100644 --- a/examples/phd_results/results_generator.py +++ b/examples/phd_results/results_generator.py @@ -6,23 +6,66 @@ from copy import deepcopy import subprocess from mosden.utils.chemical_schemes import Reprocessing +import numpy as np base_input_file = './input.json' analysis_list = list() name = 'tintex' +dt = 5 +tf = 30 residence_time_analysis = { + 'meta': { + 'name': name, + 'run_full': False, + 'run_post': False, + 'overwrite': True, + }, + 'incore_s': [10, 20, 30], + 'excore_s': [float(i) for i in np.arange(0, tf+dt, dt)], + 'multi_id': [name] +} +analysis_list.append(residence_time_analysis) + +name = 'OpenMC Particles' +nps_analysis = { 'meta': { 'name': name, 'run_full': True, 'run_post': True, 'overwrite': True, }, - 'incore_s': [100, 50], - 'excore_s': [0, 50], + 'nps': [10, 100, 500, 1000, 5000],#, 10000, 50000], 'multi_id': [name] } -analysis_list.append(residence_time_analysis) +analysis_list.append(nps_analysis) + + +name = 'Decay Times' +decay_time_analysis = { + 'meta': { + 'name': name, + 'run_full': True, + 'run_post': True, + 'overwrite': True, + }, + 'num_decay_times': [50, 100, 200, 400, 800], + 'multi_id': [name] +} +analysis_list.append(decay_time_analysis) + +name = 'Decay Time' +decay_time_analysis = { + 'meta': { + 'name': name, + 'run_full': True, + 'run_post': True, + 'overwrite': True, + }, + 'decay_times': [150, 300, 600, 1200, 2400, 4800], + 'multi_id': [name] +} +analysis_list.append(decay_time_analysis) def replace_value(input_data: dict, key: str, new_val: str|float|int) -> bool: @@ -172,4 +215,4 @@ def run_mosden(analysis: dict, input_paths: list[str]) -> None: if analysis['meta']['run_full'] or analysis['meta']['run_post']: input_paths = populate_inputs(analysis, dir_name) run_mosden(analysis, input_paths) - pass \ No newline at end of file + pass From 94508be8ccf9c83093171024b5185b69290ddc9f Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 9 Mar 2026 13:13:56 -0500 Subject: [PATCH 054/170] Increase number of sig figs in logging of DNP yields --- mosden/postprocessing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index 2035d1d7..ce30af87 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -1345,10 +1345,10 @@ def _get_sorted_dnp_data(self) -> tuple[dict, dict, dict]: if self.omc: concs = Concentrations(self.input_path) fission_term, fission_times = concs._calculate_fission_term(only_incore=False) + dx = np.diff(fission_times) concentration_data = CSVHandler( self.concentration_path, create=False).read_csv_with_time(trim=False) - dx = np.diff(fission_times) total_fissions = np.sum(dx * fission_term) self.logger.info(f'{total_fissions = }') @@ -1432,7 +1432,7 @@ def _get_summed_params(self) -> tuple[float, float]: f'Writing nuclide emission times concentration (net yield)') for index_val, (nuc, yield_val) in enumerate(sorted_yields.items()): self.logger.info( - f'{nuc} - {round(yield_val.n, 5)} +/- {round(yield_val.s, 5)}') + f'{nuc} - {round(yield_val.n, 7)} +/- {round(yield_val.s, 7)}') sizes.append(yield_val.n) if nuc in self.nuc_colors.keys(): colors[index_val] = self.nuc_colors[nuc] From 4d85119cdad0e7d7de33c57d1a656dadd960adca Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 9 Mar 2026 13:20:10 -0500 Subject: [PATCH 055/170] Clean up results generator and input --- examples/phd_results/input.json | 4 ++-- examples/phd_results/results_generator.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/phd_results/input.json b/examples/phd_results/input.json index 957f31ab..c616a89d 100644 --- a/examples/phd_results/input.json +++ b/examples/phd_results/input.json @@ -39,8 +39,8 @@ "reprocessing": false }, "base_removal_scaling": 0.5, - "incore_s": 99.9, - "excore_s": 0.1, + "incore_s": 0.3, + "excore_s": 0, "net_irrad_s": 30, "decay_time": 600, "num_decay_times": 100, diff --git a/examples/phd_results/results_generator.py b/examples/phd_results/results_generator.py index 83b97d17..c41d1417 100644 --- a/examples/phd_results/results_generator.py +++ b/examples/phd_results/results_generator.py @@ -35,7 +35,7 @@ 'run_post': True, 'overwrite': True, }, - 'nps': [10, 100, 500, 1000, 5000],#, 10000, 50000], + 'nps': [10, 100, 500, 1000, 5000], 'multi_id': [name] } analysis_list.append(nps_analysis) From 3e36d33b4e04cbcf24548abf96d749e27f9267ec Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 9 Mar 2026 13:25:53 -0500 Subject: [PATCH 056/170] Use finer timesteps for 5000s irrad --- .../t_net_analysis/dataNet/intermediate_5000_all.csv | 12 ++++++------ .../dataNet/intermediate_5000_post.csv | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv index b233f028..9889cd3b 100644 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.000576705409255332,0.0,55.48718370069069,0.0 -0.0030013527252656254,0.0,22.998508311128898,0.0 -0.0019498479794932482,0.0,8.242332968716125,0.0 -0.007006733877122229,0.0,2.576751114981142,0.0 -0.004402260798666613,0.0,0.6804870920413328,0.0 -0.0017534807653463748,0.0,0.1281644942069835,0.0 +0.000576917756712231,0.0,55.48391091244194,0.0 +0.0030074794778278775,0.0,22.983455363391936,0.0 +0.0020085020458220047,0.0,8.105458402329596,0.0 +0.007063445278888828,0.0,2.5323026524238013,0.0 +0.004371356624008638,0.0,0.6550392707707646,0.0 +0.0016772007543679973,0.0,0.12077144102601928,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv index 927484eb..7aa3a19d 100644 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0005762572713094761,0.0,55.49396612096345,0.0 -0.0029881539027100724,0.0,23.031084684305146,0.0 -0.0018867891489398178,0.0,8.433996420500357,0.0 -0.006924896479208246,0.0,2.632369563619486,0.0 -0.004429401522670126,0.0,0.7161423493452548,0.0 -0.0018618725758255095,0.0,0.13930288167466812,0.0 +0.000576256829992561,0.0,55.49391683217315,0.0 +0.002987977497827005,0.0,23.031495152020387,0.0 +0.001886406765998293,0.0,8.435790714156008,0.0 +0.006924758804759013,0.0,2.632684497413109,0.0 +0.004429810503186607,0.0,0.7162606364020088,0.0 +0.0018621509577297888,0.0,0.13931998047531707,0.0 From 3fc8560f4113bfb1b6e261fd6c0d9edb13d8b1ac Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 9 Mar 2026 14:33:33 -0500 Subject: [PATCH 057/170] Using 1000 time steps for saturation irradiation (no change) --- .../t_net_analysis/dataNet/intermediate_5000_all.csv | 12 ++++++------ .../dataNet/intermediate_5000_post.csv | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv index 9889cd3b..dd99a6eb 100644 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.000576917756712231,0.0,55.48391091244194,0.0 -0.0030074794778278775,0.0,22.983455363391936,0.0 -0.0020085020458220047,0.0,8.105458402329596,0.0 -0.007063445278888828,0.0,2.5323026524238013,0.0 -0.004371356624008638,0.0,0.6550392707707646,0.0 -0.0016772007543679973,0.0,0.12077144102601928,0.0 +0.0005720720872390899,0.0,55.55682831326315,0.0 +0.002830528099989927,0.0,23.38945677656511,0.0 +0.0014067311232208997,0.0,10.67381373520948,0.0 +0.005703624723978119,0.0,3.278896575815644,0.0 +0.005712734311083684,0.0,1.0504288768395829,0.0 +0.002479106453519196,0.0,0.16289560229757322,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv index 7aa3a19d..64a1dd88 100644 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.000576256829992561,0.0,55.49391683217315,0.0 -0.002987977497827005,0.0,23.031495152020387,0.0 -0.001886406765998293,0.0,8.435790714156008,0.0 -0.006924758804759013,0.0,2.632684497413109,0.0 -0.004429810503186607,0.0,0.7162606364020088,0.0 -0.0018621509577297888,0.0,0.13931998047531707,0.0 +0.0005762565600353954,0.0,55.4939659618683,0.0 +0.002988222570130418,0.0,23.031007268968427,0.0 +0.001887721237426173,0.0,8.431971951659571,0.0 +0.006925952785121379,0.0,2.6315263361703396,0.0 +0.004428071271774303,0.0,0.7158460020002585,0.0 +0.0018612510707719991,0.0,0.13926642607212225,0.0 From 7e0f0e6235180b92fde435c0ce87fe5cc4c9f511 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 10 Mar 2026 14:54:07 -0500 Subject: [PATCH 058/170] Add debug DNP --- mosden/base.py | 31 +++++++++++++++++++-- mosden/concentrations.py | 52 ++++++++++++++++++++++++++++++++++- mosden/preprocessing.py | 39 ++++++++++++++++++++++++++ mosden/utils/defaults.py | 3 +- mosden/utils/input_handler.py | 8 +++++- 5 files changed, 128 insertions(+), 5 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index aca3b4bb..45d764b7 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -58,7 +58,7 @@ def __init__(self, input_path: str) -> None: filemode=log_mode) self.name: str = self.input_data['name'] - self.output_dir: str = self.input_data['file_options']['output_dir'] + self.output_dir: str = self.input_data['file_options'].get('output_dir', '') self.logger.debug(f'{self.name = }') self.energy_MeV: float = data_options.get('energy_MeV', 0.0) @@ -66,6 +66,11 @@ def __init__(self, input_path: str) -> None: 'fissile_fractions', {}) self.fissile_targets: list = list(self.fissiles.keys()) + self.debug_dnp_data: dict = data_options.get('debug_dnps', {}) + self.has_debug_dnps: bool = True + if self.debug_dnp_data == {}: + self.has_debug_dnps = False + self.data_types: list[str] = [ 'fission_yield', 'half_life', @@ -169,7 +174,7 @@ def __init__(self, input_path: str) -> None: def time_track(self, starttime: float, modulename: str = '') -> None: self.logger.info(f'{modulename} took {round(time() - starttime, 3)}s') return None - + def _get_use_times(self, single_time_val: bool=False) -> np.ndarray[float]: """ Get all the times steps over which count rate data exists @@ -426,6 +431,28 @@ def save_postproc(self) -> None: with open(self.postproc_path, 'w') as f: json.dump(data_to_write, f, indent=4) return None + + + def _write_processed_data(self, data_type: str, data: dict[str, dict[str, float]]) -> None: + """ + Read the processed data for a given fissile nuclide. + + Parameters + ---------- + data_type : str + The type of data to read (e.g., "fission_yield", "half_life", + "cross_section", "emission_probability"). + data : dict[str: dict[str: float]] + The processed data for the fissile nuclide. + + """ + data_path = os.path.join(self.processed_data_dir, f'{data_type}.csv') + csv_handler = CSVHandler(data_path, create=False) + if not csv_handler._file_exists(): + raise FileNotFoundError( + f"Processed data file {data_path} does not exist.") + data = csv_handler.write_csv(data) + return None def _read_processed_data(self, data_type: str) -> dict[str: dict[str: float]]: diff --git a/mosden/concentrations.py b/mosden/concentrations.py index e3a28e0b..bfd269ed 100644 --- a/mosden/concentrations.py +++ b/mosden/concentrations.py @@ -93,10 +93,60 @@ def generate_concentrations(self) -> None: f"Concentration handling method '{ self.conc_method}' is not implemented") + data = self._add_debug_dnp_data(data) CSVHandler(self.concentration_path, self.conc_overwrite).write_csv_with_time(data) self.save_postproc() self.time_track(start, 'Concentrations') return + + def _add_debug_dnp_data(self, data: list[dict[str, float]]) -> list[dict[str, float]]: + """ + Add debug DNP data to the existing concentration data + + Parameters + ---------- + data : list[dict[str, float]] + List of data at each point in time for concentration + + Returns + ------- + data : list[dict[str, float]] + List of data at each point in time for concentration + """ + if not self.has_debug_dnps: + return data + + times = list(sorted(set(i['Time'] for i in data))) + for nuc, nuc_vals in self.debug_dnp_data.items(): + fission_rates, _ = self._calculate_fission_term(False) + len_diff = len(times) - len(fission_rates) + fission_rates = np.append(fission_rates, [0]*len_diff) + concs = [0] + p_concs = [0] + lam = np.log(2) / nuc_vals['half_life_s'] + y = nuc_vals['yield'] + dt = np.diff(times) + try: + y_p = nuc_vals['parent']['yield'] + lam_p = np.log(2) / nuc_vals['parent']['half_life_s'] + except NameError: + cur_p_conc = 0 + y_p = 0 + lam_p = 1 + for ti, t in enumerate(times[:-1]): + cur_p_conc = ((p_concs[ti] + fission_rates[ti] * dt[ti] * y_p) / (1 + lam_p*dt[ti])) + cur_conc = ((concs[ti] + dt[ti] * lam * cur_p_conc + fission_rates[ti] * dt[ti] * y) / (1 + lam*dt[ti])) + p_concs.append(cur_p_conc) + concs.append(cur_conc) + data.append( + { + 'Time': t, + 'Nuclide': nuc, + 'Concentration': concs[ti], + 'sigma Concentration': 1e-12 + } + ) + return data def CFY_concentrations(self) -> list[dict[str, float]]: """ @@ -413,7 +463,7 @@ def _collect_omc_nuyield(self) -> dict[str, dict[str, np.ndarray]]: json.dump(nuyield, f, indent=4, default=self._json_default) return nuyield - def _calculate_fission_term(self, only_incore: bool=True) -> list[float]: + def _calculate_fission_term(self, only_incore: bool=True) -> tuple[list[float], list[float]]: """ Calculate the fission rate or number of fissions. The fission rate is used for saturation irradiations, while the number diff --git a/mosden/preprocessing.py b/mosden/preprocessing.py index 3493c218..0a68ad70 100644 --- a/mosden/preprocessing.py +++ b/mosden/preprocessing.py @@ -56,9 +56,48 @@ def run(self) -> None: if any(word in path for word in ids): func(data_val, path) self.save_postproc() + self._add_debug_dnps() self.time_track(start, 'Preprocessing') return None + def _add_debug_dnps(self) -> None: + """ + Writes debug DNPs to all data files (if applicable) + """ + if not self.debug_dnp_data: + return None + + data_types = ['emission_probability', 'half_life', 'fission_yield'] + + for data_type in data_types: + if data_type == 'emission_probability': + key = 'pn' + target_key = 'emission probability' + elif data_type == 'half_life': + key = 'half_life_s' + target_key = 'half_life' + elif data_type == 'yield': + key = 'yield' + target_key = 'CFY' + else: + raise KeyError('Data type does not have a valid key') + + for nuc, nuc_data in self.debug_dnp_data.items(): + debug_data = nuc_data[key] + data = self._read_processed_data(data_type) + _, old_val = list(data.items())[-1] + if type(old_val) is float: + data[nuc] = debug_data + continue + + for keys_needed, vals_used in old_val.items(): + if keys_needed == target_key: + data[nuc][keys_needed] = debug_data + else: + data[nuc][keys_needed] = vals_used + self._write_processed_data(data_type, data) + return None + def openmc_preprocess(self, data_val: str, unprocessed_path: str) -> None: """ Processes OpenMC data diff --git a/mosden/utils/defaults.py b/mosden/utils/defaults.py index 9c631c19..b40da257 100644 --- a/mosden/utils/defaults.py +++ b/mosden/utils/defaults.py @@ -24,7 +24,8 @@ "processed_data_dir": f"{current_dir}/", "output_dir": f"{current_dir}/", "log_level": 20, - "log_file": f"{current_dir}/log.log" + "log_file": f"{current_dir}/log.log", + "debug_dnps": {} }, "data_options": { "half_life": "iaea/eval.csv", diff --git a/mosden/utils/input_handler.py b/mosden/utils/input_handler.py index d3ba900e..d0f628cf 100644 --- a/mosden/utils/input_handler.py +++ b/mosden/utils/input_handler.py @@ -23,7 +23,8 @@ def __init__(self, input_path: str) -> None: self.preprocessing_occurance_index = 2 self.leaf_dict_keys: set = set(( "reprocessing", - "fissile_fractions" + "fissile_fractions", + "debug_dnps" )) return None @@ -90,6 +91,11 @@ def _apply_defaults(self, data: dict, defaults: dict, path: str='') -> dict: if InputHandler._default_counts[full_key] == self.preprocessing_occurance_index: self.logger.warning(f"Using default for '{full_key}': {defaults[k]!r}", stacklevel=2) final[k] = defaults[k] + + for k in data.keys(): + if k not in defaults: + final[k] = data[k] + return final def _check_behaviour(self, data: dict) -> None: From d38cb6bb28e6c876cf160788cba2b6ab9a8e1773 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 10 Mar 2026 14:54:42 -0500 Subject: [PATCH 059/170] Update json schema --- mosden/templates/input_schema.json | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index a412c396..885c3d52 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -129,6 +129,46 @@ "type": "number", "description": "These properties should be named the fissile nuclide (such as U235) and detail the weighting as a float (e.g. 0.3)" } + }, + "debug_dnps": { + "type": "object", + "description": "A set of delayed neutron precursors that can be manually defined for debugging purposes", + "additionalProperties": { + "type": "object", + "description": "A single delayed neutron precursor definition", + "properties": { + "yield": { + "type": "number", + "description": "Yield of the nuclide" + }, + "half_life_s": { + "type": "number", + "description": "Half-life in seconds" + }, + "pn": { + "type": "number", + "description": "Delayed neutron emission probability" + }, + "parent": { + "type": "object", + "description": "Optional parent nuclide of the DNP", + "properties": { + "yield": { + "type": "number", + "description": "Yield of the parent (times the branching ratio)" + }, + "half_life_s": { + "type": "number", + "description": "Half-life in seconds" + } + }, + "required": ["yield", "half_life_s"], + "additionalProperties": false + } + }, + "required": ["yield", "half_life_s", "pn"], + "additionalProperties": false + } } } }, From dd163d27135535f88a9c7249a18fd5c15eea981c Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 10 Mar 2026 14:58:19 -0500 Subject: [PATCH 060/170] Fix typo and small bug --- mosden/preprocessing.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mosden/preprocessing.py b/mosden/preprocessing.py index 0a68ad70..2e492ed2 100644 --- a/mosden/preprocessing.py +++ b/mosden/preprocessing.py @@ -76,7 +76,7 @@ def _add_debug_dnps(self) -> None: elif data_type == 'half_life': key = 'half_life_s' target_key = 'half_life' - elif data_type == 'yield': + elif data_type == 'fission_yield': key = 'yield' target_key = 'CFY' else: @@ -85,6 +85,7 @@ def _add_debug_dnps(self) -> None: for nuc, nuc_data in self.debug_dnp_data.items(): debug_data = nuc_data[key] data = self._read_processed_data(data_type) + data[nuc] = dict() _, old_val = list(data.items())[-1] if type(old_val) is float: data[nuc] = debug_data From f3b6520ac31998b2d7b12ee42474599a0eebccc5 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 10 Mar 2026 15:01:07 -0500 Subject: [PATCH 061/170] Adjust test to account for default now allowing other args --- tests/unit/test_utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index 36bab735..a7a62a11 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -49,6 +49,7 @@ def test_input_handler(): data = input_handler.read_input(check=True, apply_defaults=False) data = input_handler.read_input(check=True, apply_defaults=True) + data.pop('key') default_data = json.loads(json.dumps(DEFAULTS)) assert default_data == data, "Default application failed" From 61fe892a305d16d80373868b05c12042256f081f Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 10 Mar 2026 15:24:02 -0500 Subject: [PATCH 062/170] Fix bug in writing debug dnp to preproc --- mosden/base.py | 6 ++++-- mosden/preprocessing.py | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index 45d764b7..617c47fc 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -433,7 +433,7 @@ def save_postproc(self) -> None: return None - def _write_processed_data(self, data_type: str, data: dict[str, dict[str, float]]) -> None: + def _write_processed_data(self, data_type: str, overwrite: bool, data: dict[str, dict[str, float]]) -> None: """ Read the processed data for a given fissile nuclide. @@ -442,12 +442,14 @@ def _write_processed_data(self, data_type: str, data: dict[str, dict[str, float] data_type : str The type of data to read (e.g., "fission_yield", "half_life", "cross_section", "emission_probability"). + overwrite : bool + Whether or not to overwrite existing data data : dict[str: dict[str: float]] The processed data for the fissile nuclide. """ data_path = os.path.join(self.processed_data_dir, f'{data_type}.csv') - csv_handler = CSVHandler(data_path, create=False) + csv_handler = CSVHandler(data_path, create=False, overwrite=overwrite) if not csv_handler._file_exists(): raise FileNotFoundError( f"Processed data file {data_path} does not exist.") diff --git a/mosden/preprocessing.py b/mosden/preprocessing.py index 2e492ed2..461ae44e 100644 --- a/mosden/preprocessing.py +++ b/mosden/preprocessing.py @@ -85,18 +85,18 @@ def _add_debug_dnps(self) -> None: for nuc, nuc_data in self.debug_dnp_data.items(): debug_data = nuc_data[key] data = self._read_processed_data(data_type) + _, old_val = list(data.items())[0] data[nuc] = dict() - _, old_val = list(data.items())[-1] if type(old_val) is float: data[nuc] = debug_data continue - + for keys_needed, vals_used in old_val.items(): if keys_needed == target_key: data[nuc][keys_needed] = debug_data else: data[nuc][keys_needed] = vals_used - self._write_processed_data(data_type, data) + self._write_processed_data(data_type, True, data) return None def openmc_preprocess(self, data_val: str, unprocessed_path: str) -> None: From afb0b47c5d2b9078c6d241848499abbfe6553e7d Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 10 Mar 2026 15:37:08 -0500 Subject: [PATCH 063/170] Fix conc time steps --- mosden/concentrations.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mosden/concentrations.py b/mosden/concentrations.py index bfd269ed..9bcf67ac 100644 --- a/mosden/concentrations.py +++ b/mosden/concentrations.py @@ -146,6 +146,14 @@ def _add_debug_dnp_data(self, data: list[dict[str, float]]) -> list[dict[str, fl 'sigma Concentration': 1e-12 } ) + data.append( + { + 'Time': times[-1], + 'Nuclide': nuc, + 'Concentration': concs[-1], + 'sigma Concentration': 1e-12 + } + ) return data def CFY_concentrations(self) -> list[dict[str, float]]: From aa369dda9f633f576032b84945c55ffc5e5457d6 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 11 Mar 2026 09:19:26 -0500 Subject: [PATCH 064/170] Fix debug dnp conc calculation and add tests --- mosden/concentrations.py | 35 ++++++++- tests/unit/test_concentrations.py | 126 +++++++++++++++++++++++++++++- 2 files changed, 157 insertions(+), 4 deletions(-) diff --git a/mosden/concentrations.py b/mosden/concentrations.py index 9bcf67ac..28ebf0e5 100644 --- a/mosden/concentrations.py +++ b/mosden/concentrations.py @@ -99,6 +99,35 @@ def generate_concentrations(self) -> None: self.time_track(start, 'Concentrations') return + def _evaluate_conc(self, cur_conc: float, cur_p_conc: float, lam_p: float, lam: float, ti: int, dt: list[float], fission_rates: list[float], concs: list[float], p_concs: list[float], y_p: float, y: float): + exp_p = np.exp(-lam_p * dt[ti]) + exp_c = np.exp(-lam * dt[ti]) + + if lam_p > 0: + cur_p_conc = p_concs[ti] * exp_p + (fission_rates[ti] * y_p / lam_p) * (1 - exp_p) + else: + cur_p_conc = p_concs[ti] + fission_rates[ti] * y_p * dt[ti] + + if lam > 0: + fission_source = (fission_rates[ti] * y / lam) * (1 - exp_c) + if abs(lam - lam_p) > 1e-10: + fission_source += fission_rates[ti] * y_p * ( + (1 - exp_c) / lam - (exp_p - exp_c) / (lam - lam_p) + ) + else: + fission_source += fission_rates[ti] * y_p * dt[ti] * exp_c + else: + fission_source = fission_rates[ti] * y * dt[ti] + + B = lam_p * p_concs[ti] + if abs(lam - lam_p) > 1e-10: + feed_term = (B / (lam - lam_p)) * (exp_p - exp_c) + else: + feed_term = B * dt[ti] * exp_c + + cur_conc = concs[ti] * exp_c + fission_source + feed_term + return cur_conc, cur_p_conc + def _add_debug_dnp_data(self, data: list[dict[str, float]]) -> list[dict[str, float]]: """ Add debug DNP data to the existing concentration data @@ -126,16 +155,16 @@ def _add_debug_dnp_data(self, data: list[dict[str, float]]) -> list[dict[str, fl lam = np.log(2) / nuc_vals['half_life_s'] y = nuc_vals['yield'] dt = np.diff(times) + cur_p_conc = 0 + cur_conc = 0 try: y_p = nuc_vals['parent']['yield'] lam_p = np.log(2) / nuc_vals['parent']['half_life_s'] except NameError: - cur_p_conc = 0 y_p = 0 lam_p = 1 for ti, t in enumerate(times[:-1]): - cur_p_conc = ((p_concs[ti] + fission_rates[ti] * dt[ti] * y_p) / (1 + lam_p*dt[ti])) - cur_conc = ((concs[ti] + dt[ti] * lam * cur_p_conc + fission_rates[ti] * dt[ti] * y) / (1 + lam*dt[ti])) + cur_conc, cur_p_conc = self._evaluate_conc(cur_conc, cur_p_conc, lam_p, lam, ti, dt, fission_rates, concs, p_concs, y_p, y) p_concs.append(cur_p_conc) concs.append(cur_conc) data.append( diff --git a/tests/unit/test_concentrations.py b/tests/unit/test_concentrations.py index 533837ef..9d3d6c89 100644 --- a/tests/unit/test_concentrations.py +++ b/tests/unit/test_concentrations.py @@ -1,4 +1,6 @@ from mosden.concentrations import Concentrations +import numpy as np +from scipy.integrate import trapezoid def test_concentrations_init(): """ @@ -12,4 +14,126 @@ def test_concentrations_init(): assert conc.energy_MeV == 1.0, f"Expected energy 1.0, but got {conc.energy_MeV}" assert conc.fissiles == {'U235': 0.8, 'U238': 0.2}, f"Expected fissile targets {{'U235': 0.8, 'U238': 0.2}}, but got {conc.fissiles}" - return \ No newline at end of file + return + +def test_evaluate_conc(): + input_path = './tests/unit/input/input.json' + conc = Concentrations(input_path) + dt = np.diff([0, 1, 2]) + + # N(dt) = (F*y/lam) * (1 - exp(-lam*dt)) + lam = np.log(2) / 10 + lam_p = np.log(2) / 10 + new_conc, new_p_conc = conc._evaluate_conc( + cur_conc=0, cur_p_conc=0, lam_p=lam_p, lam=lam, ti=0, + dt=dt, fission_rates=[1, 1, 1], concs=[0], p_concs=[0], + y_p=0.0, y=1.0 + ) + assert new_p_conc == 0 + expected = (1.0 / lam) * (1 - np.exp(-lam * 1)) + assert np.isclose(new_conc, expected) + + # N(dt) = N0 * exp(-lam*dt) + N0 = 5.0 + lam = np.log(2) / 10 + new_conc, new_p_conc = conc._evaluate_conc( + cur_conc=N0, cur_p_conc=0, lam_p=0, lam=lam, ti=0, + dt=dt, fission_rates=[0, 0, 0], concs=[N0], p_concs=[0], + y_p=0.0, y=1.0 + ) + expected = N0 * np.exp(-lam * 1) + assert np.isclose(new_conc, expected) + + # N(dt) = N0*exp(-l*dt) + (lp*Np0/(l-lp)) * (exp(-lp*dt) - exp(-l*dt)) + lam_p = np.log(2) / 30 + lam = np.log(2) / 10 + Np0, Nc0 = 10.0, 0.0 + new_conc, new_p_conc = conc._evaluate_conc( + cur_conc=Nc0, cur_p_conc=Np0, lam_p=lam_p, lam=lam, ti=0, + dt=dt, fission_rates=[0, 0, 0], concs=[Nc0], p_concs=[Np0], + y_p=0.0, y=0.0 + ) + expected_p = Np0 * np.exp(-lam_p * 1) + expected_c = (Nc0 * np.exp(-lam * 1) + + (lam_p * Np0 / (lam - lam_p)) + * (np.exp(-lam_p * 1) - np.exp(-lam * 1))) + assert np.isclose(new_p_conc, expected_p), 'Parent incorrect' + assert np.isclose(new_conc, expected_c), 'Daughter incorrect' + + # Same but equal half-lives + lam_p = lam = np.log(2) / 10 + Np0, Nc0 = 10.0, 0.0 + new_conc, new_p_conc = conc._evaluate_conc( + cur_conc=Nc0, cur_p_conc=Np0, lam_p=lam_p, lam=lam, ti=0, + dt=dt, fission_rates=[0, 0, 0], concs=[Nc0], p_concs=[Np0], + y_p=0.0, y=0.0 + ) + expected_p = Np0 * np.exp(-lam_p * 1) + expected_c = lam_p * Np0 * 1 * np.exp(-lam * 1) + assert np.isclose(new_p_conc, expected_p), 'Parent incorrect' + assert np.isclose(new_conc, expected_c), 'Daughter incorrect' + + # N(dt) = N0 + F*y*dt + lam = 0.0 + lam_p = np.log(2) / 10 + new_conc, new_p_conc = conc._evaluate_conc( + cur_conc=0, cur_p_conc=0, lam_p=lam_p, lam=lam, ti=0, + dt=dt, fission_rates=[2, 2, 2], concs=[0], p_concs=[0], + y_p=0.0, y=3.0 + ) + expected = 2.0 * 3.0 * 1 + assert np.isclose(new_conc, expected) + + # Pulse irradiation + lam = np.log(2) / 10 + lam_p = 1.0 + y, y_p = 1.0, 0.0 + F = 846.364 + + irrad_times = [0, 1e-5] + decay_times = list(np.linspace(1e-5, 600, 301)) + all_times = irrad_times + decay_times[1:] + dt_all = np.diff(all_times) + + fission_rates = [F] + [0] * (len(dt_all)) + + concs_all = [0] + p_concs_all = [0] + cur_conc = cur_p_conc = 0.0 + + for ti in range(len(dt_all)): + cur_conc, cur_p_conc = conc._evaluate_conc( + cur_conc, cur_p_conc, lam_p, lam, ti, + dt_all, fission_rates, concs_all, p_concs_all, y_p, y + ) + concs_all.append(cur_conc) + p_concs_all.append(cur_p_conc) + + times_arr = np.array(all_times) + concs_arr = np.array(concs_all) + total_fissions = F * 1e-5 + total_delnus = trapezoid(lam * concs_arr, times_arr) + yield_val = total_delnus / total_fissions + + assert np.isclose(yield_val, 1.0, atol=1e-4), 'Yield incorrect' + + +def test_evaluate_conc(): + input_path = './tests/unit/input/input.json' + conc = Concentrations(input_path) + times = [0, 1, 2] + dt = np.diff(times) + cur_conc = 0 + cur_p_conc = 0 + lam_p = np.log(2) / 10 + lam = np.log(2) / 10 + ti = 0 + fission_rates = [1, 1, 1] + concs = [0] + p_concs = [0] + y_p = 0.0 + y = 1.0 + new_conc, new_p_conc = conc._evaluate_conc(cur_conc, cur_p_conc, lam_p, lam, ti, dt, fission_rates, concs, p_concs, y_p, y) + assert new_p_conc == 0 + new_conc_expected = 1/lam * (1 - np.exp(-lam * 1)) + assert new_conc == new_conc_expected From 349ad5835ca78017e66e257a500d695de16f633b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 11 Mar 2026 09:23:21 -0500 Subject: [PATCH 065/170] Add missing docstring for evaluate conc --- mosden/concentrations.py | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/mosden/concentrations.py b/mosden/concentrations.py index 28ebf0e5..ec647c36 100644 --- a/mosden/concentrations.py +++ b/mosden/concentrations.py @@ -99,7 +99,41 @@ def generate_concentrations(self) -> None: self.time_track(start, 'Concentrations') return - def _evaluate_conc(self, cur_conc: float, cur_p_conc: float, lam_p: float, lam: float, ti: int, dt: list[float], fission_rates: list[float], concs: list[float], p_concs: list[float], y_p: float, y: float): + def _evaluate_conc(self, cur_conc: float, cur_p_conc: float, lam_p: float, lam: float, ti: int, dt: list[float], fission_rates: list[float], concs: list[float], p_concs: list[float], y_p: float, y: float) -> tuple[float, float]: + """ + Evaluates the concentration of a nuclide and its decay parent. + Yield of parent is assumed to be scaled by branching ratio. + + Parameters + ---------- + cur_conc : float + Current concentration of target nuclide + cur_p_conc : float + Current concentration of parent nuclide + lam_p : float + Parent decay constant [s] + lam : float + Target decay constant [s] + ti : int + The current time index + dt : list[float] + The list of time step sizes [s] + fission_rates : list[float] + The list of fission rates at each time step [1/s] + concs : list[float] + The list of concentrations at each time step for the target nuclide + p_concs : list[float] + The list of concentrations at each time step for the parent nuclide + y_p : float + Parent yield per fission scaled by branching ratio + y : float + Target yield per fission + + Returns + ------- + cur_conc, cur_p_conc : tuple[float, float] + The updated concentrations of the target and parent nuclides + """ exp_p = np.exp(-lam_p * dt[ti]) exp_c = np.exp(-lam * dt[ti]) From fd2063dd552c75769c369300e3236731db0d8af9 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 11 Mar 2026 09:38:30 -0500 Subject: [PATCH 066/170] Clean up times --- tests/unit/test_concentrations.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/unit/test_concentrations.py b/tests/unit/test_concentrations.py index 9d3d6c89..f913957a 100644 --- a/tests/unit/test_concentrations.py +++ b/tests/unit/test_concentrations.py @@ -85,15 +85,15 @@ def test_evaluate_conc(): assert np.isclose(new_conc, expected) # Pulse irradiation - lam = np.log(2) / 10 + lam = np.log(2) / 10 lam_p = 1.0 y, y_p = 1.0, 0.0 F = 846.364 irrad_times = [0, 1e-5] - decay_times = list(np.linspace(1e-5, 600, 301)) - all_times = irrad_times + decay_times[1:] - dt_all = np.diff(all_times) + decay_times = list(np.geomspace(1e-2, 600, 300)) + all_times = irrad_times + (decay_times + 1e-5) + dt_all = np.diff(all_times) fission_rates = [F] + [0] * (len(dt_all)) @@ -109,13 +109,13 @@ def test_evaluate_conc(): concs_all.append(cur_conc) p_concs_all.append(cur_p_conc) - times_arr = np.array(all_times) - concs_arr = np.array(concs_all) + times_arr = np.array(all_times) + concs_arr = np.array(concs_all) total_fissions = F * 1e-5 - total_delnus = trapezoid(lam * concs_arr, times_arr) - yield_val = total_delnus / total_fissions + total_delnus = trapezoid(lam * concs_arr, times_arr) + yield_val = total_delnus / total_fissions - assert np.isclose(yield_val, 1.0, atol=1e-4), 'Yield incorrect' + assert np.isclose(yield_val, 1.0, atol=1e-6), 'Yield incorrect' def test_evaluate_conc(): From 1c427663be37245aafa6ed26e9a226629a40d6cd Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 11 Mar 2026 10:38:59 -0500 Subject: [PATCH 067/170] Split up integration for yield dnp calc --- mosden/postprocessing.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index ce30af87..9a95e04b 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -1,5 +1,6 @@ from logging import INFO from uncertainties import ufloat, unumpy +import uncertainties.umath as umath import numpy as np import os from mosden.utils.literature_handler import Literature @@ -10,7 +11,7 @@ from mosden.base import BaseClass import matplotlib.ticker as ticker import matplotlib.pyplot as plt -from scipy.integrate import cumulative_trapezoid, trapezoid +from scipy.integrate import cumulative_trapezoid, trapezoid, simpson import re import pandas as pd from scipy.stats import linregress @@ -1323,7 +1324,7 @@ def _get_data(self) -> dict[str: dict]: use_nucs.append(nuc) data_dict['net_nucs'] = use_nucs return data_dict - + def _get_sorted_dnp_data(self) -> tuple[dict, dict, dict]: """ Get the sorted delayed neutron precursor data by yield @@ -1341,6 +1342,7 @@ def _get_sorted_dnp_data(self) -> tuple[dict, dict, dict]: self.total_delayed_neutrons: float = 0.0 nuc_concs: dict[str, float] = dict() + irrad_index = self.get_irrad_index(False) if self.omc: concs = Concentrations(self.input_path) @@ -1371,7 +1373,9 @@ def _get_sorted_dnp_data(self) -> tuple[dict, dict, dict]: std_devs.append(std_dev) concs_with_uncerts = unumpy.uarray(nom_vals, std_devs) delnus_over_time = concs_with_uncerts * Pn * lam_val - total_delnus = trapezoid(delnus_over_time, times) + irrad_delnus = trapezoid(delnus_over_time[:irrad_index+1], times[:irrad_index+1]) + decay_delnus = simpson(delnus_over_time[irrad_index:], times[irrad_index:]) + total_delnus = irrad_delnus + decay_delnus yield_val = total_delnus / total_fissions nuc_yield[nuc] = yield_val From c563a64163f8df7e662e4c0a5fe323cac828bc92 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 11 Mar 2026 10:39:56 -0500 Subject: [PATCH 068/170] Add zero DNP example for debugging --- examples/zero_dnps/emission_probability.csv | 5 ++ examples/zero_dnps/input.json | 76 +++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 examples/zero_dnps/emission_probability.csv create mode 100644 examples/zero_dnps/input.json diff --git a/examples/zero_dnps/emission_probability.csv b/examples/zero_dnps/emission_probability.csv new file mode 100644 index 00000000..fb9bbe00 --- /dev/null +++ b/examples/zero_dnps/emission_probability.csv @@ -0,0 +1,5 @@ +Nuclide,emission probability,sigma emission probability,half_life,sigma half_life +Br87,0.026,0.0004,55.65,0.13 +I137,0.0714,0.0023,24.5,0.2 +Rb94,0.105,0.004,2.702,0.005 +As86,0.1248662982,1e-12,0.945,0.008 \ No newline at end of file diff --git a/examples/zero_dnps/input.json b/examples/zero_dnps/input.json new file mode 100644 index 00000000..8a226719 --- /dev/null +++ b/examples/zero_dnps/input.json @@ -0,0 +1,76 @@ +{ + "name": "Four DNPs", + "file_options": { + "overwrite": { + "preprocessing": false, + "concentrations": true, + "count_rate": true, + "group_fitting": true, + "postprocessing": true, + "logger": true + }, + "unprocessed_data_dir": "/home/luke/github/mosden/mosden/data/unprocessed/", + "log_level": 20 + }, + "data_options": { + "half_life": "endfb71/decay/", + "cross_section": "", + "emission_probability": "endfb71/decay/", + "fission_yield": "endfb71/nfy/", + "decay_time_spacing": "log", + "temperature_K": 920, + "density_g_cm3": 2.3275, + "energy_MeV": 0.0253e-6, + "fissile_fractions": { + "U235": 1.0 + }, + "debug_dnps": { + "Zz99": { + "yield": 1.0, + "half_life_s": 10, + "pn": 1, + "parent": { + "yield": 0.000, + "half_life_s": 10 + } + } + } + }, + "modeling_options": { + "concentration_handling": "OMC", + "count_rate_handling": "data", + "residual_handling": ["post-irrad"], + "reprocessing_locations": ["excore"], + "reprocessing": { + "Xe": 0.0 + }, + "irrad_type": "intermediate", + "spatial_scaling": { + "flux": false, + "reprocessing": false + }, + "base_removal_scaling": 0.5, + "incore_s": 0.000001, + "excore_s": 0, + "net_irrad_s": 0.00001, + "decay_time": 600, + "num_decay_times": 100, + "openmc_settings": { + "nps": 5000, + "batches": 10, + "source": 1e3, + "run_omc": true, + "write_fission_json": true, + "write_nuyield_json": true, + "min_timestep": 1e10 + } + }, + "group_options": { + "num_groups": 1, + "method": "nlls", + "parameter_guesses": 10, + "samples": 1, + "sample_func": "normal", + "seed": 1 + } +} From d94eb606d7b36e2842154a968613fe4b654650bf Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 11 Mar 2026 10:40:39 -0500 Subject: [PATCH 069/170] Remove DNPs from zero dnp sim --- examples/zero_dnps/emission_probability.csv | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/examples/zero_dnps/emission_probability.csv b/examples/zero_dnps/emission_probability.csv index fb9bbe00..1005b38f 100644 --- a/examples/zero_dnps/emission_probability.csv +++ b/examples/zero_dnps/emission_probability.csv @@ -1,5 +1 @@ -Nuclide,emission probability,sigma emission probability,half_life,sigma half_life -Br87,0.026,0.0004,55.65,0.13 -I137,0.0714,0.0023,24.5,0.2 -Rb94,0.105,0.004,2.702,0.005 -As86,0.1248662982,1e-12,0.945,0.008 \ No newline at end of file +Nuclide,emission probability,sigma emission probability,half_life,sigma half_life \ No newline at end of file From c9df42a2e9e07af853e676b17af80c94a0225502 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 11 Mar 2026 10:55:52 -0500 Subject: [PATCH 070/170] Update preprocessing defaults so it works with 0 DNPs --- mosden/preprocessing.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/mosden/preprocessing.py b/mosden/preprocessing.py index 461ae44e..f8b0997a 100644 --- a/mosden/preprocessing.py +++ b/mosden/preprocessing.py @@ -73,23 +73,30 @@ def _add_debug_dnps(self) -> None: if data_type == 'emission_probability': key = 'pn' target_key = 'emission probability' + possible_old_val = {'emission probability': 0.0, + 'sigma emission probability': 1e-12} elif data_type == 'half_life': key = 'half_life_s' target_key = 'half_life' + possible_old_val = {'half_life': 10, + 'sigma half_life': 1e-12} elif data_type == 'fission_yield': key = 'yield' target_key = 'CFY' + possible_old_val = {'CFY': 1, + 'sigma CFY': 1e-12} else: raise KeyError('Data type does not have a valid key') for nuc, nuc_data in self.debug_dnp_data.items(): debug_data = nuc_data[key] data = self._read_processed_data(data_type) - _, old_val = list(data.items())[0] + try: + _, old_val = list(data.items())[0] + except IndexError: + old_val = possible_old_val + data[nuc] = dict() - if type(old_val) is float: - data[nuc] = debug_data - continue for keys_needed, vals_used in old_val.items(): if keys_needed == target_key: From 00562a81a4ff0ad54b726f8bc8d05d5ccae04e3f Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 16 Mar 2026 11:12:56 -0500 Subject: [PATCH 071/170] Fix bug in solver due to not using initial timestep for intermediate --- mosden/base.py | 5 +++-- mosden/concentrations.py | 5 ++--- mosden/countrate.py | 2 +- tests/unit/test_groupfit.py | 19 +++++++++++++++++++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index 617c47fc..a7ba8777 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -292,7 +292,7 @@ def _get_times_and_rates(self, f_in: float = 1.0) -> dict[str, list[float|int]]: timesteps[-1] = timesteps[-1] - diff decay_time_steps = np.diff(self.decay_times, prepend=[0.0]) - for t in decay_time_steps: + for t in decay_time_steps[1:]: timesteps.append(t) source_rates.append(0) @@ -324,7 +324,8 @@ def _set_decay_times(self) -> np.ndarray[float]: 0, self.decay_time, self.num_times) elif self.decay_time_spacing == 'log': self.decay_times: np.ndarray = np.geomspace( - 1e-2, self.decay_time, self.num_times) + 1e-2, self.decay_time, self.num_times-1) + self.decay_times = np.append([0], self.decay_times) else: raise ValueError( f"Decay time spacing '{self.decay_time_spacing}' not supported.") diff --git a/mosden/concentrations.py b/mosden/concentrations.py index ec647c36..ecf6b578 100644 --- a/mosden/concentrations.py +++ b/mosden/concentrations.py @@ -153,11 +153,10 @@ def _evaluate_conc(self, cur_conc: float, cur_p_conc: float, lam_p: float, lam: else: fission_source = fission_rates[ti] * y * dt[ti] - B = lam_p * p_concs[ti] if abs(lam - lam_p) > 1e-10: - feed_term = (B / (lam - lam_p)) * (exp_p - exp_c) + feed_term = (lam_p * p_concs[ti] / (lam - lam_p)) * (exp_p - exp_c) else: - feed_term = B * dt[ti] * exp_c + feed_term = lam_p * p_concs[ti] * dt[ti] * exp_c cur_conc = concs[ti] * exp_c + fission_source + feed_term return cur_conc, cur_p_conc diff --git a/mosden/countrate.py b/mosden/countrate.py index ee173665..6950bbe6 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -254,7 +254,7 @@ def sample_parameter(val: ufloat, dist: str) -> float: unumpy.exp(-decay_const * use_times) else: if self.post_irrad_only: - index_offset = post_irrad_index + 1 + index_offset = post_irrad_index else: index_offset = 0 if self.no_post_irrad: diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index 81d741d3..4c3aa8f6 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -451,3 +451,22 @@ def test_get_mod_counts(): fit_irrad = grouper._get_irrad_counts(irrad_times, parameters) expected_counts = lam_val * (yield_val / lam_val * (1 - np.exp(-lam_val * irrad_times))) assert np.allclose(fit_irrad[1:], expected_counts[:-1]), "Fit error" + +def test_restructure_intermediate_yields_offsets(): + input_path = './tests/unit/input/input.json' + grouper = Grouper(input_path) + grouper.num_groups = 1 + grouper.irrad_type = 'intermediate' + grouper.t_net = 1e-6 + grouper.fission_times = np.array([0.0, 1e-6]) + grouper.full_fission_term = np.array([9900.61988839969]) + lam_val = np.log(2) / 10 + + fiss_component = grouper._get_effective_fission(np.asarray([lam_val]), np.exp, np.expm1) + scaled_param = (9900.61988839969 * 1e-6 * lam_val) + assert np.isclose(fiss_component, scaled_param) + + params = np.array([scaled_param, 10.0]) + + actual = grouper._restructure_intermediate_yields(params, to_yield=True) + assert np.isclose(actual[0], 1.0, rtol=1e-6) From 12a6995b06cbe6e56e0c6befa494d3f7b8e77b9a Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 16 Mar 2026 11:16:40 -0500 Subject: [PATCH 072/170] Update tests to account for 0 time step --- .../test-data/reference/test6/count_rate.csv | 1598 ++++++++--------- .../reference/test6/group_parameters.csv | 12 +- .../test-data/reference/test7/count_rate.csv | 196 +- .../reference/test7/group_parameters.csv | 12 +- .../test-data/reference/test8/count_rate.csv | 196 +- .../reference/test8/group_parameters.csv | 12 +- 6 files changed, 1013 insertions(+), 1013 deletions(-) diff --git a/tests/integration/test-data/reference/test6/count_rate.csv b/tests/integration/test-data/reference/test6/count_rate.csv index 3a0f12cf..733b1a87 100644 --- a/tests/integration/test-data/reference/test6/count_rate.csv +++ b/tests/integration/test-data/reference/test6/count_rate.csv @@ -1,801 +1,801 @@ times,counts,sigma counts -0.01,0.022344344509934787,0.004267692190394106 -0.01014745006158299,0.022341475485794716,0.0042667377363313965 -0.010297074275232064,0.022338565253059085,0.004265769687676254 -0.010448904698832822,0.0223356132359485,0.004264787857819455 -0.010602973862964596,0.022332618851109116,0.004263792057794797 -0.01075931477787029,0.022329581507527018,0.004262782096255306 -0.010917960940529069,0.022326500606441712,0.004261757779449489 -0.011078946341833236,0.022323375541259273,0.0042607189111974276 -0.01124230547387103,0.022320205697464877,0.004259665292866898 -0.011408073337316742,0.022316990452534866,0.004258596723349454 -0.011576285448929802,0.022313729175848333,0.004257512999036449 -0.011746977849164503,0.022310421228598023,0.004256413913795078 -0.011920187109891834,0.022307065963701012,0.004255299258944396 -0.012095950342235269,0.02230366272570876,0.004254168823231316 -0.012274305204522004,0.022300210850716772,0.004253022392806661 -0.012455289910351528,0.022296709666273742,0.004251859751201163 -0.012638943236783058,0.022293158491290436,0.004250680679301562 -0.012825304532643814,0.022289556635947977,0.004249484955326692 -0.013014413726959712,0.022285903401605925,0.004248272354803631 -0.013206311337510383,0.02228219808070994,0.004247042650543885 -0.013401038479510392,0.02227843995669891,0.00424579561261969 -0.013598636874418372,0.02227462830391221,0.004244531008340323 -0.013799148858876148,0.022270762387496132,0.004243248602228554 -0.01400261739377956,0.02226684146331038,0.0042419481559971845 -0.01420908607348314,0.022262864777834273,0.0042406294285256855 -0.014418599135140457,0.02225883156807255,0.00423929217583699 -0.014631201468182144,0.02225474106146112,0.004237936151074392 -0.01484693862393381,0.022250592475772674,0.00423656110447862 -0.015065856825375598,0.02224638501902199,0.004235166783365092 -0.015288002977045818,0.022242117889371228,0.004233752932101277 -0.01551342467509045,0.022237790275035123,0.004232319292084374 -0.015742170217460962,0.022233401354186087,0.004230865601719091 -0.015974288614262422,0.022228950294859336,0.004229391596395708 -0.016209829598254163,0.022224436254857927,0.004227897008468374 -0.016448843635505406,0.022219858381658006,0.004226381567233663 -0.016691381936207828,0.02221521581231394,0.0042248449989093755 -0.01693749646564774,0.02221050767336375,0.004223287026613715 -0.01718723995533988,0.022205733080734466,0.004221707370344675 -0.017440665914325526,0.022200891139647926,0.004220105746959851 -0.017697828640637098,0.02219598094452674,0.004218481870156537 -0.017958783232931808,0.022191001578900332,0.004216835450452214 -0.018223585602296952,0.022185952115311623,0.004215166195165449 -0.01849229248422911,0.02218083161522384,0.004213473808397185 -0.018764961450790138,0.022175639128927845,0.004211757991012473 -0.01904165092294228,0.022170373695449944,0.004210018440622634 -0.01932242018306524,0.022165034342460106,0.004208254851567953 -0.019607329387657784,0.022159620086180894,0.004206466914900826 -0.019896439580226605,0.022154129931296885,0.004204654318369441 -0.020189812704365265,0.022148562870864832,0.004202816746402034 -0.02048751161702603,0.02214291788622459,0.004200953880091682 -0.02078960010198731,0.02213719394691068,0.004199065397181734 -0.021096142883519683,0.02213139001056503,0.004197150972051834 -0.021407205640253533,0.022125505022850146,0.004195210275704634 -0.021722855019251055,0.0221195379173637,0.004193242975753135 -0.022043158650285756,0.02211348761555399,0.004191248736408795 -0.022368185160332576,0.022107353026636398,0.004189227218470363 -0.02269800418827165,0.022101133047511316,0.004187178079313414 -0.023032686399808818,0.022094826562682968,0.00418510097288079 -0.023372303502616168,0.022088432444179896,0.004182995549673781 -0.02371692826169587,0.02208194955147656,0.004180861456744229 -0.02406663451497052,0.02207537673141674,0.004178698337687461 -0.024421497189103303,0.022068712818138103,0.00417650583263621 -0.024781592315551507,0.02206195663299877,0.004174283578255463 -0.025146997046856766,0.022055106984505444,0.004172031207738289 -0.025517789673175407,0.022048162668243297,0.0041697483508027575 -0.025894049639052553,0.02204112246680799,0.004167434633689839 -0.026275857560443677,0.02203398514973932,0.004165089679162461 -0.026663295241987017,0.02202674947345736,0.004162713106505709 -0.027056445694530668,0.02201941418120051,0.004160304531528156 -0.0274553931529182,0.022011978002965896,0.004157863566564465 -0.027860223094036497,0.022004439655452252,0.004155389820479213 -0.02827102225512966,0.021996797842005037,0.004152882898672002 -0.02868787865238295,0.021989051252564503,0.004150342403083946 -0.029110881599780883,0.021981198563616144,0.004147767932205513 -0.02954012172824316,0.021973238438144124,0.004145159081085774 -0.029975691005043017,0.021965169525587514,0.004142515441343135 -0.03041768275351164,0.021956990461799764,0.004139836601177604 -0.03086619167303335,0.021948699869011087,0.004137122145384537 -0.031321313859335474,0.021940296355794225,0.004134371655370063 -0.03178314682507741,0.021931778517033793,0.004131584709168113 -0.03225178952074327,0.021923144933898776,0.0041287608814591335 -0.032727342355842806,0.02191439417381903,0.004125899743590575 -0.03320990722042448,0.021905524790465335,0.00412300086359912 -0.03369958750690617,0.021896535323733562,0.0041200638062348 -0.034196488132227636,0.021887424299732745,0.004117088132986964 -0.03470071556032954,0.021878190230777413,0.004114073402112198 -0.035212377824963996,0.021868831615384332,0.004111019168664213 -0.035731584552841415,0.021859346938273547,0.004107924984525821 -0.03625844698711886,0.02184973467037426,0.004104790398442922 -0.0367930780112343,0.021839993268835386,0.004101614956060747 -0.037335592173092715,0.0218301211770411,0.00409839819996217 -0.0378861057096087,0.021820116824631433,0.0040951396697083975 -0.03844473657161086,0.021809978627528148,0.004091838901881865 -0.03901160444911346,0.021799704987965976,0.004088495430131569 -0.03958683079696076,0.021789294294529662,0.004085108785220755 -0.04017053886084948,0.021778744922196402,0.0040816784950771495 -0.04076285370373491,0.021768055232384453,0.004078204084845639 -0.041363902232626315,0.021757223573007845,0.0040746850769436335 -0.04197381322577766,0.02174624827853716,0.004071120991118975 -0.04259271736027906,0.021735127670067005,0.00406751134451064 -0.04322074724005508,0.021723860055389888,0.004063855651712132 -0.04385803742427597,0.02171244372907714,0.00406015342483775 -0.04450472445618782,0.02170087697256658,0.004056404173591694 -0.04516094689236773,0.021689158054257595,0.004052607405340133 -0.0458268453324103,0.021677285229613416,0.004048762625186252 -0.04650256244905209,0.021665256741271073,0.004044869336048387 -0.04718824301874007,0.02165307081915917,0.00404092703874123 -0.047884033952650715,0.021640725680623443,0.004036935232060254 -0.04859008432816674,0.02162821953056058,0.004032893412869334 -0.049306545420817825,0.02161555056156045,0.004028801076191697 -0.05003357073669225,0.021602716954056977,0.004024657715304194 -0.050771316045326455,0.021589716876487395,0.00402046282183501 -0.05151993941307973,0.02157654848546107,0.00401621588586482 -0.0522796012370008,0.021563209925937084,0.004011916396031509 -0.05305046427919381,0.02154969933141131,0.0040075638396384365 -0.053832693701691144,0.021536014824113374,0.0040031577027663835 -0.054626457101840394,0.02152215451521297,0.003998697470389181 -0.05543192454821311,0.021508116505036718,0.003994182626493103 -0.056249268617042866,0.02149389888329497,0.003989612654200079 -0.05707866442920097,0.021479499729319187,0.003984987035894773 -0.057920289687717036,0.02146491711231018,0.003980305253355581 -0.05877432471585291,0.021450149091596933,0.003975566787889619 -0.05964095249573802,0.021435193716906872,0.003970771120471736 -0.06052035870757448,0.021420049028647477,0.003965917731887604 -0.06141273176942016,0.021404713058199236,0.003961006102880934 -0.06231826287755821,0.021389183828220717,0.003956035714304916 -0.06323714604746229,0.0213734593529654,0.003951006047277806 -0.0641695781553654,0.021357537638610948,0.003945916583342864 -0.06511575898044174,0.021341416683600924,0.003940766804632583 -0.06607589124761065,0.021325094478998913,0.003935556194037251 -0.06705018067097175,0.021308569008856047,0.003930284235377958 -0.06803883599788033,0.021291838250591118,0.003924950413584021 -0.06904206905367255,0.021274900175384387,0.003919554214874881 -0.07006009478705065,0.021257752748584786,0.003914095126946515 -0.07109313131613675,0.021240393930130802,0.003908572639162401 -0.07214139997520597,0.021222821674985504,0.0039029862427490455 -0.07320512536210869,0.021205033933585495,0.0038973354309960995 -0.07428453538639201,0.021187028652304384,0.003891619699461114 -0.07537986131813076,0.021168803773930777,0.0038858385461789345 -0.07649133783747836,0.021150357238160864,0.003879991471875747 -0.07761920308494846,0.021131686982106188,0.003874077980187813 -0.07876369871243831,0.02111279094081635,0.0038680975778848767 -0.07992506993500365,0.02109366704781688,0.0038620497750982835 -0.08110356558339775,0.021074313235662907,0.0038559340855537833 -0.08229943815738494,0.021054727436508124,0.0038497500268090245 -0.08351294387984015,0.021034907582689697,0.0038434971204957757 -0.0847443427516461,0.021014851607328987,0.003837174892566783 -0.08599389860740007,0.020994557444948447,0.0038307828735473304 -0.08726187917194236,0.02097402303210466,0.0038243205987914582 -0.08854855611771742,0.0209532463080377,0.0038177876087427936 -0.08985420512298165,0.020932225215336876,0.00381118344919997 -0.09117910593086906,0.020910957700623223,0.003804507671586666 -0.09252354240932795,0.020889441715248282,0.003797759833226134 -0.09388780261194116,0.02086767521600995,0.0037909394976202147 -0.09527217883964338,0.0208456561658849,0.0037840462347327967 -0.09667696770334847,0.020823382534777946,0.0037770796212776656 -0.09810247018750005,0.020800852300288216,0.003770039241010655 -0.09954899171455907,0.020778063448492343,0.003762924685026035 -0.10101684221044274,0.02075501397474456,0.0037557355520570915 -0.10250633617092762,0.020731701884493626,0.0037484714487807597 -0.1040177927290326,0.020708125194116963,0.003741131990126295 -0.10555153572339489,0.02068428193177128,0.0037337167995877838 -0.10710789376765424,0.02066017013826043,0.0037262255095405 -0.10868720032086078,0.020635787867919655,0.0037186577615608836 -0.11028979375892013,0.020611133189517017,0.0037110132067501075 -0.11191601744709298,0.02058620418717075,0.0037032915060610256 -0.11356621981356264,0.02056099896128363,0.003695492330628447 -0.11524075442408835,0.02053551562949338,0.003687615362102481 -0.1169399800577586,0.020509752327639064,0.003679660292984899 -0.1186642607838616,0.02048370721074376,0.0036716268269682555 -0.12041396603988967,0.02045737845401256,0.0036635146792776702 -0.12218947071069304,0.0204307642538461,0.0036553235770149847 -0.12399115520880154,0.020403862828869513,0.003647053259505215 -0.1258194055559299,0.020376672420975753,0.003638703478644964 -0.1276746134656856,0.02034919129638391,0.0036302739992526726 -0.12955717642749562,0.020321417746711336,0.003621764599420414 -0.13146749779177086,0.0202933500900598,0.0036131750708670246 -0.13340598685632674,0.020264986672114675,0.0036045052192922736 -0.1353730589540772,0.020236325867257363,0.0035957548647318695 -0.1373691355420229,0.020207366079689662,0.0035869238419129344 -0.1393946442915502,0.020178105744570393,0.0035780120006097312 -0.141450019180063,0.02014854332916312,0.003569019205999303 -0.1435357005839646,0.020118677333994375,0.003559945339016708 -0.1456521353730109,0.0200885062940223,0.0035507902967094962 -0.14779977700605537,0.020058028779814368,0.0035415539925911527 -0.14997908562820486,0.020027243398733737,0.003532236356993052 -0.15219052816940884,0.019996148796133692,0.003522837337414625 -0.15443457844450154,0.0199647436565589,0.0035133568988713415 -0.15671171725472008,0.019933026704953064,0.0035037950242400506 -0.1590224324907185,0.019900996707871807,0.0034941517146013456 -0.16136721923710182,0.019868652474699943,0.0034844269895784505 -0.16374657987850053,0.019835992858872338,0.003474620887672262 -0.1661610242072094,0.01980301675909684,0.003464733466592012 -0.16861106953241403,0.01976972312057877,0.0034547648035811174 -0.17109724079102684,0.019736110936245513,0.0034447149957377377 -0.17362007066015855,0.01970217924797,0.0034345841603295436 -0.17618009967124687,0.019667927147792166,0.003424372435102136 -0.1787778763258691,0.01963335377913682,0.0034140799785806406 -0.18141395721326173,0.019598458338026564,0.003403706970363919 -0.18408890712957263,0.01956324007428878,0.0033932536114108297 -0.18680329919887279,0.019527698292754768,0.0033827201243179844 -0.1895577149959507,0.01949183235444992,0.003372106753588421 -0.19235274467091915,0.019455641677773187,0.0033614137658905777 -0.19518898707565754,0.019419125739664398,0.0033506414503070006 -0.19806704989212023,0.019382284076757603,0.003339790118572109 -0.20098754976253572,0.019345116286519106,0.0033288601052984938 -0.20395111242152572,0.01930762202836803,0.003317851768190973 -0.20695837283017313,0.019269801024777898,0.003306765488247884 -0.21000997531206553,0.019231653062357437,0.0032956016699488867 -0.21310657369134622,0.019193177992908306,0.0032843607414286304 -0.2162488314327991,0.019154375734458624,0.0032730431546356404 -0.21943742178400066,0.0191152462722692,0.003261649385475683 -0.22267302791956708,0.019075789659811614,0.003250179933939033 -0.22595634308752816,0.019036006019715185,0.003238635324210852 -0.22928807075786056,0.018995895544681167,0.0032270161047640634 -0.23266892477320966,0.0189554584983618,0.003215322848434032 -0.23609962950183555,0.018914695216202402,0.0032035561524743224 -0.23958091999281217,0.018873606106243668,0.003191716638592905 -0.2431135421335172,0.018832191649882514,0.0031798049529680877 -0.24669825280944177,0.018790452402588798,0.003167821766243556 -0.25033582006635857,0.01874838899457577,0.0031557677735018 -0.2540270232748799,0.018706002131421894,0.0031436436942152974 -0.25777265329744237,0.018663292594641546,0.003131450272174829 -0.2615735126577543,0.018620261242202486,0.0031191882753942753 -0.2654304157127408,0.018576909008987477,0.003106858495991261 -0.2693441888270251,0.018533236907197746,0.0030944617500431363 -0.27331567054998157,0.018489246026695775,0.003081998877417607 -0.27734571179540063,0.01844493753528545,0.0030694707415775528 -0.28143517602380175,0.018400312678926414,0.0030568782293594592 -0.2855849394274346,0.01835537278188105,0.0030442222507250215 -0.2897958911180097,0.01831011924679136,0.003031503738485355 -0.29406893331719447,0.018264553554683198,0.003018723647997518 -0.298404981549921,0.01821867726489608,0.003005882956832824 -0.30280496484054165,0.018172492014935825,0.002992982664416669 -0.3072698259118789,0.018125999520248206,0.0029800237916395357 -0.31180052138720915,0.01807920157391114,0.0029670073804388924 -0.3163980219952243,0.018032100046243456,0.002953934493351812 -0.32106331277801764,0.017984696884328306,0.002940806213038066 -0.32579739330213336,0.017936994111449046,0.0029276236417736853 -0.3306012778727312,0.017888993826435908,0.0029143879009148337 -0.3354759957509061,0.017840698202921616,0.002901100130332033 -0.3404225913742146,0.01779210948850422,0.0028877614878148536 -0.34544212458045165,0.017743230003815776,0.002874373148447114 -0.35053567083472625,0.017694062141495173,0.0028609363039528513 -0.3557043214598879,0.017644608365064,0.002847452162013351 -0.36094918387034747,0.017594871207704376,0.002833921945555494 -0.3662713818093488,0.01754485327093725,0.002820346892011954 -0.3716720555897363,0.01749455722320096,0.002806728252553661 -0.37715236233827476,0.01744398579832893,0.002793067291295173 -0.3827134762435696,0.01739314179392615,0.002779365284473561 -0.38835658880764495,0.01734202806964412,0.002765623519601623 -0.39408290910122984,0.017290647545354032,0.00275184329459621 -0.3998936640228078,0.01723900319921855,0.0027380259168826248 -0.405790098561489,0.01718709806566226,0.0027241727024760534 -0.41177347606375486,0.01713493523324137,0.0027102849750412195 -0.41784507850413927,0.017082517842413495,0.0026963640649313417 -0.42400620675989764,0.017029849083208648,0.002682411308207776 -0.4302581808897293,0.016976932192802545,0.0026684280456416385 -0.436602340416607,0.016923770452993862,0.0026544156216988988 -0.4430400446147776,0.016870367187587304,0.0026403753835105236 -0.4495726728009957,0.01681672575968447,0.0026263086798291977 -0.45620162463004926,0.016762849568885192,0.002612216859974495 -0.4629283203946455,0.016708742048401653,0.002598101272768145 -0.4697542013297155,0.01665440666208857,0.0025839632654613733 -0.4766807299212089,0.016599846901392604,0.0025698041826562306 -0.48370939021943976,0.016545066282224727,0.00255562536522294 -0.49084168815705237,0.016490068341759343,0.0025414281492153793 -0.49807915187167817,0.016434856635164464,0.002527213864786801 -0.5054233320333463,0.01637943473226757,0.0025129838351080716 -0.5128758021767262,0.01632380621416197,0.0024987393752906387 -0.5204381590382645,0.01626797466975886,0.002484481791316569 -0.5281120228982977,0.016211943692290752,0.002470212378977986 -0.5358990379282048,0.01615571687577199,0.002455932422828322 -0.5438008725426826,0.016099297811422525,0.0024416431951477147 -0.551819219757213,0.016042690084061645,0.0024273459549250666 -0.5599557975508007,0.015985897268478187,0.0024130419468590737 -0.5682123492340627,0.015928922925784416,0.002398732400380745 -0.5765906438227405,0.015871770599761158,0.002384418528699757 -0.5850924764167246,0.015814443813201542,0.002370101527877034 -0.5937196685846635,0.01575694606426148,0.002355782575925923 -0.6024740687542475,0.015699280822825096,0.002341462831944256 -0.6113575526082445,0.0156414515268934,0.002327143435279521 -0.6203720234863757,0.01558346157900509,0.0023128255047293917 -0.6295194127931188,0.015525314342698137,0.002298510137779662 -0.6388016804115221,0.015467013139021343,0.002284198409881623 -0.648220815123122,0.015408561243105093,0.0022698913737708385 -0.6577788350340499,0.015349961880800733,0.002255590058829081 -0.6674777880074256,0.015291218225397791,0.0022412954704911594 -0.6773197521021231,0.015232333394429122,0.0022270085896982004 -0.6873068360180064,0.015173310446573138,0.002212730372398804 -0.6974411795477331,0.015114152378663146,0.0021984617490993395 -0.7077249540352157,0.01505486212281334,0.0021842036244645565 -0.718160362840847,0.014995442543671134,0.0021699568769693997 -0.7287496418135815,0.014935896435805576,0.002155722358602898 -0.7394950597699809,0.01487622652124112,0.0021415008946246606 -0.7503989189803212,0.014816435447146321,0.0021272932833744807 -0.7614635556618669,0.014756525783686643,0.002113100296135264 -0.7726913404794216,0.014696500022050281,0.0020989226770493177 -0.7840846790532549,0.014636360572655846,0.002084761143087935 -0.7956460124745233,0.014576109763550324,0.002070616384073879 -0.807377817828286,0.014515749839005429,0.002056489062756327 -0.8192826087242384,0.014455282958320206,0.0020423798149375185 -0.8313629358352644,0.014394711194837047,0.0020282892496503086 -0.8436213874439368,0.014334036535178197,0.0020142179493854843 -0.8560605899970707,0.014273260878708968,0.0020001664703677103 -0.8686832086684545,0.01421238603723374,0.0019861353428786885 -0.8814919479298821,0.014151413734929789,0.0019721250716259967 -0.894489552130599,0.014090345608523762,0.0019581361361559694 -0.9076788060852992,0.014029183207714761,0.0019441689913088083 -0.9210625356707842,0.013967927995847328,0.0019302240677140392 -0.9346436084314284,0.013906581350836984,0.001916301772324313 -0.9484249341935649,0.013845144566350191,0.0019024024889854878 -0.9624094656889332,0.013783618853239574,0.0018885265790408252 -0.9766001991873221,0.013722005341234947,0.0018746743819671873 -0.991000175138535,0.013660305080889355,0.0018608462160409464 -1.0056124788238285,0.013598519045778553,0.0018470423790314782 -1.0204402410169484,0.013536648134951973,0.0018332631489199778 -1.0354866386549189,0.013474693175631408,0.001819508784641468 -1.0507548955187223,0.013412654926153764,0.001805779526847874 -1.0662482829240092,0.01335053407915243,0.0017920755986901074 -1.0819701204219987,0.013288331264971592,0.001778397206617196 -1.0979237765107168,0.013226047055306377,0.0017647445411905908 -1.1141126693567107,0.013163681967061198,0.0017511177779119076 -1.1305402675274148,0.013101236466417473,0.001737517078062464 -1.1472100907343108,0.013038710973101423,0.0017239425895531123 -1.1641257105870513,0.01297610586484106,0.0017103944477830624 -1.181290751358692,0.01291342148200181,0.0016968727765064525 -1.1987088907622168,0.012850658132388008,0.001683377688705692 -1.216383860738514,0.012787816096197991,0.0016699092874706482 -1.2343194482559592,0.012724895631119178,0.001656467666883006 -1.252519496121802,0.012661896977548765,0.0016430529129052135 -1.2709879038055067,0.012598820363925508,0.0016296651042736184 -1.2897286282742428,0.012535666012157077,0.0016163043133955144 -1.3087456848406815,0.012472434143127277,0.00160297060724997 -1.328043148023304,0.012409124982266723,0.001589664048292412 -1.3476251524193947,0.012345738765170457,0.0015763846953630234 -1.3674958935908978,0.012282275743245615,0.001563132604599141 -1.3876596289633447,0.012218736189371792,0.00154990783035187 -1.4081206787380312,0.012155120403557084,0.0015367104261071348 -1.4288834268176522,0.012091428718572418,0.0015235404454114992 -1.4499523217455703,0.01202766150554679,0.0015103979428030122 -1.4713318776589477,0.011963819179506275,0.001497282974747281 -1.4930266752559311,0.011899902204839916,0.0014841956005790151 -1.5150413627770851,0.01183591110067565,0.0014711358834491079 -1.5373806570013113,0.011771846446149961,0.001458103891277264 -1.5600493442564445,0.011707708885555427,0.0014450996977100434 -1.5830522814447567,0.011643499133350641,0.0014321233830840488 -1.6063943970835695,0.01157921797901796,0.0014191750353938003 -1.6300806923612225,0.011514866291754673,0.001406254751263665 -1.6541162422086138,0.011450445024984528,0.0013933626369229779 -1.6785061963865227,0.011385955220676815,0.0013804988091833301 -1.7032557805889856,0.011321398013461586,0.0013676633964167008 -1.7283702975629274,0.011256774634530004,0.001354856539532925 -1.7538551282443144,0.01119208641531024,0.0013420783929547198 -1.7797157329110418,0.011127334790910113,0.0013293291255882943 -1.8059576523528356,0.011062521303318727,0.0013166089217872693 -1.8325865090584061,0.01099764760436056,0.0013039179823074664 -1.8596080084200886,0.010932715458396471,0.0012912565252498833 -1.8870279399562657,0.010867726744767225,0.001278624786988948 -1.9148521785518018,0.010802683459976231,0.0012660230230830158 -1.943086685716781,0.010737587719609495,0.0012534515091638452 -1.9717375108637845,0.010672441759991486,0.0012409105418017038 -2.000810792604019,0.010607247939577217,0.0012284004393426059 -2.030312760062557,0.010542008740081479,0.0012159215427141185 -2.060249734212953,0.0104767267673474,0.0012034742161961243 -2.0906281292315576,0.010411404751957483,0.001191058848152894 -2.1214544538717885,0.010346045549591027,0.0011786758517228493 -2.1527353128586797,0.010280652141132999,0.00116632566546244 -2.1844774083039695,0.010215227632540042,0.0011540087539406597 -2.216687541142075,0.010149775254469978,0.0011417256082808121 -2.2493726125872406,0.010084298361681983,0.0011294767466463232 -2.2825396256121495,0.01001880043221536,0.001117262714667559 -2.316195686448363,0.009953285066354815,0.0011050840858068459 -2.350348006108868,0.009887755985391145,0.0010929414616590999 -2.3850039019330898,0.00982221703018625,0.0010808354721857732 -2.4201707991546613,0.009756672159551808,0.0010687667758801224 -2.455856232492333,0.009691125448450919,0.001056736059862068 -2.4920678477643277,0.009625581086032455,0.001044744039901305 -2.5288134035265126,0.009560043373507368,0.001032791460367618 -2.566100772734701,0.009494516721876713,0.001020879094107742 -2.6039379444314883,0.009429005649520456,0.0010090077422484159 -2.64233302545796,0.0093635147796562,0.0009971782339256766 -2.6812942421906154,0.009298048837676735,0.0009853914259407785 -2.720829942303929,0.009232612648374558,0.0009736482023434254 -2.7609485965588827,0.00916721113306173,0.0009619494739434076 -2.8016588006178913,0.009101849306592228,0.0009502961777519724 -2.8429692768864556,0.00903653227429421,0.0009386892763546227 -2.8848888763819995,0.00897126522881837,0.0009271297572172474 -2.9274265806302613,0.008906053446908523,0.0009156186319277984 -2.970591503589624,0.008840902286099685,0.0009041569353759075 -3.0143928936038447,0.008775817181348438,0.0008927457248730574 -3.058840135383564,0.008710803641599704,0.0008813860792160643 -3.103942752017048,0.008645867246293439,0.0008700790976967932 -3.149710407010548,0.00858101364181437,0.0008588258990610928 -3.196152906358775,0.008516248537887015,0.0008476276204200467 -3.2432802006459016,0.008451577703917952,0.0008364854161166336 -3.291102387177516,0.0083870069652867,0.0008254004565509519 -3.339629712144042,0.008322542199586044,0.0008143739269670912 -3.388872572816042,0.008258189332812397,0.0008034070262047335 -3.4388415197719064,0.008193954335506152,0.000792500965418464 -3.4895472591583587,0.008129843218841942,0.00078165696676771 -3.541000654984322,0.008065862030668213,0.0007708762620800777 -3.5932127314486078,0.0080020168514954,0.0007601600914907693 -3.646194675301897,0.007938313790431929,0.0007495097020605996 -3.6999578382435816,0.007874758981066973,0.0007389263463749708 -3.7545137393539276,0.007811358577299015,0.0007284112811260437 -3.809874067562121,0.0077481187491092165,0.0007179657656801364 -3.8660506841506694,0.007685045678278712,0.0007075910606322694 -3.9230556252967643,0.007622145554048993,0.0006972884263495731 -3.980901104651116,0.007559424568724808,0.000687059121505148 -4.0395995159547775,0.007496888913219234,0.0006769044016038396 -4.099163435694594,0.007434544772540768,0.0006668255175012015 -4.1596056257977825,0.007372398321222657,0.0006568237139168822 -4.220939036366267,0.007310455718695099,0.0006469002279434836 -4.283176808451294,0.0072487231046011015,0.0006370562875519359 -4.3463322768689885,0.007187206594057561,0.0006272931100942933 -4.410418973057437,0.007125912272863054,0.0006176119008048438 -4.4754506279758495,0.007064846192654877,0.0006080138513004128 -4.5414411750465185,0.007004014366017698,0.0005985001380806695 -4.608404753140129,0.006943422761547181,0.0005890719210293226 -4.676355709605116,0.006883077298871993,0.0005797303419170696 -4.745308603341642,0.006822983843638476,0.0005704765229072426 -4.81527820792094,0.006763148202462247,0.000561311565065128 -4.886279514750659,0.006703576117851828,0.000552236546872032 -4.95832773628683,0.00664427326310974,0.0005432525227452657 -5.031438309293246,0.006585245237216728,0.0005343605215652919 -5.105626898148873,0.006526497559705446,0.0005255615452114323 -5.180909398204057,0.006468035665530137,0.0005168565671076232 -5.257301939186167,0.006409864899939275,0.0005082465307798652 -5.334820888655506,0.006351990513358444,0.0004997323484271171 -5.41348285551215,0.006294417656291034,0.0004913148995075516 -5.493304693554524,0.006237151374244594,0.00048299502934219995 -5.574303505090401,0.006180196602691074,0.0004747735477381727 -5.656496644601183,0.006123558162069188,0.0004666512276337589 -5.739901722460227,0.006067240752837534,0.00045862880376784014 -5.8245366087059365,0.006011248950587254,0.0004507069713761862 -5.910419436870545,0.00595558720122306,0.0004428863849172965 -5.997568607865328,0.005900259816221709,0.00043516765683057417 -6.086002793923125,0.005845270967977158,0.000427551356329694 -6.1757409425989485,0.005790624685241534,0.0004200380082341413 -6.2668022808296255,0.005736324848671312,0.0004126280918419244 -6.359206319053302,0.005682375186488062,0.00040532203984656464 -6.45297285538964,0.005628779270263225,0.00039812023730149157 -6.5481219798816985,0.005575540510836261,0.0003910230206350015 -6.644674078800342,0.005522662154375671,0.0003840306767189591 -6.742649839012146,0.005470147278592259,0.00037714344199442135 -6.842070252411636,0.0054179987891140955,0.00037036150165735784 -6.942956620418956,0.005366219416032406,0.0003636849889075921 -7.045330558543839,0.005314811710627713,0.00035711398426406944 -7.149214001016822,0.005263778042285457,0.00035064851494948356 -7.254629205488815,0.005213120595610032,0.00034428855434722334 -7.361598757799919,0.00516284136774639,0.00033803402153351496 -7.470145576818608,0.005112942165917877,0.0003318847808875205 -7.580292919352191,0.00506342460518904,0.0003258406417820579 -7.692064385129744,0.005014290106461854,0.0003199013583574412 -7.805483921858517,0.004965539894713668,0.0003140666293808221 -7.920575830354828,0.004917174997484844,0.00030833609819322946 -8.037364769750686,0.004869196243623877,0.00030270935274633883 -8.15587576277715,0.004821604262297504,0.0002971859257308077 -8.276134201125624,0.004774399482272839,0.00029176529479780524 -8.398165850888134,0.004727582131478403,0.00028644688287515714 -8.52199685807789,0.004681152236850334,0.000281230058579279 -8.647653754231257,0.004635109624469699,0.0002761141367238389 -8.775163462092237,0.00458945391999641,0.0002710983789258332 -8.90455330138087,0.004544184549404507,0.0002661819943094792 -9.035850994646626,0.004499300740023216,0.00026136414030806425 -9.169084673208166,0.004454801521887451,0.00025664392356358507 -9.304282883180589,0.004410685729400748,0.00025202040092372433 -9.441474591591637,0.00436695200331293,0.0002474925805353868 -9.580689192588084,0.004323598793014046,0.00024305942303371174 -9.721956513733547,0.00428062435914526,0.00023871984282514732 -9.865306822399265,0.0042380267765265555,0.00023447270946284077 -10.010770832249046,0.00419580393740018,0.00023031684911226343 -10.158379709819881,0.00415395355498779,0.00022625104610464952 -10.308165081199519,0.00411247316735836,0.00022227404457548998 -10.460159038802562,0.004071360141602745,0.00021838455018497228 -10.614394148246497,0.004030611678309876,0.0002145812319169255 -10.770903455329007,0.003990224816338416,0.00021086272395249198 -10.929720493108283,0.003950196437876601,0.00020722762761440789 -11.090879289087644,0.003910523273781903,0.0002036745133774614 -11.254414372506195,0.0038712019091910414,0.0002002019229403739 -11.420360781736852,0.0038322287893897042,0.0001968083713540512 -11.58875407179355,0.003793600225930289,0.00019349234920085993 -11.759630321949164,0.0037553124029848168,0.00019025232481930892 -11.933026143465627,0.003717361383919183,0.00018708674656826597 -12.108978687438176,0.0036797431180737934,0.00018399404512459754 -12.287525652755155,0.0036424534477347,0.0001809726358079121 -12.46870529417529,0.0036054881152783875,0.00017802092092589626 -12.652556430523925,0.0035688427704725152,0.00017513729213357676 -12.839118453010231,0.003532512977914057,0.00017232013279970066 -13.028431333666989,0.0034964942245856016,0.0001695678203733336 -13.220535633914889,0.0034607819275099096,0.00016687872874369603 -13.415472513252979,0.0034253714414823142,0.00016425123058623096 -13.613283738077378,0.0033902580668600003,0.00016168369968788516 -13.814011690630005,0.003355437057387006,0.00015917451324462393 -14.017699378079163,0.0033209036280334226,0.00015672205412427137 -14.22439044173413,0.0032866529628272486,0.00015432471308786982 -14.43412916639554,0.003252680222657285,0.00015198089096289918 -14.64696048984373,0.0032189805530256914,0.0001496890007618766 -14.862930012466844,0.003185549091728951,0.00014744746974007584 -15.082084007031025,0.0031523809764464734,0.00014525474138635383 -15.304469428594684,0.0031194713522164903,0.0001431092773413638 -15.530133924568817,0.0030868153787795964,0.00014100955923775595 -15.7591258449258,0.0030544082377709464,0.00013895409045731403 -15.991494252558628,0.003022245139743025,0.00013694139780036317 -16.227288933793016,0.002990321331001843,0.00013497003306319258 -16.466560409054296,0.0029586321002405104,0.00013303857451967165 -16.709359943691794,0.0029271727849552176,0.00013114562830369292 -16.95573955896277,0.0028959387776299646,0.00012928982968955338 -17.205752043178194,0.002864925531677681,0.00012746984426787876 -17.45945096301303,0.002834128567126705,0.00012568436901519363 -17.716890674983166,0.0028035434760430933,0.00012393213325576113 -17.97812633709171,0.0027731659276806417,0.00012221189951482742 -18.24321392064681,0.0027429916733520666,0.00012052246426293346 -18.5122102222539,0.0027130165510162486,0.0001188626585514656 -18.785172875984767,0.0026832364895780026,0.00011723134854013613 -19.06216036572588,0.0026536475128983933,0.00011562743591758387 -19.343232037708997,0.002624245743515012,0.00011404985821677075 -19.628448113226412,0.0025950274060732056,0.00011249758902732745 -19.917869701533792,0.002565988830470585,0.00011096963810744709 -20.211558812943114,0.002537126454718593,0.00010946505139835822 -20.50957837210877,0.0025084368275261042,0.00010798291094480503 -20.811992231509635,0.002479916610611345,0.00010652233472533696 -21.118865185129724,0.002451562580749509,0.00010508247639655069 -21.430262982340757,0.0024233716315644966,0.00010366252495572967 -21.746252341989322,0.002395340775074144,0.00010226170432659934 -22.066900966691886,0.0023674671429991245,0.00010087927287314829 -22.392277557340343,0.002339747987846463,9.95145228466594e-05 -22.72245182782165,0.0023121806837791297,9.816677977124946e-05 -23.057494519954542,0.002284762727283697,9.683540177333126e-05 -23.397477418646226,0.002257491737648427,9.55197788604895e-05 -23.742473367272833,0.0022303654572642796,9.421933215529432e-05 -24.092556283286505,0.0022033817517615323,9.293351308957697e-05 -24.44780117405274,0.0021765386099946264,9.166180256465005e-05 -24.808284152921026,0.0021498341438877405,9.040371008288046e-05 -25.174082455532663,0.0021232665881533008,8.915877285590849e-05 -25.545274456369025,0.0020968342998952906,8.792655489466648e-05 -25.921939685543634,0.0020705357581087664,8.670664608617567e-05 -26.30415884584204,0.0020443695630863665,8.549866126189569e-05 -26.69201383001284,0.0020183344357419786,8.43022392621768e-05 -27.08558773831379,0.00199242921686096,8.311704200111421e-05 -27.484964896316384,0.0019666528662855296,8.194275353583518e-05 -27.890230872973213,0.001941004462043003,8.077907914396381e-05 -28.301472498951565,0.001915483199423663,7.962574441270979e-05 -28.718777885237543,0.0018900883900140788,7.848249434271997e-05 -29.142236442014205,0.0018648194606906542,7.734909246951405e-05 -29.57193889781829,0.0018396759525771875,7.622532000500753e-05 -30.00797731897947,0.0018146575199691386,7.511097500130271e-05 -30.450445129345933,0.0017897639292263684,7.400587153861281e-05 -30.899437130301095,0.0017649950576349603,7.290983893886718e-05 -31.355049521075337,0.0017403508922378263,7.182272100624014e-05 -31.817379919357375,0.0017158315286328106,7.074437529555022e-05 -32.28652738220925,0.001691437169736072,6.967467240918942e-05 -32.762592427289995,0.0016671681245076472,6.861349532297105e-05 -33.24567705439224,0.0016430248066352864,6.756073874102977e-05 -33.73588476729608,0.0016190077331719446,6.651630847966726e-05 -34.23332059594554,0.00159511752312157,6.548012087981689e-05 -34.73809111895176,0.001571354895967298,6.445210224759787e-05 -35.25030448642826,0.0015477206701356382,6.343218832224857e-05 -35.77007044316258,0.0015242157613898162,6.242032377056723e-05 -36.297500352129774,0.0015008411811451336,6.141646170684525e-05 -36.8327072183528,0.0014775980346989498,6.0420563237159455e-05 -37.375805713114254,0.0014544875193678323,5.943259702679025e-05 -37.92691219852552,0.0014315109225242965,5.845253888944859e-05 -38.486144752458024,0.001408669619525729,5.748037139693812e-05 -39.05362319384221,0.0013859650715281862,5.6516083507832985e-05 -39.62946910833932,0.0013633988231780635,5.5559670213729513e-05 -40.21380587439188,0.0013409725001749695,5.46111322016196e-05 -40.806758689658444,0.0013186878066995908,5.3670475530942924e-05 -41.40845459783769,0.0012965465227008713,5.273771132389667e-05 -42.019022515888466,0.001274550501037431,5.181285546761511e-05 -42.63859326165092,0.0012527016644688312,5.089592832687999e-05 -43.267299581875186,0.001231002002493055,4.998695446607843e-05 -43.905276180662916,0.0012094535680273898,4.908596237919295e-05 -44.55265974832858,0.0011880584739307274,4.819298422668046e-05 -45.2095889906863,0.0011668188893662601,4.7308055578180365e-05 -45.87620465876815,0.001145737036004471,4.6431215160076126e-05 -46.5526495789811,0.0011248151840672971,4.55625046070256e-05 -47.239068683708275,0.0011040556482153653,4.4701968216668696e-05 -47.93560904236188,0.0010834607832811874,4.384965270681521e-05 -48.64241989289334,0.0010630329798522833,4.300560697451299e-05 -49.35965267376858,0.001042774659709138,4.216988185648997e-05 -50.08746105641482,0.001022688271123983,4.134252989055983e-05 -50.82600097814523,0.0010027762840273697,4.0523605077674215e-05 -51.57543067556971,0.0009830411850504429,3.971316264439266e-05 -52.33591071849788,0.0009634854724518023,3.891125880563109e-05 -53.10760404434234,0.0009441116509387108,3.811795052763075e-05 -53.89067599302869,0.0009249222263933079,3.733329529117162e-05 -54.685294342420754,0.000905919700515229,3.655735085512513e-05 -55.49162934426816,0.000887106565392849,3.5790175020514453e-05 -56.30985376068346,0.0008684852980160362,3.5031825395313076e-05 -57.140142901157674,0.000850058354743917,3.428235916027134e-05 -57.98267466012129,0.0008318281657417417,3.354183283611504e-05 -58.83762955505945,0.0008137971294014168,3.2810302052506826e-05 -59.70519076518854,0.0007959676067607053,3.208782131920451e-05 -60.58554417070362,0.0007783419159364107,3.137444379988425e-05 -61.478878392604564,0.0007609223265871551,3.067022108912919e-05 -62.38538483310885,0.0007437110544215563,2.9975202993107868e-05 -63.30525771666092,0.0007267102557676841,2.928943731448511e-05 -64.23869413154574,0.0007099220222197563,2.8612969642122996e-05 -65.1858940721165,0.0006933483753779529,2.7945843146136226e-05 -66.1470604816441,0.00067699126169715,2.728809837887114e-05 -67.12239929579935,0.0006608525474601286,2.6639773082373407e-05 -68.11211948677567,0.0006449340138905964,2.6000902002904783e-05 -69.116433108063,0.000629237352420982,2.5371516713056787e-05 -70.13555533988108,0.000613764160129597,2.4751645441994977e-05 -71.1697045352833,0.0005985159353612293,2.4141312914346237e-05 -72.2191022669404,0.0005834940735447503,2.3540540198220027e-05 -73.28397337461328,0.0005686998632206975,2.294934456282723e-05 -74.3645460133266,0.0005541344822911341,2.2367739346129747e-05 -75.46105170225216,0.000539798994503395,2.179573383292228e-05 -76.57372537431361,0.0005256943461785713,2.1233333143711553e-05 -77.70280542652179,0.0005118213631947869,2.0680538134721417e-05 -78.84853377105291,0.0004981807482344734,2.013734530931158e-05 -80.01115588707997,0.00048477307830397667,1.9603746741056968e-05 -81.19092087336762,0.0004715988025329352,1.9079730008692315e-05 -82.38808150164341,0.0004586582402598988,1.8565278143081503e-05 -83.60289427075553,0.0004459515794097316,1.806036958632748e-05 -84.83561946162948,0.00043347887516733584,1.7564978163092415e-05 -86.08652119303434,0.0004212400489512658,1.7079073064153188e-05 -87.35586747817212,0.0004092348876897592,1.6602618842170086e-05 -88.64393028210134,0.0003974630434007347,1.6135575419602436e-05 -89.95098558000679,0.0003859240330762838,1.5677898108659693e-05 -91.27731341632908,0.000374617238871152,1.522953764313149e-05 -92.62319796476578,0.0003635419085937313,1.479044022189773e-05 -93.98892758915764,0.00035269715649706624,1.436054756387703e-05 -95.37479490527171,0.00034208196436641837,1.3939796974131624e-05 -96.78109684349639,0.00033169518289894676,1.3528121420806603e-05 -98.2081347124607,0.00032153553337014326,1.3125449622544756e-05 -99.65621426359104,0.0003116016095807448,1.2731706145982373e-05 -101.12564575662049,0.0003018918800769437,1.2346811512897317e-05 -102.61674402606376,0.0002924046906358814,1.197068231654987e-05 -104.1298285486728,0.0002831382670075801,1.1603231346727278e-05 -105.66522351188553,0.00027409071790370583,1.1244367722977049e-05 -107.22325788328625,0.0002652600382227711,1.0893997035488173e-05 -108.80426548108834,0.00025664411250075144,1.0552021493060287e-05 -110.40858504565611,0.00024824071857538604,1.0218340077580022e-05 -112.03656031208331,0.0002400475314518383,9.892848704407914e-06 -113.68854008383978,0.0002320621273568605,9.575440388067028e-06 -115.36487830750394,0.0002242819879680728,9.26600541261264e-06 -117.06593414859942,0.00021670450480451114,8.964431506054456e-06 -118.79207206854771,0.00020932698376422847,8.670604018199249e-06 -120.54366190275547,0.00020214664979435442,8.38440610127814e-06 -122.32107893985543,0.00019516065167872966,8.105718892723587e-06 -124.12470400211355,0.0001883660669280192,7.834421699465318e-06 -125.95492352702166,0.00018175990675700195,7.570392183119464e-06 -127.81212965009586,0.00017533912113360718,7.313506545453485e-06 -129.69672028889175,0.0001691006038842327,7.0636397135219595e-06 -131.60909922826255,0.00016304119783981568,6.820665523879714e-06 -133.54967620687165,0.00015715770000721842,6.584456905296509e-06 -135.51886700498073,0.0001514468667505586,6.354886059414311e-06 -137.51709353353476,0.0001459054189672657,6.131824638808291e-06 -139.54478392455832,0.00014053004724387332,5.915143921935661e-06 -141.60237262288433,0.00013531741697679384,5.704714984479487e-06 -143.69030047923843,0.00013026417344362944,5.500408866620158e-06 -145.80901484469283,0.0001253669468109566,5.302096735795206e-06 -147.95896966651324,0.00012062235706490547,5.10965004453574e-06 -150.14062558542145,0.00011602701885131506,4.922940682997663e-06 -152.35445003428956,0.0001115775462127601,4.741841125837196e-06 -154.60091733828932,0.00010727055721027455,4.566224573111272e-06 -156.88050881652129,0.00010310267841817856,4.395965084915765e-06 -159.19371288513787,9.907054928106287e-05,4.230937709508281e-06 -161.5410251619916,9.517082632261156e-05,4.071018604694317e-06 -163.92294857282334,9.140018719667075e-05,3.9160851522904645e-06 -166.33999345901603,8.77553345716771e-05,3.76601606551111e-06 -168.79267768694052,8.423299984031434e-05,3.6206914891586733e-06 -171.28152675891047,8.082994664706307e-05,3.479993092531281e-06 -173.80707392577335,7.754297422709368e-05,3.343804154993939e-06 -176.3698603011647,7.436892055077828e-05,3.2120096441915994e-06 -178.97043497744394,7.13046652689465e-05,3.0844962869145323e-06 -181.60935514333968,6.834713245484721e-05,2.961152632656491e-06 -184.28718620333282,6.549329313963953e-05,2.8418691099358925e-06 -187.00450189879683,6.27401676391121e-05,2.7265380754791617e-06 -189.76188443092408,6.008482767018322e-05,2.6150538563921755e-06 -192.55992458546876,5.752439825660062e-05,2.5073127854716904e-06 -195.39922185932295,5.505605942412958e-05,2.4032132298335945e-06 -198.28038458896538,5.2677047686345836e-05,2.3026556130568607e-06 -201.20403008079984,5.03846573230046e-05,2.2055424310642366e-06 -204.17078474341568,4.8176241453760104e-05,2.111778261979654e-06 -207.18128422180195,4.6049212910806484e-05,2.021269770220277e-06 -210.236173533537,4.400104491478816e-05,1.9339257050973887e-06 -213.33610720698607,4.202927155905931e-05,1.849656894214143e-06 -216.48174942154048,4.013148810807974e-05,1.7683762319605126e-06 -219.67377414992075,3.83053511164118e-05,1.6899986634164425e-06 -222.91286530257796,3.6548578375405765e-05,1.6144411639824454e-06 -226.19971687422884,3.4858948695247764e-05,1.5416227150634528e-06 -229.5350330925447,3.323430153059314e-05,1.4714642761369036e-06 -232.91952856903947,3.167253645848454e-05,1.4038887535383432e-06 -236.3539284521784,3.017161251770579e-05,1.3388209662995092e-06 -239.83896858274377,2.8729547419097213e-05,1.2761876093728677e-06 -243.37539565149623,2.7344416636684877e-05,1.2159172145742064e-06 -246.96396735915636,2.6014352389749788e-05,1.1579401095711838e-06 -250.6054525787449,2.4737542526163843e-05,1.1021883752398697e-06 -254.30063152032164,2.351222931746593e-05,1.048595801704285e-06 -258.0502958981485,2.233670817623992e-05,9.970978433656909e-07 -261.85524910031734,2.1209326306371717e-05,9.476315732183148e-07 -265.7163063608843,2.0128481296721744e-05,9.001356367372057e-07 -269.63429493453634,1.9092619668649905e-05,8.54550205611906e-07 -273.6100542738345,1.810023538766016e-05,8.108169315861739e-07 -277.64443620907514,1.7149868349208847e-05,7.688789006498768e-07 -281.7383051307952,1.6240102848442592e-05,7.286805878143357e-07 -285.8925381749773,1.5369566043286948e-05,6.901678126863416e-07 -290.1080254109795,1.4536926419924067e-05,6.532876960400077e-07 -294.38567003223613,1.37408922692531e-05,6.17988617568507e-07 -298.72638854977623,1.298021018244173e-05,5.842201749804208e-07 -303.1311109885895,1.2253663573153527e-05,5.51933144587936e-07 -307.6007810868881,1.1560071233466997e-05,5.210794435160829e-07 -312.13635649831167,1.089828592990578e-05,4.916120936442673e-07 -316.7388089971087,1.0267193045376437e-05,4.6348518737343966e-07 -321.40912468634315,9.665709272160325e-06,4.366538552942212e-07 -326.14830420917656,9.092781360441794e-06,4.110742358135694e-07 -330.9573629632601,8.547384926181475e-06,3.867034467801948e-07 -335.8373313182875,8.028523321459792e-06,3.6349955913173806e-07 -340.78925483676284,7.53522656973489e-06,3.4142157257006295e-07 -345.81419449801285,7.066550367786301e-06,3.2042939325502996e-07 -350.913226925513,6.621575155448056e-06,3.004838134914424e-07 -356.08744461755873,6.199405253591856e-06,2.815464933692511e-07 -361.3379561813374,5.799168070193942e-06,2.6357994430298786e-07 -366.66588657045816,5.420013373722126e-06,2.4654751440326146e-07 -372.0723773259782,5.061112632515147e-06,2.3041337560097946e-07 -377.55858682098244,4.721658418295758e-06,2.1514251243365486e-07 -383.12569050877624,4.4008638714693736e-06,2.0070071239295212e-07 -388.77488117473126,4.097962225415249e-06,1.8705455772357934e-07 -394.50736919184436,3.812206386575873e-06,1.7417141855560339e-07 -400.3243827800722,3.542868566798906e-06,1.620194472454782e-07 -406.22716826948215,3.289239964086089e-06,1.5056757379554816e-07 -412.21699036728376,3.050630487652644e-06,1.3978550221737343e-07 -418.2951324288054,2.8263685230035436e-06,1.2964370770113008e-07 -424.4628967324544,2.615800732588872e-06,1.2011343445152023e-07 -430.7216047587436,2.4182918875052976e-06,1.1116669404993198e-07 -437.07259747342425,2.23322472566954e-06,1.0277626420327118e-07 -443.5172356147934,2.059999831894926e-06,9.491568774164707e-08 -450.0568999852449,1.8980355353555488e-06,8.755927173007349e-08 -456.69299174711296,1.746767820020926e-06,8.068208656346454e-08 -463.42693272287585,1.6056502437827717e-06,7.425996491933082e-08 -470.26016569979595,1.474153862173154e-06,6.826950044873202e-08 -477.1941547390428,1.3517671527861889e-06,6.268804609314136e-08 -484.23038548937393,1.2379959367579858e-06,5.749371192276108e-08 -491.37036550544997,1.1323632939295122e-06,5.2665362400487876e-08 -498.61562457083414,1.0344094686100416e-06,4.8182612985056666e-08 -505.96771502575484,9.436917631691395e-07,4.402582599672051e-08 -513.4282120997108,8.597844170101135e-07,4.017610567912053e-08 -520.9987142489651,7.822784688128516e-07,3.6615292401636734e-08 -528.6808434990317,7.10781600273485e-07,3.3325955957311845e-08 -536.4762457922003,6.449179599106961e-07,3.029138792240359e-08 -544.386591340187,5.843279658474235e-07,2.7495593054522495e-08 -552.4135749819932,5.28668086810131e-07,2.4923279717112215e-08 -560.5589165470313,4.776106009119959e-07,2.255984932861043e-08 -568.8243612236064,4.308433320974967e-07,2.0391384844852433e-08 -577.2116799328386,3.880693644220128e-07,1.840463829309487e-08 -585.7226697080912,3.490067346184225e-07,1.658701738533947e-08 -594.359154079992,3.1338810366073713e-07,1.4926571247329833e-08 -603.1229834671436,2.809604082713004e-07,1.3411975307629861e-08 -612.016035572578,2.514844935314792e-07,1.203251539850815e-08 -621.040215786073,2.2473472794443493e-07,1.0778071126869277e-08 -630.1974575923908,2.00498602462688e-07,9.639098579196394e-09 -639.4897229855345,1.785763151314197e-07,8.60661242932555e-09 -648.9190028891247,1.5878034311132315e-07,7.672167521871338e-09 -658.487317582963,1.4093500393239743e-07,6.827840007252869e-09 -668.1967171358851,1.248760078926344e-07,6.06620810651967e-09 -678.0492818450085,1.1045000355413192e-07,5.380332585576891e-09 -688.0471226814443,9.75141183047004e-08,4.763737018977023e-09 -698.1923817425817,8.593549594654629e-08,4.210387923205198e-09 -708.487232711053,7.559083324670866e-08,3.714674838386275e-09 -718.9338813204547,6.636591733809205e-08,3.2713904356294094e-09 -729.5345658279341,5.8155165796715177e-08,2.8757107248463946e-09 -740.29155749376,5.0861171142103494e-08,2.523175434899672e-09 -751.2071610679418,4.4394251415406687e-08,2.2096686344159903e-09 -762.2837152840464,3.8672008385560014e-08,1.931399657601286e-09 -773.5235933602818,3.361889481977206e-08,1.684884394990981e-09 -784.9292035079682,2.916579213247217e-08,1.466927004325495e-09 -796.5029894475214,2.5249599598613357e-08,1.2746020917302364e-09 -808.2474309320297,2.1812836184677676e-08,1.105237408169323e-09 -820.1650442785514,1.8803255915580182e-08,9.563971007979293e-10 -832.2583829072596,1.6173477559644176e-08,8.258655534271536e-10 -844.5300378885242,1.3880629278471023e-08,7.116318448985413e-10 -856.9826384980585,1.1886008755278716e-08,6.118748487995391e-10 -869.6188527802672,1.0154759185502105e-08,5.249489926918523e-10 -882.4413881198863,8.65556138832333e-09,4.4937068992075774e-10 -895.4529918220513,7.360342178367588e-09,3.838054521678148e-10 -908.656451700936,6.24399902400163e-09,3.270556862424512e-10 -922.0545966770438,5.284140913271925e-09,2.7804917421263436e-10 -935.6502973833341,4.460845251120202e-09,2.3582823187814385e-10 -949.446466780267,3.7564305226321204e-09,1.9953953681597062e-10 -963.4460607799166,3.155244377015095e-09,1.684246137912417e-10 -977.6520788793048,2.6434667159918013e-09,1.4181096224151045e-10 -992.0675648030552,2.208927308408434e-09,1.1910380781350806e-10 -1006.6956071555244,1.8409374000419944e-09,9.97784575608444e-11 -1021.5393400825644,1.530134743706269e-09,8.337323639640413e-11 -1036.601943943028,1.2683414395447065e-09,6.948298072718536e-11 -1051.886645990172,1.0484339485162666e-09,5.775306387132993e-11 -1067.3967210631288,8.642246231131976e-10,4.7873926853424426e-11 -1083.1354922885544,7.103540878118596e-10,3.957608747799068e-11 -1099.1063317926205,5.821937971098027e-10,3.262560017318983e-11 -1115.3126614235296,4.757581006686162e-10,2.6819938956231112e-11 -1131.7579534846477,3.876251524537307e-10,2.1984275976220652e-11 -1148.445731478482,3.1486601321109e-10,1.7968128415512017e-11 -1165.379570861606,2.54981312516232e-10,1.4642347053010068e-11 -1182.5630998107154,2.058448573391127e-10,1.1896420487707e-11 +0.0,0.0225414565904688,0.004333535826663143 +0.01,0.0223443445099348,0.004267692187793066 +0.010147636193407446,0.022341471864793565,0.0042667365291869505 +0.010297452031375274,0.022338557906992185,0.004265767241661991 +0.010449479693346081,0.022335602058569715,0.004264784137902113 +0.010603751833847482,0.022332603733952548,0.00426378702822236 +0.01076030158950613,0.022329562339868173,0.004262775720544984 +0.010919162586165206,0.02232647727525817,0.004261750020375489 +0.011080368946107054,0.022323347931190774,0.004260709730778628 +0.011243955295382385,0.022320173690772962,0.004259654652354352 +0.011409956771247759,0.02231695392906179,0.004258584583213727 +0.011578409029712812,0.022313688012975546,0.004257499318954844 +0.011749348253198937,0.02231037530120402,0.004256398652638671 +0.011922811158311009,0.02230701514411873,0.004255282374764945 +0.012098835003723893,0.022303606883682225,0.00425415027324801 +0.012277457598185349,0.022300149853357248,0.004253002133392709 +0.012458717308637094,0.022296643378015416,0.004251837737870268 +0.012642653068455759,0.02229308677384532,0.004250656866694202 +0.012829304385815535,0.02228947934826048,0.004249459297196276 +0.01301871135217426,0.022285820399806526,0.004248244804002499 +0.013210914650884798,0.02228210921806851,0.004247013159009174 +0.013405955565933525,0.02227834508357746,0.004245764131359018 +0.013603875990807904,0.022274527267716813,0.004244497487417363 +0.013804718437494885,0.022270655032628484,0.004243212990748451 +0.014008526045612224,0.02226672763111871,0.004241910402091819 +0.014215342591674549,0.022262744306563546,0.0042405894793388025 +0.014425212498496305,0.022258704292814235,0.004239249977509175 +0.014638180844733454,0.022254606814102268,0.00423789164872792 +0.014854293374566077,0.022250451084944355,0.004236514242202166 +0.015073596507523922,0.02224623631004727,0.0042351175041982795 +0.015296137348456982,0.022241961684212427,0.0042337011780191345 +0.015521963697653346,0.022237626392240518,0.004232265003981614 +0.015751124061106365,0.022233229608835975,0.004230808719394274 +0.01598366766093338,0.02222877049851161,0.004229332058535301 +0.01621964444594837,0.022224248215492997,0.004227834752630633 +0.016459105102390573,0.022219661903622977,0.004226316529832435 +0.016702101064811573,0.022215010696266517,0.004224777115197774 +0.016948684527123104,0.022210293716215235,0.00422321623066764 +0.017198908453807917,0.02220551007559238,0.004221633595046273 +0.01745282659129625,0.02220065887575802,0.004220028923980813 +0.01771049347951018,0.022195739207214207,0.004218401929941311 +0.01797196446357841,0.022190750149510854,0.004216752322201136 +0.018237295705724067,0.022185690771151432,0.004215079806817727 +0.018506544197327973,0.02218056012949952,0.004213384086613818 +0.01877976777116999,0.022175357270685377,0.004211664861159067 +0.01905702511385113,0.02217008122951327,0.004209921826752136 +0.01933837577839904,0.02216473102936922,0.004208154676403292 +0.019623880197059598,0.02215930568212918,0.00420636309981749 +0.01991359969427737,0.02215380418806822,0.004204546783377976 +0.02020759649986765,0.022148225535769964,0.00420270541013047 +0.020505933762383056,0.022142568702036958,0.004200838659767912 +0.0208086755626774,0.02213683265180197,0.0041989462086158245 +0.021115886927669823,0.022131016338039853,0.004197027729618292 +0.021427633844312143,0.022125118701680734,0.004195082892324633 +0.021743983273762434,0.022119138671523673,0.004193111362876707 +0.022065003165767778,0.02211307516415186,0.004191112803997004 +0.022390762473259496,0.022106927083848697,0.004189086874977413 +0.02272133116716374,0.022100693322515116,0.00418703323166882 +0.02305678025143074,0.0220943727595881,0.00418495152647148 +0.02339718177828606,0.02208796426196071,0.0041828414083262405 +0.02374260886370688,0.022081466683903397,0.004180702522706619 +0.024093135703126836,0.0220748788669868,0.004178534511611808 +0.024448837587372714,0.02206819964000628,0.004176337013560588 +0.02480979091883637,0.022061427818907898,0.00417410966358623 +0.025176073227885534,0.022054562206716297,0.004171852093232389 +0.025547763189516758,0.022047601593464337,0.004169563930550047 +0.025924940640254267,0.022040544756124787,0.004167244800095521 +0.02630768659529838,0.022033390458543807,0.004164894322929599 +0.026696083265926974,0.022026137451376753,0.004162512116617812 +0.027090214077153937,0.02201878447202607,0.004160097795231898 +0.02749016368564833,0.022011330244581545,0.004157650969352518 +0.027896017997918004,0.022003773479762925,0.0041551712460731905 +0.028307864188761824,0.021996112874865085,0.0041526582290055845 +0.02872579071999421,0.021988347113705845,0.004150111518286147 +0.029149887359446097,0.02198047486657645,0.004147530710584103 +0.02958024520024654,0.021972494790194877,0.004144915399110931 +0.030016956680388868,0.021964405527662184,0.004142265173631277 +0.030460115602585748,0.021956205708421942,0.0041395796204754184 +0.030909817154417412,0.021947893948222635,0.004136858322553297 +0.03136615792877725,0.021939468849083738,0.004134100859370152 +0.03182923594461939,0.021930928999264812,0.00413130680704383 +0.03229915066801251,0.02192227297323864,0.004128475738323787 +0.0327760030335044,0.021913499331667637,0.004125607222611883 +0.03325989546580215,0.021904606621384305,0.0041227008259849245 +0.0337509319017722,0.021895593375375638,0.004119756111219125 +0.03424921781276536,0.02188645811277156,0.004116772637816436 +0.03475486022727128,0.021877199338837704,0.004113749962032838 +0.03526796775390751,0.02186781554497246,0.004110687636908643 +0.035788650604747854,0.021858305208708746,0.004107585212300873 +0.03631702061899528,0.021848666793720165,0.004104442234917713 +0.036853191287004095,0.021838898749832414,0.0041012582483551914 +0.03739727777465707,0.021828999513039238,0.004098032793136009 +0.03794939694810219,0.021818967505523913,0.0040947654067507 +0.03850966739885478,0.021808801135685833,0.004091455623701105 +0.03907820946927015,0.021798498798172576,0.004088102975546227 +0.039655145278392354,0.02178805887391775,0.004084706990950523 +0.04024059874818446,0.021777479730184526,0.004081267195734726 +0.0408346956301463,0.021766759720615227,0.004077783112929186 +0.041437563532324966,0.021755897185287,0.004074254262829847 +0.04204933194672413,0.021744890450773904,0.004070680163056891 +0.042670132277118175,0.021733737830215427,0.004067060328616126 +0.04330009786727676,0.02172243762339188,0.004063394271963125 +0.04393936402960622,0.021710988116806496,0.004059681503070265 +0.044588068074213734,0.021699387583774647,0.0040559215294966415 +0.04524634933840065,0.02168763428452034,0.004052113856460949 +0.04591434921659115,0.021675726466280236,0.00404825798691741 +0.046592211190702934,0.02166366236341513,0.0040443534216347745 +0.04728008086096605,0.02165144019752966,0.004040399659278469 +0.047978105977196976,0.021639058177599556,0.004036396196495949 +0.04868643647053421,0.021626514500107476,0.004032342528005335 +0.04940522448564252,0.0216138073491874,0.004028238146687363 +0.05013462441339257,0.02160093489677731,0.004024082543680709 +0.05087479292402313,0.021587895302781008,0.0040198752084807795 +0.05162588900079261,0.021574686715238975,0.0040156156290420165 +0.05238807397412787,0.021561307270508586,0.004011303291883715 +0.05316151155627666,0.021547755093453642,0.004006937682199539 +0.05394636787647212,0.021534028297643736,0.004002518283970655 +0.05474281151661612,0.021520124985563695,0.003998044580082624 +0.05555101354748957,0.021506043248832877,0.003993516052446109 +0.05637114756549725,0.021491781168435153,0.003988932182121407 +0.057203389729955215,0.021477336814959308,0.003984292449446902 +0.05804791880092853,0.02146270824885028,0.003979596334171487 +0.058904916177627914,0.021447893520671488,0.003974843315590972 +0.05977456593737288,0.021432890671378386,0.0039700328726885985 +0.06065705487513049,0.021417697732603522,0.003965164484279651 +0.061552572543637565,0.021402312726953303,0.003960237629160246 +0.0624613112941154,0.021386733668316615,0.003955251786260331 +0.06338346631758546,0.02137095856218577,0.003950206434800976 +0.06431923568679523,0.021354985405989593,0.003945101054455941 +0.06526882039876271,0.02133881218943931,0.0039399351255176305 +0.06623242441794946,0.02132243689488705,0.00393470812906745 +0.06721025472007074,0.021305857497697703,0.003929419547150564 +0.06820252133655234,0.021289071966633526,0.003924068862955178 +0.0692094373996442,0.021272078264252665,0.003918655560996322 +0.07023121918819963,0.021254874347321186,0.00391317912730417 +0.07126808617413061,0.02123745816723887,0.003907639049616955 +0.07232026106954885,0.021219827670479204,0.0039020348175784927 +0.07338796987460298,0.021201980799043885,0.003896365922940348 +0.07447144192602165,0.021183915490931297,0.003890631859768644 +0.07557090994637383,0.021165629680620215,0.0038848321246555636 +0.07668661009405578,0.02114712129956801,0.0038789662169355717 +0.07781878201401651,0.021128388276724176,0.0038730336389062986 +0.07896766888923183,0.021109428539058905,0.0038670338960542045 +0.08013351749293841,0.021090240012107294,0.003860966497284931 +0.08131657824163904,0.021070820620528983,0.003854830955158412 +0.08251710524889051,0.02105116828868359,0.0038486267861287016 +0.08373535637988529,0.021031280941222162,0.0038423535107885414 +0.08497159330683954,0.02101115650369462,0.0038360106541186346 +0.08622608156519827,0.02099079290317335,0.003829597745741637 +0.08749909061067085,0.02097018806889325,0.0038231143201808023 +0.08879089387710812,0.02094933993290821,0.0038165599171233423 +0.09010176883523419,0.020928246430764245,0.0038099340816883627 +0.09143199705224533,0.02090690550218901,0.003803236364699425 +0.0927818642522888,0.020885315091798556,0.003796466322961661 +0.09415166037783423,0.020863473149820545,0.0037896235195433946 +0.09554167965195169,0.020841377632834612,0.0037827075240622144 +0.09695222064150846,0.020819026504529662,0.003775717912975472 +0.09838358632129957,0.020796417736478116,0.0037686542698750778 +0.09983608413912452,0.020773549308927396,0.0037615161857865917 +0.1013100260818251,0.020750419211608216,0.0037543032594724857 +0.10280572874229811,0.02072702544456015,0.003747015097739495 +0.10432351338749725,0.020703366018974247,0.0037396513157499935 +0.10586370602743932,0.020679438958052358,0.0037322115373372576 +0.10742663748522892,0.020655242297884013,0.003724695395324535 +0.109012643468117,0.020630774088339358,0.003717102531847773 +0.11062206463960864,0.020606032393979696,0.0037094325986819143 +0.11225524669263505,0.020581015294984132,0.0037016852575706164 +0.11391254042380648,0.020555720888093074,0.0036938601805592084 +0.11559430180876074,0.020530147287567864,0.0036859570503307904 +0.11730089207862449,0.020504292626166824,0.0036779755605452938 +0.11903267779760304,0.02047815505613711,0.003669915416181319 +0.12079003094171635,0.020451732750222565,0.0036617763338805463 +0.1225733289786966,0.020425023902686697,0.00365355804229461 +0.124382954949066,0.020398026730351244,0.0036452602824341165 +0.126219297548411,0.020370739473649393,0.0036368828080196943 +0.1280827512108719,0.02034316039769362,0.003628425385834775 +0.1299737161938645,0.020315287793357787,0.0036198877960799264 +0.13189259866405273,0.02028711997837286,0.003611269832728437 +0.1338398107845904,0.020258655298436075,0.0036025713038829337 +0.13581577080365137,0.020229892128332937,0.003593792032132725 +0.1378209031442663,0.020200828873071536,0.003584931854911612 +0.13985563849548593,0.020171463969028785,0.003575990624855841 +0.14192041390489007,0.02014179588510765,0.0035669682101619297 +0.14401567287246278,0.02011182312390538,0.00355786449494397 +0.146141865445853,0.020081544222891243,0.0035486793795901483 +0.14829944831704195,0.020050957755593995,0.003539412781118086 +0.1504888849204372,0.020020062332797392,0.0035300646335286305 +0.15271064553241562,0.01998885660374393,0.0035206348881577643 +0.15496520737233557,0.019957339257345146,0.003511123514026161 +0.15725305470504036,0.019925509023398173,0.0035015304981860763 +0.15957467894487484,0.01989336467380733,0.0034918558460650525 +0.1619305787612385,0.01986090502381009,0.003482099581806095 +0.1643212601856959,0.01982812893320602,0.0034722617486037874 +0.16674723672066893,0.019795035307588034,0.0034623424090359403 +0.169209029449734,0.01976162309957462,0.003452341645390272 +0.1717071671495467,0.019727891310041896,0.0034422595599856156 +0.1742421864034202,0.019693838989354607,0.0034320962754871617 +0.17681463171657935,0.019659465238594277,0.003421851935215212 +0.17942505563311698,0.01962476921078375,0.0034115267034469125 +0.18207401885467622,0.01958975011210641,0.0034011207657103906 +0.1847620903608862,0.019554407203118893,0.0033906343290707715 +0.18748984753157458,0.019518739799955637,0.003380067622407466 +0.19025787627078505,0.019482747275524126,0.0033694208966821523 +0.1930667711326254,0.019446429060688622,0.0033586944251968683 +0.19591713544897413,0.019409784645441745,0.003347888503841558 +0.19880958145907188,0.01937281358006111,0.0033370034513304915 +0.20174473044102645,0.019335515476250273,0.003326039609426895 +0.2047232128452589,0.019297890008261664,0.003314997343155167 +0.2077456684299205,0.019259936913999846,0.0033038770409999983 +0.21081274639830838,0.01922165599610334,0.003292679115091758 +0.21392510553831004,0.019183047123003033,0.00328140400137749 +0.21708341436390624,0.019144110229954873,0.003270052159776756 +0.2202883512587641,0.019104845320045655,0.003258624074321776 +0.2235406046219487,0.019065252465168887,0.0032471202532810836 +0.22684087301578715,0.019025331806969453,0.0032355412292660157 +0.2301898653159144,0.01898508355775413,0.0032238875593193933 +0.2335883008635358,0.01894450800136683,0.0032121598249856545 +0.23703690961993634,0.018903605494025127,0.0032003586323617753 +0.24053643232327168,0.01886237646511689,0.0031884846121282826 +0.24408762064767323,0.018820821417953864,0.003176538419559689 +0.24769123736470353,0.018778940930480825,0.003164520734513634 +0.251348056507194,0.018736735655936792,0.003152432261398134 +0.25505886353550233,0.018694206323467154,0.0031402737291162165 +0.25882445550622335,0.018651353738683343,0.003128045890987334 +0.26264564124339274,0.01860817878416839,0.0031157495246449058 +0.2665232415122159,0.018564682419925208,0.0031033854319093956 +0.2704580891953636,0.018520865683765965,0.0030909544386363026 +0.2744510294718692,0.018476729691639684,0.003078457394538556 +0.2785029199986674,0.018432275637895637,0.0030658951729826277 +0.2826146310948135,0.018387504795480132,0.0030532686707580594 +0.2867870459284223,0.018342418516064683,0.0030405788078196627 +0.2910210607063663,0.018297018230102772,0.0030278265270021584 +0.2953175848667748,0.018251305446812867,0.003015012793706645 +0.29967754127437585,0.01820528175408568,0.0030021385955586676 +0.304101866418721,0.01815894881831326,0.002989204942037404 +0.30859151061533713,0.01811230838413744,0.0029762128640757647 +0.31314743820984725,0.01806536227411606,0.002963163413631109 +0.3177706277851068,0.018018112388304253,0.0029500576632263565 +0.3224620723713955,0.017970560703749233,0.0029368967054613877 +0.3272227796597146,0.01792270927389623,0.002923681652494585 +0.33205377221823096,0.017874560227904197,0.0029104136354945066 +0.3369560877119192,0.0178261157698691,0.0028970938040617064 +0.3419307791254445,0.017777378177953253,0.0028837233256207772 +0.3469789149893369,0.017728349803419443,0.0028703033847828144 +0.35210157960950406,0.01767903306956805,0.0028568351826784282 +0.35729987330013363,0.01762943047057597,0.002843319936261722 +0.36257491262003305,0.017579544570236617,0.002829758877585527 +0.36792783061245915,0.017529378000599203,0.002816153253048364 +0.3733597770484874,0.017478933460507502,0.0028025043226136692 +0.3788719186739765,0.017428213714036543,0.0027888133590019044 +0.38446543946017664,0.017377221588827433,0.002775081646856223 +0.3901415408580389,0.01732595997431975,0.00276131048188249 +0.3959014420562786,0.017274431819881416,0.002747501169964553 +0.40174638024324927,0.0172226401328363,0.0027336550262556532 +0.4076776108726826,0.017170587976390265,0.0027197733742471085 +0.41369640793335133,0.017118278467455585,0.002705857544815338 +0.41980406422271266,0.017065714774375084,0.002691908875248523 +0.4260018916245943,0.017012900114547286,0.002677928708254138 +0.4322912213909769,0.01695983775195326,0.0026639183909488696 +0.4386734044279388,0.0169065309945876,0.0026498792738323287 +0.4451498115858216,0.01685298319179504,0.002635812709746202 +0.4517218339536788,0.016799197731514805,0.0026217200528204903 +0.45839088315807397,0.01674517803743573,0.002607602657408595 +0.4651583916662875,0.016690927566064447,0.002593461877013127 +0.4720258130940017,0.016636449803709895,0.0025792990632042883 +0.478994622517527,0.016581748263387958,0.002565115564532912 +0.4860663167906394,0.016526826481649184,0.002550912725440127 +0.4932424148660941,0.016471688015334735,0.002536691885165894 +0.500524458121887,0.016416336438263814,0.0025224543766584886 +0.507914010692331,0.016360775337858232,0.0025082015254872746 +0.5154126598040234,0.01630500831170849,0.002493934648761032 +0.5230220161167707,0.016249038964087276,0.0024796550540541764 +0.5307437140695477,0.016192870902415595,0.0024653640383432707 +0.5385794122315635,0.016136507733687997,0.002451062886956214 +0.5465307936585122,0.01607995306086278,0.0024367528725365716 +0.5545995662540815,0.0160232104792243,0.002422435254025445 +0.5627874631367991,0.015966283572723897,0.0024081112756633503 +0.571096243012294,0.015909175910307112,0.0023937821660145386 +0.5795276905510569,0.015851891042234414,0.0023794491370161745 +0.5880836167717735,0.015794432496403384,0.002365113383054771 +0.5967658594303206,0.015736803774680664,0.0023507760800722055 +0.6055762834145021,0.015679008349251542,0.002336438384703685 +0.6145167811446166,0.015621049658996387,0.0023221014334498394 +0.6235892729799353,0.015562931105902268,0.0023077663418851757 +0.6327957076311831,0.015504656051518854,0.0022934342039049446 +0.6421380625791069,0.015446227813468221,0.002279106091012475 +0.6516183444992281,0.01538764966201715,0.0022647830516488296 +0.6612385896928608,0.015328924816722362,0.0022504661105665984 +0.6710008645244973,0.015270056443157485,0.002236156268249497 +0.6809072658656474,0.015211047649731906,0.0022218545003792867 +0.690959921545235,0.015151901484611176,0.0022075617573514028 +0.7011609908066395,0.015092620932748746,0.0021932789638405754 +0.7115126647714881,0.015033208913038729,0.002179007018417413 +0.7220171669102935,0.01497366827559954,0.0021647467932170024 +0.7326767535200398,0.01491400179919809,0.0021504991336601157 +0.7434937142088223,0.01485421218882389,0.002136264858227671 +0.7544703723876376,0.014794302073422716,0.002122044758288793 +0.7656090857694389,0.014734274003798935,0.0021078395979826164 +0.7769122468755543,0.01467413045069544,0.002093650114153887 +0.7883822835495875,0.014613873803060066,0.0020794770163421006 +0.8000216594789005,0.014553506366506614,0.002065320986823818 +0.8118328747237982,0.014493030361979017,0.002051182680707562 +0.8238184662545227,0.014432447924625768,0.0020370627260805465 +0.8359810084961804,0.014371761102892388,0.002022961724206249 +0.8483231138817098,0.014310971857838195,0.0020088802497717608 +0.8608474334130148,0.014250082062684086,0.001994818851183566 +0.8735566572303816,0.014189093502596698,0.0019807780509103574 +0.8864535151903041,0.014128007874714198,0.00196675834587124 +0.8995407774518387,0.014066826788418106,0.0019527602078676432 +0.9128212550716155,0.014005551765854942,0.0019387840840570675 +0.9262978006076336,0.01394418424271085,0.0019248303974667056 +0.9399733087319735,0.013882725569241352,0.0019108995475449187 +0.9538507168525525,0.013821177011557956,0.0018969919107484313 +0.9679330057440604,0.013759539753172297,0.0018831078411630632 +0.9822232001882084,0.013697814896797703,0.0018692476711558328 +0.996724369623435,0.013636003466407214,0.001855411712056133 +1.011439628804199,0.013574106409546432,0.0018416002548638287 +1.0263721384700082,0.01351212459989808,0.0018278135709820142 +1.0415251060243254,0.01345005884009507,0.001814051912972283 +1.056901786223498,0.01338790986477737,0.0018003155153304023 +1.0725054818758548,0.013325678343887015,0.0017866045952803376 +1.0883395445511317,0.013263364886195181,0.0017729193535847094 +1.1044073753003638,0.013200970043053824,0.0017592599753698003 +1.1207124253864091,0.013138494312363717,0.0017456266309634435 +1.1372581970252567,0.013075938142749788,0.0017320194767441689 +1.1540482441382791,0.013013301937933682,0.0017184386560001599 +1.1710861731155913,0.012950586061292884,0.0017048842997967717 +1.1883756435906792,0.01288779084059447,0.0016913565278514125 +1.2059203692264653,0.012824916572891362,0.00167785544941487 +1.223724118512975,0.01276196352956761,0.0016643811641582095 +1.2417907155767887,0.012698931961518906,0.0016509337630646415 +1.2601240410024352,0.012635822104453848,0.0016375133293258274 +1.2787280326659158,0.01257263418430062,0.001624119939242265 +1.2976066865805347,0.012509368422703648,0.0016107536631275532 +1.3167640577552144,0.012446025042593813,0.001597414566216438 +1.3362042610654865,0.012382604273815781,0.0015841027095766659 +1.3559314721373397,0.012319106358795613,0.0015708181510247334 +1.3759499282441108,0.012255531558231274,0.001557560946045765 +1.3962639292166314,0.012191880156788935,0.0015443311487177145 +1.4168778383667981,0.012128152468787411,0.0015311288126401998 +1.4377960834247825,0.012064348843853403,0.001517953991868222 +1.4590231574900794,0.012000469672530073,0.0015048067418510697 +1.4805636199965941,0.0119365153918217,0.0014916871203765863 +1.5024220976919787,0.011872486490657376,0.0014785951885209815 +1.5246032856314273,0.011808383515257063,0.001465531011604261 +1.5471119481861382,0.011744207074383702,0.0014524946601511925 +1.569952920066676,0.01167995784446551,0.0014394862108576315 +1.5931311073614307,0.01161563657457323,0.0014265057475618527 +1.6166514885904137,0.011551244091237707,0.0014135533622203576 +1.6405191157746106,0.011486781303093828,0.0014006291558874165 +1.6647391155211217,0.011422249205337897,0.0013877332396974088 +1.6893166901243233,0.01135764888398576,0.001374865735848784 +1.7142571186832871,0.011292981519920819,0.0013620267785882526 +1.7395657582356887,0.01122824839272108,0.0013492165151935576 +1.765248044908474,0.011163450884256063,0.001336435106952913 +1.7913094950854962,0.01109859048204505,0.0013236827301390576 +1.8177557065924,0.01103366878236972,0.0013109595769754746 +1.8445923598989962,0.010968687493134446,0.0012982658565922612 +1.8718252193393905,0.010903648436469685,0.0012856017959688166 +1.899460134350123,0.010838553551074305,0.0012729676408603514 +1.9275030407265876,0.010773404894294071,0.0012603636567050675 +1.9559599618980046,0.010708204643934686,0.0012477901295086565 +1.984837010221204,0.010642955099808732,0.0012352473667026826 +2.0141403882935314,0.010577658685017163,0.0012227356979732738 +2.0438763902851163,0.01051231794696674,0.001210255476056511 +2.074051403290821,0.010446935558126308,0.0011978070774968487 +2.1046719087021435,0.010381514316525084,0.0011853909033648854 +2.1357444835993804,0.010316057145997842,0.001173007379930878 +2.1672758021643364,0.01025056709618199,0.0011606569592903936 +2.1992726371139,0.01018504734227289,0.0011483401199386622 +2.231741861154765,0.010119501184544221,0.0011360573672902735 +2.2646904484596586,0.010053932047640666,0.0011238092341410695 +2.298125476165337,0.009988343479651359,0.0011115962810692617 +2.3320541258927094,0.009922739150972151,0.0010994190967730444 +2.366483685289402,0.009857122852966025,0.0010872782983422358 +2.401421549595097,0.00979149849643059,0.001075174531461744 +2.43687522322998,0.009725870109882266,0.0010631084705449967 +2.472852321406642,0.009660241837666592,0.0010510808187957521 +2.509360571765766,0.009594617937904476,0.001039092308197091 +2.546407816035989,0.009529002780283758,0.00102714369942669 +2.5840020117182405,0.009463400843705665,0.0010152357816978971 +2.6221512337949666,0.009397816713795493,0.0010033693725264056 +2.6608636764645794,0.009332255080286463,0.000991545317422761 +2.7001476549015164,0.009266720734285356,0.0009797644895112219 +2.7400116070422866,0.009201218565428486,0.0009680277890758734 +2.7804640953978805,0.00913575355893563,0.0009563361430352006 +2.8215138088929455,0.00907033079256932,0.0009446905043466512 +2.863169564732095,0.009004955433506568,0.0009330918513430015 +2.905440310293805,0.008939632735128945,0.0009215411870025786 +2.948335125052237,0.008874368033737015,0.0009100395381557015 +2.991863222527455,0.008809166745194141,0.0008985879546298283 +3.0360339522644235,0.008744034361504094,0.0008871875083361513 +3.0808568018412315,0.008678976447326441,0.0008758392923004778 +3.126341398906959,0.008613998636432989,0.0008645444196414116 +3.1724975132496356,0.00854910662810797,0.000853304022498871 +3.219335058894712,0.008484306183494258,0.000842119250916102 +3.266864096234547,0.008419603121886972,0.0008309912716783179 +3.315094834189299,0.008355003316975989,0.0008199212671111229 +3.3640376323997385,0.008290512693037691,0.0008089104338418451 +3.4137030034524276,0.008226137221076518,0.0007979599815268162 +3.4641016151377557,0.008161882914916048,0.0007870711315475968 +3.5152442927413077,0.008097755827239374,0.0007762451156790127 +3.5671420213690688,0.008033762045578052,0.0007654831747317452 +3.619805948306936,0.007969907688248979,0.0007547865571721223 +3.6732473854151024,0.007906198900238021,0.0007441565177215398 +3.727477811557756,0.007842641849029632,0.0007335943159378696 +3.7825088750686664,0.007779242720381312,0.0007231012147809753 +3.8383523962531676,0.007716007714042024,0.0007126784791643466 +3.8950203699270842,0.007652943039413606,0.0007023273744946738 +3.9525249679931336,0.007590054911154614,0.0006920491652010394 +4.0108785420553765,0.00752734954472593,0.0006818451132552463 +4.070093626072243,0.007464833151878116,0.0006717164766846814 +4.1301829390487645,0.007402511936080313,0.0006616645080789569 +4.191159387768518,0.007340392087891265,0.0006516904530914914 +4.25303606956592,0.007278479780273177,0.0006417955489370794 +4.315826275139448,0.007216781163849498,0.0006319810228864225 +4.379543491406389,0.007155302362108282,0.000622248090758538 +4.444201404399749,0.007094049466553111,0.0006125979554119291 +4.509813902207909,0.007033028531804041,0.0006030318052353555 +4.576395077957709,0.006972245570651527,0.0005935508126390851 +4.643959232841533,0.0069117065490667305,0.0005841561325474842 +4.7125208791891415,0.00685141738117203,0.000574848900893856 +4.782094743584802,0.006791383924176121,0.0005656302331185164 +4.852695770030462,0.006731611973278541,0.0005565012226711166 +4.924339123155634,0.006672107256548693,0.0005474629395183689 +4.997040191474639,0.006612875429785232,0.0005385164286583713 +5.070814590691972,0.006553922071361709,0.000529662708642885 +5.145678167056446,0.0064952526770651,0.0005209027701090158 +5.221647000764848,0.006436872654933954,0.0005122375743218837 +5.298737409415881,0.0063787873201033764,0.0005036680517299923 +5.37696595151506,0.006321001889664379,0.0004951951005351657 +5.456349430031372,0.006263521477545419,0.0004868195852790321 +5.536904896006444,0.006206351089424125,0.00047854233544819785 +5.6186496522169875,0.006149495617677652,0.00047036414410037185 +5.701601256891326,0.0060929598363801294,0.00046228576651384366 +5.785777527480786,0.0060367483963560216,0.00045430791886283964 +5.871196544486747,0.005980865820298215,0.0004464312769214052 +5.9578766553442435,0.005925316497960023,0.0004386564747985636 +6.045836478362854,0.005870104681430204,0.00043098410370761116 +6.135094906725791,0.0058152344805003486,0.00042341471077249663 +6.225671112548031,0.0057607098581339425,0.0004159487978743021 +6.31758455099436,0.005706534626046637,0.0004085868205409168 +6.410854964458209,0.00565271244040714,0.0004013291868830474 +6.505502386802199,0.005599246797668239,0.0003941762565797342 +6.601547147661251,0.0055461410305375405,0.000387128339916585 +6.6990098768093,0.005493398304097328,0.0003801856968799213 +6.797911508590401,0.005441021612083104,0.0003733485363100539 +6.898273286415296,0.005389013773330219,0.00036661701511685966 +7.000116767324358,0.005337377428397975,0.0003599912375608016 +7.103463826617898,0.005286115036380508,0.00035347125460249203 +7.208336662554833,0.0052352288719136305,0.0003470570633238094 +7.3147578011207255,0.005184721022386787,0.0003407486064235196 +7.422750100866221,0.005134593385369039,0.00033454577179023486 +7.532336757816883,0.005084847666257898,0.000328448392155443 +7.643541310455589,0.005035485376159657,0.0003224562448292011 +7.756387644778411,0.004986507830009649,0.00031656905152095596 +7.870899999425174,0.004937916144940611,0.00031078647824778113 +7.987102970885753,0.004889711238907154,0.00030510813533216036 +8.105021518783241,0.004841893829573976,0.0002995335774912545 +8.224680971235099,0.0047944644334751325,0.0002940623040193856 +8.346107030293489,0.004747423365451419,0.00028869375906526477 +8.469325777465853,0.004700770738372402,0.000283427332005255 +8.594363679317114,0.004654506463149286,0.00027826235791371894 +8.721247593154473,0.004608630249044323,0.00027319811813125434 +8.85000477279619,0.004563141604281869,0.00026823384093134663 +8.980662874425525,0.004518039836965779,0.00026336870228569053 +9.1132499625311,0.004473324056307045,0.00025860182672814846 +9.247794515934963,0.00442899317416507,0.000253932288317007 +9.384325433909662,0.0043850459069051766,0.0002493591116948873 +9.522872042385572,0.004341480777574217,0.00024488127324535095 +9.663464100249971,0.004298296118395297,0.00024049770234490383 +9.806131805739012,0.004255490073581974,0.00023620728270878666 +9.95090580292411,0.004213060602471018,0.00023200885382858815 +10.097817188294087,0.0041710054829722995,0.00022790121249938156 +10.246897517434489,0.004129322315333059,0.00022388311443374029 +10.398178811805511,0.004088008526213004,0.00021995327595964416 +10.551693565620015,0.004047061373065489,0.00021611037579894027 +10.707474752823012,0.004006477948819082,0.00021235305692268372 +10.865555834174323,0.003966255186852528,0.00020867992847934514 +11.02597076443568,0.003926389866255288,0.0002050895677915392 +11.188753999663986,0.003886878617364366,0.0002015805224166126 +11.353940504612257,0.0038477179275673112,0.00019815131226610775 +11.521565760239813,0.0038089041473599217,0.00019480043177883116 +11.691665771333351,0.003770433496646236,0.00019152635214196557 +11.864277074240528,0.003732302071267187,0.0001883275235543999 +12.03943674471775,0.0036945058497433064,0.00018520237752620873 +12.217182405893736,0.003657040700215845,0.00018214932920798522 +12.397552236350792,0.003619902387569622,0.00017916677974353116 +12.580584978325271,0.003583086580720154,0.00017625311863923957 +12.766319946029155,0.0035465888600466323,0.00017340672614335386 +12.954797034094483,0.0035104047249515974,0.00017062597562817256 +13.146056726142461,0.0034745296015275345,0.0001679092359681921 +13.340140103479062,0.0034389588503099225,0.00016525487390711807 +13.537088853919041,0.003403687774095793,0.0001626612564066704 +13.736945280740137,0.0033687116258066074,0.00016012675297012233 +13.939752311769622,0.0033340256163737394,0.00015764973793356773 +14.145553508604852,0.003299624922624911,0.00015522859271801062 +14.354393075970028,0.00326550469514978,0.00015286170803549757 +14.566315871211069,0.003231660066122953,0.00015054748604267953 +14.781367413930674,0.0031980861570630086,0.000148284342435404 +14.999593895765633,0.0031647780865062805,0.0001460707084781667 +15.221042190308488,0.0031317309775747916,0.00014390503296254445 +15.445759863175615,0.00309893996541817,0.00014178578408903064 +15.67379518222409,0.003066400204510157,0.00013971145126704158 +15.905197127919243,0.0030341068757811073,0.00013768054682824457 +16.140015403855344,0.003002055193568838,0.00013569160764875145 +16.378300447431617,0.0029702404123711696,0.00013374319667615924 +16.620103440685845,0.0029386578333846776,0.00013183390435786887 +16.86547632128793,0.00290730281081537,0.00012996234996758842 +17.11447179369578,0.0028761707579483434,0.00012812718282741926 +17.367143340475817,0.002845257152964751,0.00012632708342342593 +17.623545233790747,0.0028145575444959783,0.00012456076441310883 +17.883732547056827,0.00278406755690624,0.00012282697152371942 +18.147761166773257,0.0027537828952964817,0.00012112448434088318 +18.415687804526243,0.002723699350223852,0.0001194521169875197 +18.687570009170262,0.0026938128021326653,0.00011780871869356945 +18.963466179189165,0.002664119225494241,0.00011619317425754598 +19.243435575239797,0.002634614692654578,0.00011460440440143357 +19.5275383328808,0.0026052953773902546,0.0001130413660209314 +19.815835475489248,0.0025761575581744974,0.00011150305233350936 +20.108388927368193,0.002547197621156626,0.00010998849292718096 +20.405261527047497,0.0025184120628595655,0.00010849675371331518 +20.70651704078117,0.002489797492601243,0.00010702693678719269 +21.0122201762439,0.0024613506346469922,0.00010557818020036902 +21.322436596429878,0.0024330683301010602,0.00010414965764922705 +21.637232933756728,0.002404947538546369,0.00010274057808438735 +21.956676804377757,0.002376985339442562,0.00010135018524589216 +22.280836822705346,0.002349178933293045,9.997775712929114e-05 +22.609782616149012,0.0023215256425924984,9.862260538792156e-05 +22.943584840070816,0.002294022912566758,9.728407467681432e-05 +23.2823151929617,0.002266668311717381,9.596154194373785e-05 +23.62604643184182,0.0022394595321835456,9.465441567294946e-05 +23.974852387888287,0.0022123943899339774,9.336213508722952e-05 +24.32880798229361,0.002185470824801672,9.208416931374802e-05 +24.687989242358288,0.002158686900374109,9.082001651924906e-05 +25.052473317820862,0.002132040803751344,8.956920301993418e-05 +25.422338497429326,0.002105530845184116,8.833128237129698e-05 +25.79766422575693,0.002079155457603585,8.71058344429893e-05 +26.178531120266346,0.0020529131960538875,8.589246448361061e-05 +26.565020988625793,0.0020268027370378746,8.469080218008568e-05 +26.957216846280755,0.002000822877785876,8.350050071605426e-05 +27.35520293428515,0.0019749725354563587,8.232123583342934e-05 +27.759064737395782,0.0019492507462766004,8.115270490099727e-05 +28.16888900243378,0.0019236566646305168,7.999462599363705e-05 +28.584763756917397,0.0018981895620997838,7.884673698542464e-05 +29.006778327969634,0.0018728488264634763,7.770879465957364e-05 +29.435023361505138,0.001847633960660317,7.658057383784096e-05 +29.869590841700322,0.0018225445817166527,7.546186653170119e-05 +30.310574110750974,0.001797580419642183,7.435248111727197e-05 +30.758067888921527,0.0017727413162944663,7.325224153565356e-05 +31.212168294890343,0.001748027224212174,7.216098652003278e-05 +31.67297286639539,0.0017234382054161178,7.107856885059826e-05 +32.14058058118459,0.0016989744301760695,7.000485463802329e-05 +32.61509187827572,0.0016746361757405545,6.893972263599069e-05 +33.09660867952999,0.001650423825025912,6.788306358297452e-05 +33.58523441154415,0.0016263378652601676,6.683477957324296e-05 +34.08107402786587,0.00160237888657655,6.57947834568198e-05 +34.584234031537015,0.0015785475805508591,6.476299826793206e-05 +35.094822497969844,0.0015548447386763695,6.373935668127957e-05 +35.61294909816091,0.001531271250769482,6.27238004952955e-05 +36.138725122247465,0.0015078281032990277,6.171628014141572e-05 +36.67226350341213,0.0014845163776318066,6.071675421824694e-05 +37.213678842139984,0.0014613372481868628,5.972518904941843e-05 +37.763087430834055,0.0014382919804908842,5.8741558263811514e-05 +38.32060727879415,0.0014153819291271687,5.776584239679697e-05 +38.88635813756443,0.0013926085355707813,5.679802851105895e-05 +39.460461526655294,0.0013699733259026933,5.5838109835556926e-05 +40.04304075964497,0.0013474779083961063,5.488608542116147e-05 +40.634220970666284,0.001325123970968528,5.3941959811504856e-05 +41.2341291412849,0.001302913278493706,5.3005742727602984e-05 +41.84289412777393,0.0012808476699681286,5.2077448764840226e-05 +42.46064668879146,0.001258929055527441,5.115709710094851e-05 +43.087519513466624,0.001237159413308898,5.0244711213670634e-05 +43.723647249900345,0.0012155407861567553,4.9340318606859827e-05 +44.369166534086865,0.0011940752781683603,4.844395054384175e-05 +45.024216019262276,0.0011727650510796508,4.7555641786944574e-05 +45.688936405686114,0.0011516123204896559,4.6675430342188625e-05 +46.36347047086315,0.0011306193519246218,4.580335720821631e-05 +47.04796310021082,0.0011097884567433961,4.493946612863819e-05 +47.74256131817973,0.0010891219878866921,4.408380334706447e-05 +48.44741431983349,0.0010686223354739294,4.32364173641891e-05 +49.16267350289485,0.0010482919222523424,4.239735869639027e-05 +49.888492500264896,0.0010281331989041046,4.156667963540635e-05 +50.62502721302239,0.0010081486392182202,4.074443400874162e-05 +51.372435843910345,0.0009883407351348997,3.993067694054709e-05 +52.13087893131666,0.0009687119916711428,3.912546461281198e-05 +52.90051938375706,0.0009492649217371103,3.8328854026784746e-05 +53.68152251486652,0.0009300020408538095,3.754090276462649e-05 +54.474056078907616,0.000910925861783405,3.676166875137357e-05 +55.27829030680298,0.0008920388890842585,3.5991210017359895e-05 +56.094397942699786,0.0008733436136035167,3.52295844613152e-05 +56.92255428107405,0.0008548425069207234,3.4476849614416506e-05 +57.76293720438276,0.00083653801575651,3.373306240562573e-05 +58.61572722127159,0.0008184325563609509,3.299827892869662e-05 +59.48110750534737,0.000800528508896581,3.2272554211276276e-05 +60.35926393452222,0.0007828282118314908,3.155594198656727e-05 +61.25038513093903,0.0007653339563581487,3.084849446804594e-05 +62.154662501486214,0.0007480479808538593,3.0150262127760315e-05 +63.07229027891061,0.0007309724653988692,2.946129347875148e-05 +64.00346556353739,0.0007141095263682022,2.8781634862156953e-05 +64.94838836560596,0.0006974612111132784,2.8111330239564755e-05 +65.90726164823062,0.0006810294927492782,2.7450420991191147e-05 +66.88029137099595,0.0006648162650640064,2.6798945720453585e-05 +67.86768653419541,0.0006488233375638103,2.6156940065506204e-05 +68.86965922372325,0.0006330524306717322,2.552443651829404e-05 +69.88642465662909,0.0006175051710927069,2.4901464251667516e-05 +70.9182012273452,0.000602183087360155,2.4288048955080812e-05 +71.96521055459603,0.0005870876055777784,2.3684212679374504e-05 +73.0276775290007,0.0005722200453697942,2.308997369111693e-05 +74.1058303613775,0.0005575816160522003,2.250534633694982e-05 +75.19990063176267,0.000543173413036924,2.193034091835003e-05 +76.31012333915183,0.0005289964144800327,2.136496357718603e-05 +77.43673695197633,0.0005150514781843004,2.0809216192408404e-05 +78.57998345932468,0.000501339338765659,2.0263096288175396e-05 +79.74010842292014,0.00048786060509213233,1.972659695367215e-05 +80.91736102986584,0.0004746157580029779,1.9199706774840178e-05 +82.11199414616837,0.0004616051483147962,1.868240977818892e-05 +83.32426437105194,0.0004488289951204137,1.8174685386816172e-05 +84.55443209207371,0.00043628738438536527,1.7676508388719314e-05 +85.80276154105391,0.0004239802678457746,1.7187848917431437e-05 +87.06952085083071,0.0004119074622104565,1.670867244497274e-05 +88.35498211285339,0.00040006864866901087,1.6238939787059292e-05 +89.65942143562586,0.00038846337270666807,1.57786071204671e-05 +90.98311900401282,0.0003770910442256261,1.5327626012404133e-05 +92.32635913942174,0.00036595093797159555,1.4885943461698771e-05 +93.68943036087312,0.000355042194263267,1.4453501951570592e-05 +95.07262544697225,0.00034436382002142396,1.4030239513707703e-05 +96.47624149879653,0.0003339146900934329,1.3616089803334528e-05 +97.9005800037105,0.0003236935488679173,1.3210982184916361e-05 +99.3459469001234,0.00031369901217346305,1.281484182810985e-05 +100.81265264320263,0.0003039295694543192,1.2427589813534388e-05 +102.30101227155758,0.0002943835862151831,1.2049143247907406e-05 +103.81134547490768,0.0002850593067263258,1.167941538805645e-05 +105.34397666274975,0.0002759548569795147,1.131831577329329e-05 +106.89923503403887,0.0002670682478844346,1.096575036561085e-05 +108.4774546478982,0.0002583973786945962,1.0621621697140846e-05 +110.07897449537265,0.0002499400406510476,1.0285829024290798e-05 +111.70413857224207,0.0002416939208315869,9.958268487962003e-06 +113.35329595290844,0.00023365660619260463,9.638833279236129e-06 +115.02680086537593,0.00022582558779014325,9.327413809906162e-06 +116.72501276733597,0.00021819826516632625,9.02389788722025e-06 +118.44829642337646,0.0002107719508868581,8.728170892200065e-06 +120.19702198333087,0.0002035438752149544,8.44011596089328e-06 +121.97156506178386,0.00019651119090674963,8.159614167919522e-06 +123.7723068187509,0.00018967097811297879,7.886544711671966e-06 +125.59963404154878,0.00018302024937153605,7.6207851005422736e-06 +127.45393922787503,0.00017655595467537587,7.362211339544447e-06 +129.33562067011377,0.00017027498660013925,7.110698116724199e-06 +131.24508254088624,0.00016417418547586752,6.866118988753184e-06 +133.1827349798645,0.00015825034458719208,6.628346565123271e-06 +135.14899418186647,0.00015250021538648387,6.397252690373572e-06 +137.14428248625205,0.00014692051270458005,6.172708623802956e-06 +139.1690284676386,0.0001415079199439126,5.9545852161427135e-06 +141.22366702795605,0.00013625909423910557,5.742753082687741e-06 +143.30863948986115,0.00013117067157041495,5.537082772410212e-06 +145.42439369152947,0.00012623927181574325,5.337444932606957e-06 +147.57138408284976,0.000121461503727347,5.143710468659744e-06 +149.75007182303577,0.00011683396981983387,4.955750698518394e-06 +151.96092487968022,0.00011235327115651857,4.773437501546741e-06 +154.2044181292713,0.0001080160120217603,4.596643461403621e-06 +156.48103345919287,0.00010381880446748629,4.425242002663772e-06 +158.7912598712307,9.975827272272873e-05,4.25910752091658e-06 +161.1355935866068,9.583105745566253e-05,4.098115506114259e-06 +163.51453815256437,9.203381987832816e-05,3.942142658975031e-06 +165.92860455052647,8.836324568495188e-05,3.791067000280756e-06 +168.37831130585138,8.481604881553177e-05,3.644767972942339e-06 +170.86418459920836,8.13889750371434e-05,3.5031265367399956e-06 +173.38675837959778,7.80788053362244e-05,3.366025255678538e-06 +175.9465744790398,7.488235911592625e-05,3.233348377930677e-06 +178.54418272895632,7.179649719346349e-05,3.104981908373153e-06 +181.18014107827133,6.881812459324926e-05,2.9808136737517225e-06 +183.85501571325332,6.594419313247406e-05,2.860733380541177e-06 +186.5693811791304,6.317170379664983e-05,2.7446326655952433e-06 +189.32382050349736,6.049770890353079e-05,2.632405139709561e-06 +192.1189253215464,5.791931405468074e-05,2.523946424246718e-06 +194.95529600314666,5.5433679874833944e-05,2.419154180997607e-06 +197.83354178179928,5.30380235400524e-05,2.3179281354766703e-06 +200.75428088549705,5.072962009652625e-05,2.220170093870291e-06 +203.71814066951544,4.850580357269455e-05,2.125783953877718e-06 +206.72575775116442,4.6363967888167335e-05,2.0346757097020646e-06 +209.77777814652958,4.4301567563713416e-05,1.9467534514654746e-06 +212.8748574092321,4.231611823732883e-05,1.8619273593370458e-06 +216.01766077123727,4.040519699212192e-05,1.7801096926748613e-06 +219.20686328574192,3.856644250243183e-05,1.7012147744941871e-06 +222.44314997217123,3.679755500524234e-05,1.6251589715828718e-06 +225.72721596331652,3.5096296104549474e-05,1.5518606705918363e-06 +229.05976665464496,3.346048841689666e-05,1.4812402504337258e-06 +232.44151785581437,3.1888015066791046e-05,1.4132200513259013e-06 +235.8731959444225,3.0376819041168605e-05,1.3477243408154636e-06 +239.3555380220308,2.8924902412464473e-05,1.2846792771233545e-06 +242.88929207248717,2.7530325440191657e-05,1.224012870142793e-06 +246.47521712258828,2.619120556120168e-05,1.1656549404231566e-06 +250.11408340511355,2.490571627902293e-05,1.109537076465206e-06 +253.80667252426588,2.367208596282749e-05,1.0555925906465637e-06 +257.5537776235551,2.2488596566669595e-05,1.0037564740879719e-06 +261.35620355616004,2.135358227966887e-05,9.539653507611355e-07 +265.2147670578054,2.0265428117778174e-05,9.061574311279699e-07 +269.130296922191,1.9222568467678925e-05,8.602724655888899e-07 +273.1036341790118,1.8223485593188593e-05,8.162516980045615e-07 +277.1356322746047,1.7266708114346846e-05,7.74037819541354e-07 +281.22715725526353,1.635080946906819e-05,7.335749230756389e-07 +285.3790879532599,1.5474406366915864e-05,6.948084583763064e-07 +289.59231617561073,1.4636157244163555e-05,6.576851882683558e-07 +293.86774689563254,1.383476072887382e-05,6.221531459634495e-07 +298.20629844732196,1.3068954124237203e-05,5.881615937258349e-07 +302.60890272261065,1.2337511917886969e-05,5.556609830242024e-07 +307.0765053715277,1.1639244324341073e-05,5.246029163021378e-07 +311.610066005319,1.097299586712028e-05,4.949401104815462e-07 +316.2105584025658,1.0337644006464679e-05,4.6662636229530435e-07 +320.87897071834556,9.732097817918785e-06,4.396165155272774e-07 +325.6163056964811,9.155296726385954e-06,4.138664302198782e-07 +330.42358088492347,8.606209299571539e-06,3.8933295389167627e-07 +335.30182885431424,8.083832104046174e-06,3.659738947902355e-07 +340.25209741977477,7.587188626472597e-06,3.4374799718848657e-07 +345.27544986597024,7.115328261856031e-06,3.2261491871660025e-07 +350.3729651754958,6.667325370006591e-06,3.0253520970561253e-07 +355.5457382606347,6.24227840074626e-06,2.834702945040362e-07 +360.79488019853875,5.839309087759652e-06,2.653824547144594e-07 +366.1215184698795,5.457561710381235e-06,2.482348142837581e-07 +371.5267972010242,5.096202422036519e-06,2.3199132636808907e-07 +377.01187740978685,4.754418643516215e-06,2.166167618823698e-07 +382.5779372548044,4.431418518763651e-06,2.020766996335462e-07 +388.22617228860156,4.126430430399725e-06,1.883375179275921e-07 +393.95779571438476,3.838702571802334e-06,1.753663875320931e-07 +399.77403864663074,3.567502572195779e-06,1.6313126586920942e-07 +405.67615037552173,3.3121171708974613e-06,1.5160089230810637e-07 +411.66539863528453,3.0718519366116483e-06,1.4074478442139994e-07 +417.74306987649175,2.8460310274557316e-06,1.3053323506690997e-07 +423.9104695423823,2.6339969872528663e-06,1.209373101540194e-07 +430.16892234926235,2.4351105735255665e-06,1.1192884695318835e-07 +436.5197725710451,2.2487506125770124e-06,1.0348045280767969e-07 +442.96438432799243,2.074313877048731e-06,9.556550410826592e-08 +449.5041418797182,1.9112149813930966e-06,8.815814539459284e-08 +456.14044992251837,1.7588862907938558e-06,8.123328845090311e-08 +462.8747338910904,1.6167778392053302e-06,7.476661126894652e-08 +469.70844026470684,1.484357252357055e-06,6.873455675702702e-08 +476.6430368779108,1.3611096717823245e-06,6.311433108120746e-08 +483.6800132357927,1.2465376761723756e-06,5.788390153262121e-08 +490.8208808339322,1.14016119662815e-06,5.302199382350977e-08 +498.06717348305335,1.0415174226759823e-06,4.850808872398612e-08 +505.42044763847775,9.501606962255829e-07,4.43224179614081e-08 +512.8822827344409,8.656623909762307e-07,4.04459593146275e-08 +520.4542815233443,7.876107751143374e-07,3.6860430846079054e-08 +528.1380704200157,7.15610855488919e-07,3.354828422560431e-08 +535.9352998510522,6.492842017966216e-07,3.049269711094208e-08 +543.8476446093208,5.882687496511008e-07,2.7677564560856214e-08 +551.8768042136934,5.32218581748753e-07,2.508748946778685e-08 +560.0245032740909,4.808036866708144e-07,2.2707772007609364e-08 +568.2924918619192,4.3370969517731855e-07,2.052439811444977e-08 +576.6825458859716,3.906375941486116e-07,1.8524026998449625e-08 +585.1964674738837,3.5130341861236584e-07,1.669397773379805e-08 +593.8360853592164,3.1543792255629715e-07,1.5022214953180806e-08 +602.6032552742578,2.8278622946703304e-07,1.3497333692954983e-08 +611.4998603486217,2.5310746375250235e-07,1.210854344078792e-08 +620.5278115137272,2.261743643975876e-07,1.0845651444144286e-08 +629.6890479132611,2.0177288236974813e-07,9.699045343820582e-09 +638.9855373196883,1.7970176343278864e-07,8.659675201697036e-09 +648.4192765569173,1.5977211814225472e-07,7.719034995959088e-09 +657.9922919292046,1.4180698088584053e-07,6.8691436602509644e-09 +667.7066396563914,1.2564085989681484e-07,6.1025257455490175e-09 +677.5644063155661,1.111192802087136e-07,5.412191785001304e-09 +687.5677092892466,9.809832153638189e-08,4.791618442594697e-09 +697.7186972201808,8.644415306306624e-08,4.234728526311772e-09 +708.0195504728598,7.603256708707773e-08,3.735870945468199e-09 +718.4724816018461,6.674851343609951e-08,3.2898006902232613e-09 +729.0797358270158,5.848563649420256e-08,2.891658908886136e-09 +739.8435915158166,5.1145816607825894e-08,2.5369531556564994e-09 +750.7663606726453,4.463871754424354e-08,2.221537877904013e-09 +761.8503894354524,3.8881341571280725e-08,1.941595208073456e-09 +773.0980585796754,3.379759361218405e-08,1.6936161208697974e-09 +784.5117840296159,2.9317855806505298e-08,1.4743820115998036e-09 +796.0940173773575,2.537857367854436e-08,1.2809467464954312e-09 +807.847246409361,2.192185498111821e-08,1.110619230586793e-09 +819.7739956408174,1.8895082146022234e-08,9.609465333003207e-10 +831.8768268578996,1.6250539135135553e-08,8.296976064923558e-10 +844.1583396680161,1.3945053349364778e-08,7.148476241564995e-10 +856.6211720581896,1.1939653117942783e-08,6.145629676208424e-10 +869.2680009616791,1.0199241159378543e-08,5.271868747347112e-10 +882.1015428329673,8.69228427879694e-09,4.512257663831851e-10 +895.1245542312367,7.390519445594785e-09,3.8533625870652503e-10 +908.3398324124604,6.268676281199737e-09,3.2831286468018935e-10 +921.7502159302336,5.3042158800359745e-09,2.790763842633134e-10 +935.3585852454767,4.4770857882119155e-09,2.3666297817787716e-10 +949.1678633451382,3.769490874438506e-09,2.0021391655992676e-10 +963.1810163700337,3.165679746611796e-09,1.68965990245511e-10 +977.4010542519522,2.65174629556042e-09,1.4224256932924244e-10 +991.8310313601726,2.215445884749154e-09,1.194452908693279e-10 +1006.4740471575121,1.8460256512039322e-09,1.0004635521137359e-10 +1021.3332468660842,1.5340683384270016e-09,8.358140836140348e-11 +1036.4118221428619,1.2713490463549853e-09,6.964298614971859e-11 +1051.7130117652264,1.0507042561246508e-09,5.7874494580334375e-11 +1067.2401023266361,8.659124681369983e-10,4.796469974219497e-11 +1082.9964289425639,7.115857801546952e-10,3.964269995095299e-11 +1098.9853759668576,5.830717273900187e-10,3.2673352374617354e-11 +1115.2103777186774,4.763647081542698e-10,2.6853126251471367e-11 +1131.6749192201637,3.880263260297283e-10,2.2006354911543492e-11 +1148.382536944998,3.1511399205754146e-10,1.7981859139694054e-11 +1165.3368195780126,2.551171474678774e-10,1.4649914944558305e-11 +1182.5414087860163,2.0590048837283543e-10,1.1899539498403378e-11 1200.0,1.656535979704816e-10,9.636069863807214e-12 diff --git a/tests/integration/test-data/reference/test6/group_parameters.csv b/tests/integration/test-data/reference/test6/group_parameters.csv index a2ae6536..a89f96ee 100644 --- a/tests/integration/test-data/reference/test6/group_parameters.csv +++ b/tests/integration/test-data/reference/test6/group_parameters.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.000516288552773315,0.0,55.6246863333297,0.0 -0.002864234651780247,0.0,23.84743300415373,0.0 -0.0014471493857976365,0.0,11.894997207991247,0.0 -0.006216741075927622,0.0,3.341171627137288,0.0 -0.006380801289980143,0.0,1.197661180970348,0.0 -0.005089895023153451,0.0,0.2517449530369499,0.0 +0.0005162901534403848,0.0,55.62467042504896,0.0 +0.002864501770157952,0.0,23.846979482961842,0.0 +0.001447419836816959,0.0,11.891823735756953,0.0 +0.0062191783496551,0.0,3.3402202687250897,0.0 +0.00637942325083527,0.0,1.1970997068732543,0.0 +0.005088589180538686,0.0,0.2516584132386145,0.0 diff --git a/tests/integration/test-data/reference/test7/count_rate.csv b/tests/integration/test-data/reference/test7/count_rate.csv index b471d933..61a61677 100644 --- a/tests/integration/test-data/reference/test7/count_rate.csv +++ b/tests/integration/test-data/reference/test7/count_rate.csv @@ -1,101 +1,101 @@ times,counts,sigma counts +0.0,0.03305398990275,0.0002463072486674755 0.01,0.033051684806717455,0.00024628953692049614 -0.011175427721506885,0.03305141386994859,0.00024628745511858267 -0.012489018475862458,0.033051111089161325,0.0002462851286372877 -0.013957012328956499,0.03305077272197865,0.0002462825287216413 -0.015597558249043391,0.033050394586297764,0.00024627962323805943 -0.01743093848441779,0.03304997200864416,0.0002462763762775419 -0.01947981931506438,0.033049499766465304,0.0002462727477123115 -0.021769531278351576,0.03304897202365395,0.00024626869270044096 -0.024328382333230144,0.03304838225850851,0.00024626416113238125 -0.027188007834619863,0.0330477231832454,0.0002462590970125925 -0.030383761644755723,0.03304698665407531,0.0002462534377686898 -0.03395515321684608,0.03304616357074031,0.0002462471134796332 -0.03794633605475553,0.03304524376428077,0.00024624004601350843 -0.04240665358759312,0.03304421587165794,0.0002462321480643481 -0.04739124920791276,0.033043067195699403,0.00024622332207622393 -0.05296174801549495,0.03304178354865677,0.00024621345904147905 -0.059187018695182454,0.033040349077468285,0.0002462024371584586 -0.06614402494794883,0.03303874606859886,0.00024619012033241 -0.07391877700153507,0.033036954730086165,0.0002461763565013554 -0.08260739496428407,0.03303495294814972,0.00024616097576665415 -0.09231729716853285,0.03303271601541812,0.0002461437883056666 -0.1031685281951811,0.033030216327495025,0.00024612458204136136 -0.11529524299794917,0.03302742304421244,0.00024610312004086864 -0.12884736547571546,0.03302430171150894,0.00024607913761183047 -0.14399244199804395,0.03302081383941394,0.000246052339061915 -0.16091771279924127,0.033016916431115866,0.00024602239408301127 -0.17983242684981243,0.03301256145753547,0.0002459889337173728 -0.2009704288243253,0.03300769527121212,0.0002459515458582984 -0.22459305014864916,0.033002257952636053,0.0002459097702327929 -0.2509923398689001,0.032996182581418426,0.00024586309280800745 -0.28049467528567845,0.03298939442387875,0.0002458109395570832 -0.3134647969922643,0.03298181002774221,0.0002457526695132823 -0.3503103182023879,0.032973336213673175,0.00024568756703396733 -0.3914867641168864,0.032963868952322624,0.00024561483318805616 -0.43750320363148787,0.032953292114435186,0.00024553357617202956 -0.4889285430111402,0.032941476080344215,0.00024544280065041057 -0.546398559340267,0.032928276193884436,0.00024534139590688415 -0.6106237607042645,0.03291353104437468,0.00024522812268193845 -0.6823981702785225,0.032897060558878276,0.0002451015985621672 -0.7626091429236176,0.03287866388544973,0.00024496028177529923 -0.8522483356503203,0.03285811704654513,0.0002448024532338107 -0.9524239675834694,0.03283517034024079,0.0002446261966588737 -1.064374520995988,0.03280954546541263,0.00024442937660577364 -1.1894840528004176,0.03278093234563384,0.0002442096142022401 -1.3292993057956148,0.03274898562532751,0.00024396426040302274 -1.4855488312168186,0.03271332081076158,0.00024369036655830757 -1.6601643590032589,0.0326735100279258,0.00024338465209125821 -1.855304679986273,0.03262907736934743,0.00024304346908241812 -2.0733823352560057,0.03257949380269439,0.00024266276356761166 -2.3170934426702647,0.03252417161584561,0.00024223803337346277 -2.5894510292539104,0.03246245837630877,0.00024176428234335402 -2.8938222815808685,0.03239363038784784,0.00024123597084986447 -3.2339701746693144,0.03231688563445491,0.0002406469625514845 -3.6140999940525917,0.032231336211986185,0.0002399904674366334 -4.038911326183321,0.03213600026163944,0.00023925898131266283 -4.513656159933722,0.03202979343789577,0.00023844422204876114 -5.044203817507364,0.031911519967675446,0.00023753706307796937 -5.637113517510265,0.03177986338856242,0.0002365274649148354 -6.299715467286547,0.031633377093546196,0.00023540440576308701 -7.040201487071978,0.03147047485955496,0.0002341558126852065 -7.867726286361818,0.03128942159907692,0.00023276849529751468 -8.792520644583629,0.031088324650557556,0.00023122808455609096 -9.826017895340147,0.030865126016335204,0.00022951897992695334 -10.980995277960703,0.030617596068998217,0.00022762430910440738 -12.271731903905824,0.03034332938045166,0.00022552590546846664 -13.714185290980963,0.03003974348451849,0.0002232043096656461 -15.326188647871062,0.029704081564644314,0.00022063880305962276 -17.12767134804624,0.029333420262966217,0.0002178074823194882 -19.140905318781517,0.02892468403328632,0.0002146873860654979 -21.390780391424954,0.028474667702868932,0.00021125468622075645 -23.905112017099636,0.027980069156489713,0.00020748495843080753 -26.714985152162292,0.027437534294671023,0.0002033535474709001 -29.855138564911933,0.026843716622184127,0.00019883604475812966 -33.36439431477461,0.026195353957750987,0.0001939088956382425 -37.28613771366189,0.02548936477339392,0.00018855015364480245 -41.66885370331804,0.024722966508517408,0.0001827403969439892 -46.56672627994753,0.023893817778778748,0.00017646381808129985 -52.04030837687489,0.02300018561483493,0.0001697094912336666 -58.15727048706946,0.022041137607858825,0.00016247281066923043 -64.99323728083704,0.02101675698595255,0.0001547570792539428 -72.6327225618741,0.01992837608247488,0.00014657520596434334 -81.17017412064864,0.01877882029653459,0.00013795144611548083 -90.71114140274376,0.01757265046339096,0.0001289230875972923 -101.37358042817536,0.0163163866357632,0.00011954195193072221 -113.28931209454387,0.015018690886916446,0.00010987554279322715 -126.60565189318109,0.01369048138756416,0.00010000764090350557 -141.48723118665066,0.012344945497702849,9.003811890150246e-05 -158.11803256425495,0.010997417124242258,8.008174134164728e-05 -176.70366443887033,0.00966508464165815,7.026573316150311e-05 -197.47390300620017,0.0083665019991839,6.072595580690282e-05 -220.6855329929656,0.007120888944518458,5.160163324030976e-05 -246.62552231451102,0.0059472277700373935,4.302872577836896e-05 -275.61456989047014,0.004863193640809785,3.51322552641108e-05 -308.0110704805157,0.0038839914196663852,2.8018124763485833e-05 -344.21554555789663,0.003021209272472647,2.176521721656964e-05 -384.67559500013346,0.0022818304944613645,1.6418749483707448e-05 -429.89143081516465,0.0016675597704166544,1.1985935928685298e-05 -480.42206131700505,0.001174607775081453,8.43491170365949e-06 -536.892202206554,0.000794030895126659,5.6975320106098865e-06 +0.011188107881532645,0.03305141094717654,0.00024628743266082956 +0.012517375796881289,0.033051104552870185,0.0002462850784143018 +0.014004575080919353,0.033050761758997516,0.00024628244448528664 +0.015668469684034948,0.03305037824174889,0.0002462794976513841 +0.017530052916350663,0.033049949163813784,0.0002462762007447506 +0.01961281231971072,0.03304946911342525,0.00024627251218377485 +0.021943026009317607,0.0330489320361759,0.00024626838544922127 +0.024550094223952212,0.03304833115874975,0.0002462637684982719 +0.02746691026793688,0.033047658903613955,0.00024625860310912174 +0.030730275525005457,0.033046906793601595,0.0002462528241479211 +0.03438136378029831,0.03304606534519114,0.0002462463587488926 +0.038466240708819655,0.03304512394914819,0.0002462391253973746 +0.043036445084727704,0.03304407073703826,0.00024623103290434366 +0.04814963904455889,0.033042892431945185,0.00024622197925962806 +0.053870335608738135,0.03304157418153515,0.00024621185034953284 +0.060270712640493176,0.0330400993713891,0.00024620051852293354 +0.0674315235118691,0.03303844941628524,0.00024618784098804427 +0.07544311596668965,0.03303660352684381,0.0002461736580200014 +0.08440657203543019,0.033034538448647455,0.00024615779095711436 +0.09443498338427493,0.033032228170617205,0.0002461400399610814 +0.10565487818940103,0.033029643599054526,0.0002461201815136383 +0.11820781753932091,0.0330267521933491,0.00024609796561896524 +0.13225218150704493,0.03302351755889665,0.00024607311267769137 +0.14796516742688554,0.03301989899226633,0.00024604530999448014 +0.16554502558810352,0.03301585097309911,0.00024601420787691194 +0.18521356055307844,0.03301132259660149,0.00024597941527867116 +0.20721892965906208,0.03300625693981849,0.00024594049493485216 +0.23183877401213102,0.03300059035412049,0.00024589695793149113 +0.2593837214769989,0.03299425167551559,0.0002458482576451632 +0.29020130585980797,0.03298716134349706,0.0002457937829816278 +0.32468035173211834,0.03297923041814982,0.00024573285083502307 +0.36325588021929045,0.03297035948416702,0.00024566469768098014 +0.4064145976494522,0.03296043742926354,0.00024558847020822433 +0.4547010363131755,0.03294934008321729,0.0002455032148837563 +0.50872442481165,0.03293692870242039,0.00024540786633656277 +0.5691663746763382,0.0329230482833853,0.00024530123443403714 +0.63678948024197,0.03290752568713117,0.0002451819899139537 +0.7124469402772261,0.032890167554786326,0.0002450486484230453 +0.7970933227689451,0.03287075799310142,0.0002448995528011477 +0.8917966086788279,0.032849056006902244,0.00024473285343772067 +0.9977516666283679,0.03282479265385956,0.00024454648651566526 +1.116295328521717,0.032797667895367755,0.0002443381499461609 +1.2489232563151893,0.03276734711587615,0.00024410527678833582 +1.3973088127409385,0.03273345728179865,0.00024384500593972063 +1.5633241740761918,0.03269558271026237,0.0002435541498786242 +1.7490639513372355,0.032653260417601165,0.00024322915923908906 +1.9568716179260754,0.03260597501785756,0.00024286608400457676 +2.1893690771666265,0.03255315314288479,0.00024246053112006485 +2.4494897427831788,0.032494157358261194,0.00024200761834641414 +2.7405155496965854,0.03242827955354995,0.0002415019242189222 +3.066118362102314,0.032354733791959744,0.00024093743402792725 +3.430406301274886,0.03227264861380908,0.00024030748181808666 +3.83797557761528,0.03218105880112881,0.00023960468851051507 +4.2939684809047325,0.03207889662817798,0.00023882089639556825 +4.804138260426299,0.031964982645708295,0.0002379471004323422 +5.374921713544795,0.03183801607681793,0.00023697337703415446 +6.013520398593148,0.031696564940743854,0.00023588881132931457 +6.727991496725733,0.031539056069765,0.00023468142427707616 +7.527349469140179,0.03136376524559235,0.0002333381015052248 +8.42167979227378,0.03116880775751358,0.00023184452633522382 +9.42226620596825,0.03095212977764495,0.00023018512019114652 +10.541733080089207,0.030711501061529593,0.00022834299446782897 +11.794204695835946,0.030444509617570566,0.0002262999189784881 +13.195483451389148,0.030148559148654948,0.0002240363133256351 +14.763249240312051,0.029820870255391534,0.00022153126894781328 +16.51728251825661,0.029458486602998754,0.00021876261118343804 +18.479713872400815,0.02905828749139135,0.00021570701243902807 +20.67530324242757,0.0286170085257254,0.00021234016940354134 +23.131752315968136,0.028131272353434874,0.0002086370591276895 +25.880054039994413,0.027597631698286034,0.0002045722905512165 +28.954883657935227,0.02701262715845157,0.0002001205695105153 +32.39503620622059,0.026372862409375447,0.00019525729610848233 +36.243915990135164,0.025675099514800553,0.00018995931319162873 +40.55008421468383,0.024916376935736277,0.0001842058230526968 +45.36787167991166,0.02409415245350196,0.00017797948573141593 +50.75806427103814,0.02320647248574741,0.0001712677056725225 +56.78866989221423,0.0222521680520855,0.0001640641031788349 +63.53577652028377,0.02123107580565452,0.0001563701522032153 +71.08451220458835,0.02014427995719444,0.00014819694578545306 +79.53011912510586,0.018994367472409554,0.0001395670243684607 +88.9791552602827,0.017785684575446725,0.00013051617038467372 +99.55083882596857,0.01652457740691583,0.00012109503586120724 +111.3785524482005,0.015219593908091269,0.00011137043066877195 +124.61152604794079,0.013881618134512106,0.00010142606155898065 +139.41671967067782,0.012523903078233515,9.136248262579637e-05 +155.98093001649363,0.011161964926887065,8.129600499776586e-05 +174.5131472486326,0.009813302129595275,7.135632823639883e-05 +195.24719181634916,0.008496908577960335,6.168271001144743e-05 +218.44466456076142,0.007232563555675569,5.241859516270506e-05 +244.39824732510073,0.00603990328628252,4.3704787086573035e-05 +273.4353957130727,0.004937310122438497,3.567146171655235e-05 +305.92247058674235,0.003940693769501896,2.8429581612392757e-05 +342.2693604309474,0.003062279559797158,2.2062530808394956e-05 +382.93465290446164,0.002309553448872091,1.6619005695142072e-05 +428.43142082723796,0.0016845310097261261,1.2108292325271811e-05 +479.33369560534453,0.0011835063851538459,8.498961287305147e-06 +536.283709768632,0.0007973880608735972,5.721662414596074e-06 600.0,0.0005126406243612355,3.676099171016727e-06 diff --git a/tests/integration/test-data/reference/test7/group_parameters.csv b/tests/integration/test-data/reference/test7/group_parameters.csv index 8f2de0f2..6ed2e735 100644 --- a/tests/integration/test-data/reference/test7/group_parameters.csv +++ b/tests/integration/test-data/reference/test7/group_parameters.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.06541039711796885,0.0,100.00098666711425,0.0 -0.00019525244600475917,0.0,99.67367191563196,0.0 -4.446696618611242e-07,0.0,95.86851467152195,0.0 -7.665191888505694e-10,0.0,89.46022216163458,0.0 -0.0005084902951546429,0.0,55.639218138715236,0.0 -8.067227523321234e-38,0.0,0.009393408482036661,0.0 +0.0027670938277992644,0.0,100.00032226230205,0.0 +0.001808229833297253,0.0,100.00001124656504,0.0 +0.025115593337016472,0.0,99.99998928068548,0.0 +0.03686459857536383,0.0,99.99998256174113,0.0 +0.00048066432466817093,0.0,55.63999999155181,0.0 +1.969188540775993e-34,0.0,0.015742210441099858,0.0 diff --git a/tests/integration/test-data/reference/test8/count_rate.csv b/tests/integration/test-data/reference/test8/count_rate.csv index 9e810838..99c0b570 100644 --- a/tests/integration/test-data/reference/test8/count_rate.csv +++ b/tests/integration/test-data/reference/test8/count_rate.csv @@ -1,101 +1,101 @@ times,counts,sigma counts +0.0,0.0007027039555853151,1.469401486730505e-05 0.01,0.0007026412021023797,1.469235676994104e-05 -0.011175427721506885,0.0007026338262846562,1.469216188542235e-05 -0.012489018475862458,0.0007026255835925819,1.469194409683331e-05 -0.013957012328956499,0.0007026163721561593,1.4691700712761485e-05 -0.015597558249043391,0.0007026060781374849,1.4691428725636325e-05 -0.01743093848441779,0.0007025945743255459,1.4691124774616348e-05 -0.01947981931506438,0.000702581718566227,1.4690785104126196e-05 -0.021769531278351576,0.0007025673520082537,1.4690405517535377e-05 -0.024328382333230144,0.0007025512971435559,1.4689981325411347e-05 -0.027188007834619863,0.0007025333556180343,1.4689507287714036e-05 -0.030383761644755723,0.0007025133057859286,1.4688977549225506e-05 -0.03395515321684608,0.000702490899977881,1.4688385567427121e-05 -0.03794633605475553,0.0007024658614493307,1.468772403194561e-05 -0.04240665358759312,0.0007024378809720244,1.4686984774588696e-05 -0.04739124920791276,0.0007024066130271451,1.4686158668878471e-05 -0.05296174801549495,0.0007023716715537945,1.4685235517866154e-05 -0.059187018695182454,0.0007023326252012648,1.4684203928873246e-05 -0.06614402494794883,0.0007022889920276519,1.468305117365043e-05 -0.07391877700153507,0.0007022402335808228,1.4681763032275285e-05 -0.08260739496428407,0.0007021857482905066,1.468032361892107e-05 -0.09231729716853285,0.0007021248640922376,1.4678715187420365e-05 -0.1031685281951811,0.0007020568301949894,1.4676917914316625e-05 -0.11529524299794917,0.0007019808078945031,1.4674909656842655e-05 -0.12884736547571546,0.0007018958603234487,1.4672665682984827e-05 -0.14399244199804395,0.0007018009410175913,1.467015837048443e-05 -0.16091771279924127,0.000701694881163947,1.466735687128999e-05 -0.17983242684981243,0.0007015763753824457,1.4664226737605652e-05 -0.2009704288243253,0.000701443965876754,1.4660729505278446e-05 -0.22459305014864916,0.0007012960247725784,1.4656822229830313e-05 -0.2509923398689001,0.0007011307344428922,1.4652456969968174e-05 -0.28049467528567845,0.0007009460655990347,1.464758021289642e-05 -0.3134647969922643,0.0007007397529044902,1.464213223521172e-05 -0.3503103182023879,0.000700509267844354,1.4636046392581607e-05 -0.3914867641168864,0.0007002517885580585,1.4629248330799087e-05 -0.43750320363148787,0.000699964166315971,1.4621655110170907e-05 -0.4889285430111402,0.0006996428882921472,1.4613174234545446e-05 -0.546398559340267,0.0006992840362561086,1.4603702575628967e-05 -0.6106237607042645,0.0006988832407764114,1.4593125182592474e-05 -0.6823981702785225,0.0006984356304985888,1.458131396635808e-05 -0.7626091429236176,0.0006979357760305584,1.4568126247402665e-05 -0.8522483356503203,0.000697377627940897,1.4553403155466926e-05 -0.9524239675834694,0.0006967544483509401,1.4536967869259739e-05 -1.064374520995988,0.000696058735582336,1.4518623684166094e-05 -1.1894840528004176,0.0006952821413099461,1.4498151896184152e-05 -1.3292993057956148,0.0006944153796689472,1.4475309490937597e-05 -1.4855488312168186,0.0006934481277786567,1.4449826627764687e-05 -1.6601643590032589,0.0006923689171789917,1.4421403910737992e-05 -1.855304679986273,0.0006911650157348495,1.4389709441221283e-05 -2.0733823352560057,0.0006898222996569006,1.4354375650469778e-05 -2.3170934426702647,0.000688325115423884,1.431499591612948e-05 -2.5894510292539104,0.0006866561315832918,1.4271120973655875e-05 -2.8938222815808685,0.000684796180668567,1.4222255143088664e-05 -3.2339701746693144,0.0006827240918187867,1.4167852403806348e-05 -3.6140999940525917,0.0006804165151416823,1.4107312365448376e-05 -4.038911326183321,0.000677847739446799,1.4039976202833713e-05 -4.513656159933722,0.0006749895057205487,1.3965122647215605e-05 -5.044203817507364,0.0006718108196507108,1.3881964156471668e-05 -5.637113517510265,0.0006682777676702986,1.3789643423778434e-05 -6.299715467286547,0.0006643533424184442,1.368723042892926e-05 -7.040201487071978,0.0006599972852498443,1.3573720289653338e-05 -7.867726286361818,0.0006551659555048419,1.3448032232871209e-05 -8.792520644583629,0.0006498122387160963,1.3309010078277286e-05 -9.826017895340147,0.0006438855088027003,1.315542470896463e-05 -10.980995277960703,0.0006373316625994858,1.29859790951879e-05 -12.271731903905824,0.0006300932487717448,1.2799316535775373e-05 -13.714185290980963,0.0006221097172154712,1.2594032883393833e-05 -15.326188647871062,0.0006133178193215245,1.2368693618687794e-05 -17.12767134804624,0.000603652193785113,1.2121856724901919e-05 -19.140905318781517,0.0005930461766518121,1.1852102375467295e-05 -21.390780391424954,0.0005814328775420796,1.155807046358009e-05 -23.905112017099636,0.0005687465658370166,1.1238506950347657e-05 -26.714985152162292,0.0005549244101673465,1.0892319855185754e-05 -29.855138564911933,0.0005399086107051626,1.0518645420518047e-05 -33.36439431477461,0.00052364895513655,1.0116924508246301e-05 -37.28613771366189,0.0005061058141848546,9.686988580520787e-06 -41.66885370331804,0.0004872535694051786,9.229153636754398e-06 -46.56672627994753,0.0004670844329512541,8.744319188337583e-06 -52.04030837687489,0.00044561257470992815,8.234067742399566e-06 -58.15727048706946,0.000422878415939584,7.700758369729686e-06 -64.99323728083704,0.0003989528810221229,7.147605849999625e-06 -72.6327225618741,0.00037394132293470364,6.578734813604014e-06 -81.17017412064864,0.00034798675930271814,5.999196546092861e-06 -90.71114140274376,0.00032127198385843584,5.414935133715161e-06 -101.37358042817536,0.0002940200663961769,4.8326899766984875e-06 -113.28931209454387,0.0002664927403347521,4.259824024863296e-06 -126.60565189318109,0.00023898622057661137,3.704072007926575e-06 -141.48723118665066,0.00021182411448612,3.1732108342819113e-06 -158.11803256425495,0.00018534729862637966,2.674665144615552e-06 -176.70366443887033,0.0001599009340496007,2.2150739085946493e-06 -197.47390300620017,0.00013581916470889856,1.7998571414683975e-06 -220.6855329929656,0.0001134084440711644,1.4328324652518856e-06 -246.62552231451102,9.293079789851953e-05,1.1159358027832434e-06 -275.61456989047014,7.458857594169586e-05,8.490955072672899e-07 -308.0110704805157,5.8512296547148726e-05,6.30292576915824e-07 -344.21554555789663,4.475300130144596e-05,4.5581197819215925e-07 -384.67559500013346,3.328012085467098e-05,3.2065606497362385e-07 -429.89143081516465,2.3985277186044545e-05,2.1905890282844112e-07 -480.42206131700505,1.6691820515776586e-05,1.4501994653531596e-07 -536.892202206554,1.1169323569258875e-05,9.277489206992714e-08 +0.011188107881532645,0.0007026337467170168,1.4692159783081622e-05 +0.012517375796881289,0.000702625405653494,1.4691939395329402e-05 +0.014004575080919353,0.0007026160737093792,1.4691692827229285e-05 +0.015668469684034948,0.0007026056331895225,1.4691416969304193e-05 +0.017530052916350663,0.0007025939524234142,1.4691108342897037e-05 +0.01961281231971072,0.0007025808841067975,1.4690763056373463e-05 +0.021943026009317607,0.0007025662634467613,1.4690376756137413e-05 +0.024550094223952212,0.0007025499060870901,1.4689944571847367e-05 +0.02746691026793688,0.0007025316057879267,1.4689461055149443e-05 +0.030730275525005457,0.0007025111318307588,1.4688920111163539e-05 +0.03438136378029831,0.000702488226116349,1.4688314921869563e-05 +0.038466240708819655,0.000702462599919439,1.4687637860441639e-05 +0.043036445084727704,0.0007024339302598519,1.4686880395467386e-05 +0.04814963904455889,0.0007024018558449046,1.4686032983866453e-05 +0.053870335608738135,0.0007023659725328231,1.4685084951185507e-05 +0.060270712640493176,0.0007023258282610233,1.4684024357794709e-05 +0.0674315235118691,0.0007022809173766503,1.4682837849341751e-05 +0.07544311596668965,0.0007022306742995705,1.4681510489631975e-05 +0.08440657203543019,0.0007021744664400266,1.4680025573895264e-05 +0.09443498338427493,0.0007021115862843028,1.4678364420170383e-05 +0.10565487818940103,0.0007020412425519251,1.4676506136283028e-05 +0.11820781753932091,0.0007019625503170666,1.4674427359613103e-05 +0.13225218150704493,0.0007018745199748099,1.4672101966537496e-05 +0.14796516742688554,0.0007017760449196784,1.466950074809441e-05 +0.16554502558810352,0.0007016658877892622,1.4666591048042304e-05 +0.18521356055307844,0.0007015426651097298,1.4663336359078436e-05 +0.20721892965906208,0.0007014048301624519,1.4659695872537017e-05 +0.23183877401213102,0.000701250653871759,1.4655623976403654e-05 +0.2593837214769989,0.0007010782034929347,1.4651069695960143e-05 +0.29020130585980797,0.0007008853188568525,1.4645976070811415e-05 +0.32468035173211834,0.0007006695859031473,1.4640279461445452e-05 +0.36325588021929045,0.0007004283072074909,1.4633908777839731e-05 +0.4064145976494522,0.0007001584691804495,1.4626784621958068e-05 +0.4547010363131755,0.0006998567055856832,1.4618818335286817e-05 +0.50872442481165,0.0006995192569941126,1.460991094184913e-05 +0.5691663746763382,0.0006991419257584753,1.4599951976424884e-05 +0.63678948024197,0.0006987200260599475,1.4588818187011918e-05 +0.7124469402772261,0.0006982483285459098,1.4576372099918561e-05 +0.7970933227689451,0.0006977209990465155,1.456246043531388e-05 +0.8917966086788279,0.0006971315308287776,1.4546912360627946e-05 +0.9977516666283679,0.0006964726698222232,1.4529537568951162e-05 +1.116295328521717,0.000695736332232061,1.4510124169607381e-05 +1.2489232563151893,0.000694913513947258,1.4488436378471465e-05 +1.3973088127409385,0.0006939941911557724,1.446421199649355e-05 +1.5633241740761918,0.0006929672116022504,1.443715966643928e-05 +1.7490639513372355,0.0006918201759709299,1.4406955900255073e-05 +1.9568716179260754,0.0006905393089558975,1.437324187296438e-05 +2.1893690771666265,0.0006891093197017275,1.4335619983894614e-05 +2.4494897427831788,0.000687513251471534,1.4293650192689843e-05 +2.7405155496965854,0.0006857323206408512,1.4246846146420724e-05 +3.066118362102314,0.0006837457454417565,1.4194671125685856e-05 +3.430406301274886,0.0006815305653129473,1.4136533852527157e-05 +3.83797557761528,0.000679061452272608,1.407178422197815e-05 +4.2939684809047325,0.0006763105164505846,1.3999709042954183e-05 +4.804138260426299,0.0006732471088277511,1.391952790390597e-05 +5.374921713544795,0.0006698376253710431,1.3830389315204594e-05 +6.013520398593148,0.0006660453181638895,1.3731367324672843e-05 +6.727991496725733,0.000661830120858068,1.362145885608341e-05 +7.527349469140179,0.0006571484978596403,1.3499582083768646e-05 +8.42167979227378,0.0006519533291516209,1.3364576230445191e-05 +9.42226620596825,0.0006461938455850972,1.3215203260214007e-05 +10.541733080089207,0.000639815632859686,1.3050152033968159e-05 +11.794204695835946,0.000632760726259232,1.2868045598493134e-05 +13.195483451389148,0.0006249678224655884,1.26674523900568e-05 +14.763249240312051,0.000616372639339207,1.2446902242567386e-05 +16.51728251825661,0.0006069084592432388,1.2204908190516035e-05 +18.479713872400815,0.0005965068959963319,1.1939995134786244e-05 +20.67530324242757,0.0005850989294153534,1.1650736476550711e-05 +23.131752315968136,0.0005726162540077966,1.1335799796002592e-05 +25.880054039994413,0.0005589929888159472,1.0994002526357008e-05 +28.954883657935227,0.0005441677925532426,1.0624378309454154e-05 +32.39503620622059,0.0005280864205723943,1.0226254270335701e-05 +36.243915990135164,0.0005107047461573426,9.799338762533235e-06 +40.55008421468383,0.0004919922462300273,9.343818161923542e-06 +45.36787167991166,0.00047193591886248213,8.860459982295392e-06 +50.75806427103814,0.0004505445552847532,8.350717930339784e-06 +56.78866989221423,0.00042785323136969745,7.816832533879764e-06 +63.53577652028377,0.00040392781316708065,7.2619187545380336e-06 +71.08451220458835,0.00037886919039375094,6.690029721467935e-06 +79.53011912510586,0.00035281686637214925,6.1061837092888825e-06 +88.9791552602827,0.00032595145222656034,5.5163401905547425e-06 +99.55083882596857,0.00029849555125207374,4.927310824424697e-06 +111.3785524482005,0.0002707124947812802,4.346593301483757e-06 +124.61152604794079,0.00024290242518864774,3.7821207438723746e-06 +139.41671967067782,0.00021539533639532873,3.2419273564493094e-06 +155.98093001649363,0.0001885408934527927,2.7337422674656313e-06 +174.5131472486326,0.00016269516394172597,2.2645372300086607e-06 +195.24719181634916,0.0001382047879710943,1.8400682586913358e-06 +218.44466456076142,0.00011538954699259792,1.4644633745046407e-06 +244.39824732510073,9.452469416812545e-05,1.139914576254651e-06 +273.4353957130727,7.582469270776139e-05,8.665280489609955e-07 +305.92247058674235,5.9430088236782266e-05,6.423698793842716e-07 +342.2693604309474,4.53990629007334e-05,4.6371557069385847e-07 +382.93465290446164,3.370478652863492e-05,3.2547507054699597e-07 +428.43142082723796,2.4239065150307356e-05,2.217297025801172e-07 +479.33369560534453,1.6822107708864454e-05,1.4629429396944861e-07 +536.283709768632,1.1217603230751181e-05,9.321591913990451e-08 600.0,7.151781436787678e-06,5.7142392889065265e-08 diff --git a/tests/integration/test-data/reference/test8/group_parameters.csv b/tests/integration/test-data/reference/test8/group_parameters.csv index 1fb4f5b2..3efc07d9 100644 --- a/tests/integration/test-data/reference/test8/group_parameters.csv +++ b/tests/integration/test-data/reference/test8/group_parameters.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -8.54338671470289e-29,0.0,694.5739058179059,0.0 -0.0009100395326791619,0.0,100.00000000001084,0.0 -0.00048066432498617556,0.0,55.639999999994174,0.0 -2.523299489290338e-13,0.0,0.001076082740227141,0.0 -5.690848480243718e-13,0.0,0.001000000010637043,0.0 -9.239938492387848e-14,0.0,0.0010000000023211934,0.0 +0.0009100395326769202,0.0,100.0000000000649,0.0 +0.0004806643249881117,0.0,55.640000000124424,0.0 +9.354688200402845e-18,0.0,33.65085319140761,0.0 +2.28638860356823e-16,0.0,6.524085750903932,0.0 +5.762666889603597e-16,0.0,0.005541487043934733,0.0 +2.4613834619908486e-15,0.0,0.0010996695518215283,0.0 From 009820711e48b7e21c673487f05e2d89314d7669 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 16 Mar 2026 15:15:28 -0500 Subject: [PATCH 073/170] Rename min to max timestep --- examples/four_dnps/input.json | 10 +++++----- examples/high_fidelity/input.json | 19 +++++++++++++++---- examples/zero_dnps/input.json | 16 ++++++++-------- mosden/base.py | 10 +++++----- mosden/templates/input_schema.json | 4 ++-- mosden/utils/defaults.py | 2 +- tests/unit/test_base.py | 20 ++++++++++---------- tests/unit/test_groupfit.py | 4 ++-- 8 files changed, 48 insertions(+), 37 deletions(-) diff --git a/examples/four_dnps/input.json b/examples/four_dnps/input.json index 005a02b6..c7b4dded 100644 --- a/examples/four_dnps/input.json +++ b/examples/four_dnps/input.json @@ -28,7 +28,7 @@ "modeling_options": { "concentration_handling": "OMC", "count_rate_handling": "data", - "residual_handling": ["all"], + "residual_handling": ["post-irrad"], "reprocessing_locations": ["excore"], "reprocessing": { "Xe": 0.0 @@ -39,11 +39,11 @@ "reprocessing": false }, "base_removal_scaling": 0.5, - "incore_s": 0.5, + "incore_s": 0.000001, "excore_s": 0, - "net_irrad_s": 5, + "net_irrad_s": 0.00001, "decay_time": 600, - "num_decay_times": 100, + "num_decay_times": 10, "openmc_settings": { "nps": 5000, "batches": 10, @@ -51,7 +51,7 @@ "run_omc": true, "write_fission_json": true, "write_nuyield_json": true, - "min_timestep": 1e10 + "max_timestep": 1e10 } }, "group_options": { diff --git a/examples/high_fidelity/input.json b/examples/high_fidelity/input.json index 05ad979d..f80515ad 100644 --- a/examples/high_fidelity/input.json +++ b/examples/high_fidelity/input.json @@ -23,6 +23,17 @@ "energy_MeV": 0.0253e-6, "fissile_fractions": { "U235": 1.0 + }, + "debug_dnps": { + "Zz99": { + "yield": 1.0, + "half_life_s": 10, + "pn": 1, + "parent": { + "yield": 0.000, + "half_life_s": 10 + } + } } }, "modeling_options": { @@ -39,9 +50,9 @@ "reprocessing": false }, "base_removal_scaling": 0.5, - "incore_s": 5, - "excore_s": 2, - "net_irrad_s": 30, + "incore_s": 50, + "excore_s": 0, + "net_irrad_s": 5000, "decay_time": 600, "num_decay_times": 100, "openmc_settings": { @@ -51,7 +62,7 @@ "run_omc": true, "write_fission_json": true, "write_nuyield_json": true, - "min_timestep": 1e10 + "max_timestep": 1e10 } }, "group_options": { diff --git a/examples/zero_dnps/input.json b/examples/zero_dnps/input.json index 8a226719..24c70593 100644 --- a/examples/zero_dnps/input.json +++ b/examples/zero_dnps/input.json @@ -26,12 +26,12 @@ }, "debug_dnps": { "Zz99": { - "yield": 1.0, - "half_life_s": 10, + "yield": 0.5, + "half_life_s": 3, "pn": 1, "parent": { - "yield": 0.000, - "half_life_s": 10 + "yield": 0.5, + "half_life_s": 0.3 } } } @@ -50,19 +50,19 @@ "reprocessing": false }, "base_removal_scaling": 0.5, - "incore_s": 0.000001, + "incore_s": 1e-6, "excore_s": 0, - "net_irrad_s": 0.00001, + "net_irrad_s": 1e-5, "decay_time": 600, "num_decay_times": 100, "openmc_settings": { "nps": 5000, "batches": 10, - "source": 1e3, + "source": 1.18e4, "run_omc": true, "write_fission_json": true, "write_nuyield_json": true, - "min_timestep": 1e10 + "max_timestep": 1e10 } }, "group_options": { diff --git a/mosden/base.py b/mosden/base.py index a7ba8777..2c7fc9fb 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -215,12 +215,12 @@ def _set_cycle_times(self, residence_time: float) -> list[float]: values : list[float] List of times to pass to OpenMC per residence """ - min_value = np.min((self.openmc_settings['min_timestep'], residence_time)) - if min_value == 0.0: + max_value = np.min((self.openmc_settings['max_timestep'], residence_time)) + if max_value == 0.0: return [] - min_cycles = int(np.floor(residence_time/min_value)) - remainder = residence_time - min_cycles * min_value - values = [min_value] * min_cycles + [remainder] + min_cycles = int(np.floor(residence_time/max_value)) + remainder = residence_time - min_cycles * max_value + values = [max_value] * min_cycles + [remainder] if np.isclose(values[-1], 0.0): values = values[:-1] return values diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index 885c3d52..8cce33c1 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -302,9 +302,9 @@ "type": "boolean", "description": "Whether or not to write the delayed neutron yield output to a JSON file" }, - "min_timestep": { + "max_timestep": { "type": "number", - "description": "The minimum time step size to use in OpenMC" + "description": "The maximum time step size to use in OpenMC" } } } diff --git a/mosden/utils/defaults.py b/mosden/utils/defaults.py index b40da257..ab0a89bd 100644 --- a/mosden/utils/defaults.py +++ b/mosden/utils/defaults.py @@ -71,7 +71,7 @@ "run_omc": True, "write_fission_json": True, "write_nuyield_json": True, - "min_timestep": 1e10 + "max_timestep": 1e10 } }, "group_options": { diff --git a/tests/unit/test_base.py b/tests/unit/test_base.py index 90c1eae2..9a6303d5 100644 --- a/tests/unit/test_base.py +++ b/tests/unit/test_base.py @@ -38,14 +38,14 @@ def test_get_irrad_index_with_min_time(): index = base.get_irrad_index(False) assert index == 3 - base.openmc_settings['min_timestep'] = 1 + base.openmc_settings['max_timestep'] = 1 index = base.get_irrad_index(False) assert index == 5 base.t_net = 30 base.t_in = 1 base.t_ex = 0 - base.openmc_settings['min_timestep'] = 0.25 + base.openmc_settings['max_timestep'] = 0.25 index = base.get_irrad_index(False) assert index == 120 @@ -67,11 +67,11 @@ def test_irrad_and_update(): base.t_net = 10 base.t_in = 5 base.t_ex = 5 - base.openmc_settings['min_timestep'] = 1e10 + base.openmc_settings['max_timestep'] = 1e10 assert base.t_in == 5 assert base.t_ex == 5 assert base.t_net == 10 - assert base.openmc_settings['min_timestep'] > 5 + assert base.openmc_settings['max_timestep'] > 5 index = base.get_irrad_index(False) assert index == 2 @@ -132,14 +132,14 @@ def test_times_rates_mask(): base.t_in = 1 base.t_ex = 1 base.t_net = 10 - base.openmc_settings['min_timestep'] = 1e10 + base.openmc_settings['max_timestep'] = 1e10 base.flux_scaling = False assert not base.flux_scaling data = base._get_times_and_rates() assert base.t_in == 1 assert base.t_ex == 1 assert base.t_net == 10 - assert base.openmc_settings['min_timestep'] > 1 + assert base.openmc_settings['max_timestep'] > 1 assert base._set_cycle_times(1) == [1] assert data['timesteps'][:10] == [1]*10 @@ -184,21 +184,21 @@ def test_times_rates_mask(): def test_openmc_time_setting(): input_path = './tests/unit/input/input.json' base = BaseClass(input_path) - base.openmc_settings['min_timestep'] = 1 + base.openmc_settings['max_timestep'] = 1 base.t_in = 1 base.t_ex = 1 base.t_net = 5 in_vals = base._set_cycle_times(base.t_in) assert np.allclose(in_vals, [1]) - base.openmc_settings['min_timestep'] = 0.5 + base.openmc_settings['max_timestep'] = 0.5 in_vals = base._set_cycle_times(base.t_in) assert np.allclose(in_vals, [0.5, 0.5]) - base.openmc_settings['min_timestep'] = 0.3 + base.openmc_settings['max_timestep'] = 0.3 in_vals = base._set_cycle_times(base.t_in) assert np.allclose(in_vals, [0.3, 0.3, 0.3, 0.1]) - base.openmc_settings['min_timestep'] = 1/3 + base.openmc_settings['max_timestep'] = 1/3 in_vals = base._set_cycle_times(base.t_in) assert np.allclose(in_vals, [1/3, 1/3, 1/3]) diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index 4c3aa8f6..da619a9b 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -424,7 +424,7 @@ def test_get_mod_counts(): grouper.residual_masks = 'all' grouper.post_irrad_only = False grouper.no_post_irrad = True - grouper.openmc_settings['min_timestep'] = 1e10 + grouper.openmc_settings['max_timestep'] = 1e10 grouper.full_fission_term = np.ones(len(irrad_times)) yield_val = 1 half_life = 10 @@ -433,7 +433,7 @@ def test_get_mod_counts(): lam_val = np.log(2)/half_life expected_counts = lam_val * (yield_val / lam_val * (1 - np.exp(-lam_val * irrad_times))) - assert grouper.openmc_settings['min_timestep'] == 1e10 + assert grouper.openmc_settings['max_timestep'] == 1e10 assert grouper.t_in == 1 assert grouper.t_ex == 0 assert grouper.t_net == 10 From 16fed6a1cd07b14835c3304b6553c24e68dba0f6 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 16 Mar 2026 15:23:47 -0500 Subject: [PATCH 074/170] Clean up phd result generator --- examples/phd_results/input.json | 9 +++-- examples/phd_results/results_generator.py | 46 ++++++++++++++--------- mosden/multipostprocessing.py | 10 ++++- 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/examples/phd_results/input.json b/examples/phd_results/input.json index c616a89d..dc64632f 100644 --- a/examples/phd_results/input.json +++ b/examples/phd_results/input.json @@ -33,15 +33,15 @@ "reprocessing": { "Xe": 0.0 }, - "irrad_type": "saturation", + "irrad_type": "intermediate", "spatial_scaling": { "flux": false, "reprocessing": false }, "base_removal_scaling": 0.5, - "incore_s": 0.3, + "incore_s": 0.1, "excore_s": 0, - "net_irrad_s": 30, + "net_irrad_s": 10, "decay_time": 600, "num_decay_times": 100, "openmc_settings": { @@ -50,7 +50,8 @@ "source": 1e3, "run_omc": true, "write_fission_json": true, - "write_nuyield_json": true + "write_nuyield_json": true, + "max_timestep": 1e10 } }, "group_options": { diff --git a/examples/phd_results/results_generator.py b/examples/phd_results/results_generator.py index c41d1417..baddb5cf 100644 --- a/examples/phd_results/results_generator.py +++ b/examples/phd_results/results_generator.py @@ -17,8 +17,8 @@ residence_time_analysis = { 'meta': { 'name': name, - 'run_full': False, - 'run_post': False, + 'run_full': True, + 'run_post': True, 'overwrite': True, }, 'incore_s': [10, 20, 30], @@ -27,45 +27,57 @@ } analysis_list.append(residence_time_analysis) -name = 'OpenMC Particles' -nps_analysis = { +name = 'decay_time_nodes' +decay_times_analysis = { 'meta': { 'name': name, 'run_full': True, 'run_post': True, - 'overwrite': True, + 'overwrite': True }, - 'nps': [10, 100, 500, 1000, 5000], + 'num_decay_times': [50, 100, 150, 200, 250, 400, 800], 'multi_id': [name] } -analysis_list.append(nps_analysis) +analysis_list.append(decay_times_analysis) +name = 'irrad_time' +decay_times_analysis = { + 'meta': { + 'name': name, + 'run_full': True, + 'run_post': True, + 'overwrite': True + }, + 'net_irrad_s': [1, 10, 100], + 'multi_id': [name] +} +analysis_list.append(decay_times_analysis) -name = 'Decay Times' -decay_time_analysis = { +name = 'omc_timestep' +decay_times_analysis = { 'meta': { 'name': name, 'run_full': True, 'run_post': True, - 'overwrite': True, + 'overwrite': True }, - 'num_decay_times': [50, 100, 200, 400, 800], + 'max_timestep': [0.1, 0.05, 0.01, 0.005, 0.001], 'multi_id': [name] } -analysis_list.append(decay_time_analysis) +analysis_list.append(decay_times_analysis) -name = 'Decay Time' -decay_time_analysis = { +name = 'total_decay_time' +total_decay_analysis = { 'meta': { 'name': name, 'run_full': True, 'run_post': True, - 'overwrite': True, + 'overwrite': True }, - 'decay_times': [150, 300, 600, 1200, 2400, 4800], + 'decay_time': [150, 300, 600, 1200, 2400, 4800], 'multi_id': [name] } -analysis_list.append(decay_time_analysis) +analysis_list.append(total_decay_analysis) def replace_value(input_data: dict, key: str, new_val: str|float|int) -> bool: diff --git a/mosden/multipostprocessing.py b/mosden/multipostprocessing.py index eb9d0fb2..34e32944 100644 --- a/mosden/multipostprocessing.py +++ b/mosden/multipostprocessing.py @@ -79,10 +79,16 @@ def _set_post_names(self): post.name = f'{post.num_decay_times} nodes' elif self._is_name('total_decay_time'): for post in self.posts: - post.name = f'T = {post.total_decay_time}s' + post.name = rf'$T_d$ = {post.total_decay_time}s' elif self._is_name('detailed_decay'): for post in self.posts: - post.name = f'T = {post.total_decay_time}s with {post.num_decay_times} nodes' + post.name = rf'$T_d$ = {post.total_decay_time}s with {post.num_decay_times} nodes' + elif self._is_name('irrad_time'): + for post in self.posts: + post.name = f'T = {post.net_irrad_s}' + elif self._is_name('omc_timestep'): + for post in self.posts: + post.name = rf'$\Delta t$ = {post.openmc_settings["max_timestep"]}' return None def _post_heatmap_setup(self) -> None: From 9a2d8d7ff9ff49e2d2177cfab21fbd3b8bfe6ffa Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 17 Mar 2026 09:58:38 -0500 Subject: [PATCH 075/170] Change min to max timestep --- mosden/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index 2c7fc9fb..37e0be5a 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -364,8 +364,8 @@ def get_irrad_index(self, single_time_val: bool) -> int: if single_time_val: return 0 - in_use_time = np.min((self.openmc_settings['min_timestep'], self.t_in)) - ex_use_time = np.min((self.openmc_settings['min_timestep'], self.t_ex)) + in_use_time = np.min((self.openmc_settings['max_timestep'], self.t_in)) + ex_use_time = np.min((self.openmc_settings['max_timestep'], self.t_ex)) if self.t_in == 0 and self.t_ex != 0: ratio = self.t_net / ex_use_time From eed22f76636094c4be045ffd858463e862ef50d9 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 17 Mar 2026 10:03:45 -0500 Subject: [PATCH 076/170] Update git ignore --- .gitignore | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index efc7e6de..69d8e632 100644 --- a/.gitignore +++ b/.gitignore @@ -172,7 +172,13 @@ cython_debug/ !/examples/**/input.json !/examples/**/*.py -/examples/phd_results/tintex/* +/examples/phd_results/* +!/examples/phd_results/input.json +!/examples/phd_results/results_generator.py +!/examples/phd_results/prk/input.json +!/examples/phd_results/prk/main.py +!/examples/phd_results/t_net_analysis/dataNet/* +!/examples/phd_results/t_net_analysis/analysis.py /examples/prelim_results/detailed_decay/* /examples/prelim_results/spacing_times/* From 41fac6cbb046e21c7546b41c704edb9cb56d83b1 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 17 Mar 2026 12:30:21 -0500 Subject: [PATCH 077/170] Remove incorrect data --- .../dataNet/intermediate_0.001_all.csv | 7 ------- .../dataNet/intermediate_0.001_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_0.01_all.csv | 7 ------- .../dataNet/intermediate_0.01_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_0.1_all.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_0.1_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_10_all.csv | 12 ++++++------ .../t_net_analysis/dataNet/intermediate_10_post.csv | 12 ++++++------ .../t_net_analysis/dataNet/intermediate_1200_all.csv | 7 ------- .../dataNet/intermediate_1200_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_120_all.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_120_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_1_all.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_1_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_2_all.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_2_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_30_all.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_30_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_3_all.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_3_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_4_all.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_4_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_5000_all.csv | 12 ++++++------ .../dataNet/intermediate_5000_post.csv | 12 ++++++------ .../t_net_analysis/dataNet/intermediate_5_all.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_5_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_600_all.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_600_post.csv | 7 ------- .../t_net_analysis/dataNet/pulse_0.00001_all.csv | 7 ------- .../t_net_analysis/dataNet/pulse_0.00001_post.csv | 7 ------- .../dataNumSteps5s/intermediate_1000_all.csv | 7 ------- .../dataNumSteps5s/intermediate_1000_post.csv | 7 ------- .../dataNumSteps5s/intermediate_100_all.csv | 7 ------- .../dataNumSteps5s/intermediate_100_post.csv | 7 ------- .../dataNumSteps5s/intermediate_10_all.csv | 7 ------- .../dataNumSteps5s/intermediate_10_post.csv | 7 ------- .../dataNumSteps5s/intermediate_1_all.csv | 7 ------- .../dataNumSteps5s/intermediate_1_post.csv | 7 ------- .../dataNumSteps5s/intermediate_50_all.csv | 7 ------- .../dataNumSteps5s/intermediate_50_post.csv | 7 ------- .../dataNumSteps5s/intermediate_5_all.csv | 7 ------- .../dataNumSteps5s/intermediate_5_post.csv | 7 ------- 42 files changed, 24 insertions(+), 290 deletions(-) delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_1200_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_1200_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_120_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_120_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_1_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_1_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_2_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_2_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_30_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_30_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_3_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_3_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_4_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_4_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_5_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_5_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_600_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_600_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_post.csv diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_all.csv deleted file mode 100644 index fe1c47e5..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006499096769369495,0.0,54.22394242342692,0.0 -0.003612551633452274,0.0,20.712549679607605,0.0 -0.006976008391641474,0.0,3.3845073029727235,0.0 -0.005607032005514416,0.0,0.8201904585702068,0.0 -0.0018402138932761744,0.0,0.12620856467784933,0.0 -8.381311020611309e-06,0.0,0.0010000000000000002,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_post.csv deleted file mode 100644 index c2a91f06..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.001_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006009856919977145,0.0,55.04748291105819,0.0 -0.0032551374913199435,0.0,22.133724839690096,0.0 -0.0032332651271008116,0.0,5.602973990360857,0.0 -0.006780884948189207,0.0,1.961760325227637,0.0 -0.00365763910509533,0.0,0.4698553892465339,0.0 -0.0011680076099961233,0.0,0.09534331347729975,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_all.csv deleted file mode 100644 index 5c812403..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006485018518832016,0.0,54.2469856753461,0.0 -0.0036040603696307905,0.0,20.749027901277156,0.0 -0.006900010280872543,0.0,3.4150939273763403,0.0 -0.005632050428006963,0.0,0.8399619029265551,0.0 -0.0018971833873130657,0.0,0.13065211904843477,0.0 -2.4623215498992977e-05,0.0,0.0010000000000000002,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_post.csv deleted file mode 100644 index 951243d8..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.01_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006008555876926074,0.0,55.04973097665621,0.0 -0.0032538616121506993,0.0,22.13821610446272,0.0 -0.003220838250943124,0.0,5.615787757111658,0.0 -0.00678174382603953,0.0,1.9667995273608267,0.0 -0.00366131834572984,0.0,0.4721474302593159,0.0 -0.00117658898775106,0.0,0.09601983117696204,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_all.csv deleted file mode 100644 index dc5fa92c..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006453473469655309,0.0,54.298815148000386,0.0 -0.0035848091840109324,0.0,20.83134371204134,0.0 -0.006722002274506182,0.0,3.487324533092996,0.0 -0.005685382325368996,0.0,0.8872719240352288,0.0 -0.002019732218546167,0.0,0.14274090925701588,0.0 -0.00017298158522748038,0.0,0.0023762578890053655,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_post.csv deleted file mode 100644 index 2c7782c8..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_0.1_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.000599786164298651,0.0,55.0682206693197,0.0 -0.003243239058797959,0.0,22.175399604072048,0.0 -0.0031186126524967495,0.0,5.724229027857738,0.0 -0.006786074919922997,0.0,2.0090780583378023,0.0 -0.0036899531367383153,0.0,0.4919526840121775,0.0 -0.0012493498153551366,0.0,0.10209310785234799,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv index f72d9abb..57d44509 100644 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0005907204232151493,0.0,55.22732091610048,0.0 -0.0031441874956869907,0.0,22.507083381283604,0.0 -0.0023844142629210387,0.0,6.813397911113515,0.0 -0.007363485845659069,0.0,2.275850551991717,0.0 -0.003648168543292984,0.0,0.5128876443699149,0.0 -0.0018097847340523881,0.0,0.04321723401443949,0.0 +0.000590657042474172,0.0,55.22855914277848,0.0 +0.003143630024285896,0.0,22.50906241870279,0.0 +0.002381745113846482,0.0,6.819401375171663,0.0 +0.007370522187930403,0.0,2.2763731423163236,0.0 +0.003644299325152716,0.0,0.5119327097328897,0.0 +0.00181196679425562,0.0,0.04260770816604993,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv index 017629fa..766da00e 100644 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0005870792293887829,0.0,55.289964797259024,0.0 -0.0030914678800217877,0.0,22.664616628706085,0.0 -0.0019688681906939974,0.0,7.588589786446466,0.0 -0.0064391555780816435,0.0,2.6414443366188616,0.0 -0.004439267410030921,0.0,0.799903764420208,0.0 -0.002129293201117738,0.0,0.15793294095181293,0.0 +0.0005871835779444647,0.0,55.28829353296257,0.0 +0.003093321810460667,0.0,22.659376804549193,0.0 +0.001980090377016196,0.0,7.5618884984067165,0.0 +0.006455245259384976,0.0,2.631845502166193,0.0 +0.004435937727030305,0.0,0.7925264492900274,0.0 +0.0021082086790258654,0.0,0.15561858787854457,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_all.csv deleted file mode 100644 index fd0b4219..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005777758000447569,0.0,55.46726307784736,0.0 -0.003014070646221825,0.0,22.957807948589082,0.0 -0.0019990809244505086,0.0,8.082141089792003,0.0 -0.007049954476460081,0.0,2.5368445835126616,0.0 -0.004374995284528601,0.0,0.6583272534405827,0.0 -0.0016872648060187287,0.0,0.12172020526783002,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_post.csv deleted file mode 100644 index 35a9eed0..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_1200_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005771080885334702,0.0,55.47761168843076,0.0 -0.0029960421406315875,0.0,23.003189274421793,0.0 -0.0019012565373335876,0.0,8.35620831202458,0.0 -0.006926863411307543,0.0,2.620276032784385,0.0 -0.004412697914806575,0.0,0.7121766849123173,0.0 -0.0018531329736106751,0.0,0.1389026704379304,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_120_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_120_all.csv deleted file mode 100644 index 317d8661..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_120_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005823400215057117,0.0,55.38630382837625,0.0 -0.0030897459200327363,0.0,22.743864037034047,0.0 -0.0023312673910747105,0.0,7.260463540180148,0.0 -0.007188639984811037,0.0,2.281422548703631,0.0 -0.005299839054028378,0.0,0.37494942046447,0.0 -0.0003861811628406449,0.0,0.011808495575342024,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_120_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_120_post.csv deleted file mode 100644 index 07b3a8fd..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_120_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005767048630914441,0.0,55.477220312818744,0.0 -0.0029564455268097263,0.0,23.089996196122005,0.0 -0.0017864532832818157,0.0,8.839865917748451,0.0 -0.006860686320503778,0.0,2.7158202487143988,0.0 -0.004538628126891252,0.0,0.750955358584509,0.0 -0.0019453670322669935,0.0,0.1444922641142176,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_1_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_1_all.csv deleted file mode 100644 index 437b7dd3..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_1_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006086262937084633,0.0,54.91640504645117,0.0 -0.0033250707126951905,0.0,21.87971705687883,0.0 -0.003949574576303563,0.0,4.970151056033985,0.0 -0.0066446222836115,0.0,1.6991109207325052,0.0 -0.003570886091169657,0.0,0.35787759324900703,0.0 -0.0012549488909106414,0.0,0.015288249158700713,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_1_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_1_post.csv deleted file mode 100644 index 5d00a83c..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_1_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005958154458226755,0.0,55.13710442225809,0.0 -0.003201467002514021,0.0,22.317924063808807,0.0 -0.002739069631935949,0.0,6.182045540269402,0.0 -0.006746951485608541,0.0,2.182126582675833,0.0 -0.003776253848630239,0.0,0.5845317036745138,0.0 -0.0016138318005039574,0.0,0.1289300613718118,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_2_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_2_all.csv deleted file mode 100644 index e6e98d69..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_2_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006263892162067747,0.0,54.61523783342842,0.0 -0.003461351085999831,0.0,21.346359447850258,0.0 -0.005463035391559748,0.0,4.053420132372419,0.0 -0.006225119025448004,0.0,1.2253311135018417,0.0 -0.0028132840954583683,0.0,0.19840416473769726,0.0 -0.0010237354709824056,0.0,0.004263335271984507,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_2_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_2_post.csv deleted file mode 100644 index 5b0cdf1b..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_2_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005938318006019015,0.0,55.17167215796692,0.0 -0.003178993193604193,0.0,22.392115022438382,0.0 -0.002551465382412492,0.0,6.448980277194463,0.0 -0.006687916480591118,0.0,2.279717171213451,0.0 -0.0038488166863012503,0.0,0.641530422099903,0.0 -0.0018012500083226714,0.0,0.1395154918970284,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_30_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_30_all.csv deleted file mode 100644 index d25ec2e0..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_30_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005911850193901523,0.0,55.22393043614616,0.0 -0.003163109413726762,0.0,22.46245897522971,0.0 -0.0028222439571752517,0.0,6.349704456768178,0.0 -0.007080343614618728,0.0,2.0901662589500822,0.0 -0.004831262210233585,0.0,0.35113048748943776,0.0 -0.0007442719988219486,0.0,0.0062679624222023445,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_30_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_30_post.csv deleted file mode 100644 index e305bd37..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_30_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005811024743039744,0.0,55.39526601544824,0.0 -0.002996173853064892,0.0,22.937958196181093,0.0 -0.0016607510618795024,0.0,8.78676461612742,0.0 -0.0065818428022054246,0.0,2.8330939407621774,0.0 -0.0046993321437068525,0.0,0.8258084004380751,0.0 -0.002138155087000719,0.0,0.157340620909389,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_3_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_3_all.csv deleted file mode 100644 index 014a8d0c..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_3_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006188858643760996,0.0,54.742546658750584,0.0 -0.0034075733491696794,0.0,21.562579701225726,0.0 -0.0048909808497902,0.0,4.365341577673077,0.0 -0.0066001300771524425,0.0,1.374740027500838,0.0 -0.003146833501667833,0.0,0.19276381383953434,0.0 -0.0009984691598396826,0.0,0.0022472902205434263,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_3_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_3_post.csv deleted file mode 100644 index 73ccc12e..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_3_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005920974849588064,0.0,55.20197603287414,0.0 -0.003158291408853417,0.0,22.458901690967924,0.0 -0.0023908047135946385,0.0,6.706526714901117,0.0 -0.0066181346070878985,0.0,2.370875249808899,0.0 -0.003969532986168156,0.0,0.6917857850932042,0.0 -0.001923344322672401,0.0,0.1463294252893909,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_4_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_4_all.csv deleted file mode 100644 index 233448c7..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_4_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006128170829504414,0.0,54.846004003273706,0.0 -0.0033607800074906225,0.0,21.74529226799735,0.0 -0.0043790713188775685,0.0,4.682629795900243,0.0 -0.006809123979373981,0.0,1.52674840336516,0.0 -0.0034690074340597496,0.0,0.22246950402019913,0.0 -0.0011326338446230708,0.0,0.002582898398175469,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_4_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_4_post.csv deleted file mode 100644 index a79a8b1f..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_4_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005913451669565439,0.0,55.21514052814437,0.0 -0.003148967018047109,0.0,22.488497265861213,0.0 -0.002322649109552858,0.0,6.825749901184098,0.0 -0.0065848230820852015,0.0,2.411759446983226,0.0 -0.004036181844800443,0.0,0.71253927043821,0.0 -0.001968557919406881,0.0,0.14896036242025062,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv index dd99a6eb..46ed28e9 100644 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0005720720872390899,0.0,55.55682831326315,0.0 -0.002830528099989927,0.0,23.38945677656511,0.0 -0.0014067311232208997,0.0,10.67381373520948,0.0 -0.005703624723978119,0.0,3.278896575815644,0.0 -0.005712734311083684,0.0,1.0504288768395829,0.0 -0.002479106453519196,0.0,0.16289560229757322,0.0 +0.0005769432314149624,0.0,55.483560984400675,0.0 +0.0030079663084403396,0.0,22.98187064507782,0.0 +0.002007667290188075,0.0,8.104042456019306,0.0 +0.007062770248202484,0.0,2.532617709184425,0.0 +0.0043721490792248945,0.0,0.6551731827511815,0.0 +0.0016774940235978254,0.0,0.12075250452387626,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv index 64a1dd88..85ff325a 100644 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv +++ b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0005762565600353954,0.0,55.4939659618683,0.0 -0.002988222570130418,0.0,23.031007268968427,0.0 -0.001887721237426173,0.0,8.431971951659571,0.0 -0.006925952785121379,0.0,2.6315263361703396,0.0 -0.004428071271774303,0.0,0.7158460020002585,0.0 -0.0018612510707719991,0.0,0.13926642607212225,0.0 +0.0005763522159885184,0.0,55.492507727928015,0.0 +0.0029906195874708163,0.0,23.0246793793513,0.0 +0.0018952694312858334,0.0,8.403478370299641,0.0 +0.006937292089908312,0.0,2.624193496912962,0.0 +0.0044262137281153606,0.0,0.7107029172360932,0.0 +0.0018453088259980548,0.0,0.13754303774294438,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_5_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5_all.csv deleted file mode 100644 index d20b7a8d..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_5_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006065600042876593,0.0,54.95335989582147,0.0 -0.0033086632440693857,0.0,21.94229132529539,0.0 -0.00383224697621714,0.0,5.088042543099311,0.0 -0.0070137738811966305,0.0,1.6983594001638218,0.0 -0.003089808491644879,0.0,0.3344261832340821,0.0 -0.0010397161906897053,0.0,0.020852576574656057,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_5_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5_post.csv deleted file mode 100644 index aae639e9..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_5_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005904156776584032,0.0,55.231422363828585,0.0 -0.003137137764313036,0.0,22.525617261725607,0.0 -0.002240262658999735,0.0,6.9794347163178,0.0 -0.006544054694288273,0.0,2.462834508422723,0.0 -0.004127920659416374,0.0,0.7361599998014058,0.0 -0.002015377041911152,0.0,0.1516341827883638,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_600_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_600_all.csv deleted file mode 100644 index 3df93ecd..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_600_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005789431597744432,0.0,55.45308337627322,0.0 -0.0030606650371916557,0.0,22.846884339999015,0.0 -0.002293762517943019,0.0,7.372470207605848,0.0 -0.007202992783117786,0.0,2.346831111495085,0.0 -0.004256297356130838,0.0,0.558691092398395,0.0 -0.0013756165479870746,0.0,0.09064126062053926,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_600_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_600_post.csv deleted file mode 100644 index 6d829269..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_600_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005762537167555658,0.0,55.49390818310142,0.0 -0.0029881579652593976,0.0,23.031149723077817,0.0 -0.001886672218267134,0.0,8.434057691141492,0.0 -0.006924716379900181,0.0,2.6324698838758764,0.0 -0.004429534624673338,0.0,0.7161978226253582,0.0 -0.001862019901422795,0.0,0.1393123536322186,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_all.csv b/examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_all.csv deleted file mode 100644 index 037a2fe4..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006483599627133113,0.0,54.249302430034945,0.0 -0.003603201783433704,0.0,20.75272053617694,0.0 -0.006892455512097611,0.0,3.418177728377391,0.0 -0.005634490916347498,0.0,0.8419229562786248,0.0 -0.0018999590391563853,0.0,0.13128248341716664,0.0 -2.8612956761155514e-05,0.0,0.004057200980891107,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_post.csv b/examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_post.csv deleted file mode 100644 index e55c9dad..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/pulse_0.00001_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006010003059852591,0.0,55.04723041412313,0.0 -0.003255280588350585,0.0,22.133220787208796,0.0 -0.0032346608600193516,0.0,5.601539640596733,0.0 -0.006780784272096461,0.0,1.9611956331472495,0.0 -0.0036572233997257285,0.0,0.46959941257806,0.0 -0.0011670464710297904,0.0,0.0952681389499337,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_all.csv deleted file mode 100644 index 504488b6..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006420567960255477,0.0,54.35638354908993,0.0 -0.003565325515196418,0.0,20.913531825418737,0.0 -0.006555873640894113,0.0,3.564083947100355,0.0 -0.005731549685976585,0.0,0.9271559743943968,0.0 -0.0020861411852095353,0.0,0.14872170634140372,0.0 -0.0001047485294252018,0.0,0.0018986318468918477,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_post.csv deleted file mode 100644 index ddb9d8d0..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1000_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005904184270829813,0.0,55.231374873684416,0.0 -0.003137174528005383,0.0,22.5255037134342,0.0 -0.0022405276301212516,0.0,6.978940690940743,0.0 -0.006544332105306523,0.0,2.4626475591897248,0.0 -0.004127867690696769,0.0,0.7360112413431618,0.0 -0.0020149751650604896,0.0,0.15158778232503106,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_all.csv deleted file mode 100644 index d20b7a8d..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006065600042876593,0.0,54.95335989582147,0.0 -0.0033086632440693857,0.0,21.94229132529539,0.0 -0.00383224697621714,0.0,5.088042543099311,0.0 -0.0070137738811966305,0.0,1.6983594001638218,0.0 -0.003089808491644879,0.0,0.3344261832340821,0.0 -0.0010397161906897053,0.0,0.020852576574656057,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_post.csv deleted file mode 100644 index aae639e9..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_100_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005904156776584032,0.0,55.231422363828585,0.0 -0.003137137764313036,0.0,22.525617261725607,0.0 -0.002240262658999735,0.0,6.9794347163178,0.0 -0.006544054694288273,0.0,2.462834508422723,0.0 -0.004127920659416374,0.0,0.7361599998014058,0.0 -0.002015377041911152,0.0,0.1516341827883638,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_all.csv deleted file mode 100644 index cfc5febb..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006040269933788191,0.0,54.99680567432679,0.0 -0.0032856673874108776,0.0,22.026042584018736,0.0 -0.003569557213842515,0.0,5.299852716912248,0.0 -0.0069782715302884124,0.0,1.8038796498336802,0.0 -0.004055442992768717,0.0,0.31053717635571987,0.0 -0.0018310736631602115,0.0,0.0035938010426241267,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_post.csv deleted file mode 100644 index f8f99a4c..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_10_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005904140511414849,0.0,55.23145144394892,0.0 -0.0031371175622057013,0.0,22.52568079668908,0.0 -0.0022401297336000223,0.0,6.979697394504298,0.0 -0.006544079642354292,0.0,2.462907449353168,0.0 -0.004128534894667884,0.0,0.7361235759565475,0.0 -0.0020150655483998285,0.0,0.15158001703723162,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_all.csv deleted file mode 100644 index c7793f66..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005904199394329888,0.0,55.23134874637851,0.0 -0.003137194550517086,0.0,22.525441574823233,0.0 -0.002240666610131754,0.0,6.9786766562306015,0.0 -0.006544460943285461,0.0,2.4625520610958915,0.0 -0.004127913806916037,0.0,0.7359334684585879,0.0 -0.0020146670128793702,0.0,0.151556528708939,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_post.csv deleted file mode 100644 index 4da0d19f..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_1_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.000590419742943124,0.0,55.231352150176455,0.0 -0.003137192073348421,0.0,22.525449438261457,0.0 -0.002240651631570589,0.0,6.978707107308105,0.0 -0.006544452484095048,0.0,2.462561599041238,0.0 -0.004127921451650911,0.0,0.7359392505586764,0.0 -0.002014684279741236,0.0,0.1515577482822932,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_all.csv deleted file mode 100644 index 04178049..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006021673340764964,0.0,55.0287678038575,0.0 -0.0032683262692956203,0.0,22.088595850884868,0.0 -0.0033994562172370464,0.0,5.459150334429745,0.0 -0.006950678380171376,0.0,1.8706376801161926,0.0 -0.0031023624324558532,0.0,0.45491148668105036,0.0 -0.001734702739560994,0.0,0.03995590427833553,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_post.csv deleted file mode 100644 index 1985b761..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_50_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005904113836468502,0.0,55.23149704607527,0.0 -0.0031370809698599666,0.0,22.52579297907246,0.0 -0.0022398495269453774,0.0,6.980202105897436,0.0 -0.0065436280451903785,0.0,2.4631259215900925,0.0 -0.004128378752750597,0.0,0.7363652006123198,0.0 -0.0020160858170970436,0.0,0.15158626009418205,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_all.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_all.csv deleted file mode 100644 index a6afaa77..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0006040487232770398,0.0,54.99643017005205,0.0 -0.0032858662091828266,0.0,22.02532205477871,0.0 -0.0035716480122779735,0.0,5.298012927607035,0.0 -0.006977954965265861,0.0,1.8031040644875136,0.0 -0.004054389619828634,0.0,0.3102762948529634,0.0 -0.0018267842223195466,0.0,0.003592586605047965,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_post.csv b/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_post.csv deleted file mode 100644 index cb319b3f..00000000 --- a/examples/phd_results/t_net_analysis/dataNumSteps5s/intermediate_5_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005904195202098858,0.0,55.231355487388406,0.0 -0.0031371883353184106,0.0,22.525460455184128,0.0 -0.002240618698716042,0.0,6.978761162369362,0.0 -0.006544314656410725,0.0,2.462597501401445,0.0 -0.004127531648290001,0.0,0.7360338131383783,0.0 -0.002015149201266732,0.0,0.15158482961626957,0.0 From 31896daf9613cd34ad6ce20238c94bc4979fafec Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 17 Mar 2026 12:30:53 -0500 Subject: [PATCH 078/170] Fix pulse and add another test for groupfit --- mosden/groupfit.py | 3 ++- tests/unit/test_groupfit.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index d9204ad8..5b9ad7b0 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -202,6 +202,7 @@ def _pulse_fit_function(self, yields = parameters[:self.num_groups] half_lives = parameters[self.num_groups:] counts: np.ndarray[float] = np.zeros(len(times)) + irrad_dt = np.diff(self.fission_times)[0] for group in range(self.num_groups): lam = np.log(2) / half_lives[group] a = yields[group] @@ -212,7 +213,7 @@ def _pulse_fit_function(self, counts: np.ndarray[object] = np.zeros( len(times), dtype=object) counts += (a * lam * unumpy.exp(-lam * times)) - return counts * self.fission_term[0] + return counts * self.refined_fission_term * irrad_dt def _saturation_fit_function(self, times: np.ndarray[float | object], diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index da619a9b..5345d360 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -393,6 +393,38 @@ def test_effective_fiss_many_ts(): assert np.isclose(eff_fiss, stat_fiss, atol=1e-2) assert np.isclose(eff_fiss, irrad_fiss[0][-1], atol=1e-2) + +def test_effective_fiss_saturation(): + input_path = './tests/unit/input/input.json' + grouper = Grouper(input_path) + + hl = 250e-3 + lam = np.log(2) / hl + lams = np.asarray([lam]) + + dt = 500 + t_net = 5000 + + grouper.fission_times = np.arange(0.0, t_net + dt, dt) + grouper.t_net = t_net + + t_mid = 0.5 * (grouper.fission_times[:-1] + grouper.fission_times[1:]) + fiss_scalar = 3.7 + full_fission = np.ones_like(t_mid) * fiss_scalar + + grouper.full_fission_term = full_fission + + grouper.refined_fission_term = 1 + + eff_fiss = grouper._get_effective_fission(lams, np.exp, np.expm1) + stat_fiss = grouper._get_saturation_fission_term(lam, np.exp) * fiss_scalar + grouper.full_fission_term = np.concatenate(([0], grouper.full_fission_term)) + irrad_fiss = grouper._get_irrad_fission_component(grouper.fission_times, lams, np.exp, np.expm1) + + assert np.isclose(eff_fiss, stat_fiss, atol=1e-8) + assert np.isclose(stat_fiss, fiss_scalar) + assert np.isclose(eff_fiss, irrad_fiss[0][-1], atol=1e-2) + def test_irrad_fit(): input_path = './tests/unit/input/input.json' grouper = Grouper(input_path) From 60576453883e3412f90b4734fcdf3af4dae67390 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 17 Mar 2026 13:46:40 -0500 Subject: [PATCH 079/170] Adjust time indexing for initial time value --- mosden/postprocessing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index 9a95e04b..cad7aa21 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -826,7 +826,7 @@ def _plot_nuclide_count_rates(self, num_stack: int = 1): times = list(concentration_data[nuc].keys()) nom_vals = list() std_devs = list() - for t in times[irrad_index+1:]: + for t in times[irrad_index:]: nom_val = concentration_data[nuc][t][0] std_dev = concentration_data[nuc][t][1] nom_vals.append(nom_val) @@ -1324,7 +1324,7 @@ def _get_data(self) -> dict[str: dict]: use_nucs.append(nuc) data_dict['net_nucs'] = use_nucs return data_dict - + def _get_sorted_dnp_data(self) -> tuple[dict, dict, dict]: """ Get the sorted delayed neutron precursor data by yield From f62fce695d10c37ff15ac7ffdd80d1543aa547a7 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 17 Mar 2026 14:28:42 -0500 Subject: [PATCH 080/170] Fix bug in preprocessing for multiple debug DNPs --- mosden/preprocessing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mosden/preprocessing.py b/mosden/preprocessing.py index f8b0997a..be44d429 100644 --- a/mosden/preprocessing.py +++ b/mosden/preprocessing.py @@ -88,9 +88,9 @@ def _add_debug_dnps(self) -> None: else: raise KeyError('Data type does not have a valid key') + data = self._read_processed_data(data_type) for nuc, nuc_data in self.debug_dnp_data.items(): debug_data = nuc_data[key] - data = self._read_processed_data(data_type) try: _, old_val = list(data.items())[0] except IndexError: From 1c52e059d0bae8efe9c0f523918931047ba38228 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 17 Mar 2026 14:29:07 -0500 Subject: [PATCH 081/170] Add a check if data empty --- examples/phd_results/t_net_analysis/analysis.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index aa32c4f8..b4eb6581 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -6,6 +6,8 @@ plt.style.use('mosden.plotting') def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yield=None): + if data_vals == {}: + return None formatted_data = defaultdict(list) formatted_data['yields'] = defaultdict(list) formatted_data['hls'] = defaultdict(list) From 3ebc3a6b8b709be5aefa8936ea69c797f748ddf8 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 17 Mar 2026 15:00:31 -0500 Subject: [PATCH 082/170] Fix bug in number of group evaluation --- mosden/countrate.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mosden/countrate.py b/mosden/countrate.py index 6950bbe6..6246a091 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -103,8 +103,9 @@ def _count_rate_from_groups(self) -> dict[str: list[float]]: else: use_times = self.use_times[irrad_index+1:] - parameters = np.zeros(grouper.num_groups * 2, dtype=object) - for i in range(grouper.num_groups): + num_groups = len(self.group_params['yield']) + parameters = np.zeros(num_groups * 2, dtype=object) + for i in range(num_groups): yield_val = ufloat( self.group_params['yield'][i], self.group_params['sigma yield'][i]) From 1d3f9af57adb08c40cfaccae284ebfe73478e874 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 17 Mar 2026 15:25:31 -0500 Subject: [PATCH 083/170] Add data generation script --- .../t_net_analysis/generate_data.py | 30 ++++++++ .../phd_results/t_net_analysis/input.json | 68 +++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 examples/phd_results/t_net_analysis/generate_data.py create mode 100644 examples/phd_results/t_net_analysis/input.json diff --git a/examples/phd_results/t_net_analysis/generate_data.py b/examples/phd_results/t_net_analysis/generate_data.py new file mode 100644 index 00000000..983dbf63 --- /dev/null +++ b/examples/phd_results/t_net_analysis/generate_data.py @@ -0,0 +1,30 @@ +import subprocess +import json +import shutil + + + +if __name__ == "__main__": + num_groups = [4, 6, 8, 10, 12] + irrad_times = [1e-4, 1e-3, 1e-2, 1e-1, 1, 1e1, 1e2, 1e3, 1e4] + for group in num_groups: + output_dir = f'./dataNet_{group}' + input_file = './input.json' + for T in irrad_times: + with open(input_file, 'r') as f: + data = json.load(f) + eval_method = 'post-irrad' + data['modeling_options']['residual_handling'] = [eval_method] + data['modeling_options']['incore_s'] = T + data['modeling_options']['net_irrad_s'] = T + with open(input_file, 'w') as f: + json.dump(data, f, indent=4) + + subprocess.run(['mosden', '-pre', input_file]) + subprocess.run(['mosden', '-m', input_file]) + shutil.move('./group_parameters.csv', f'{output_dir}/intermediate_{T}_{eval_method}.csv') + subprocess.run(['mosden', '-g', input_file]) + + eval_method = 'all' + data['modeling_options']['residual_handling'] = [eval_method] + shutil.move('./group_parameters.csv', f'{output_dir}/intermediate_{T}_{eval_method}.csv') diff --git a/examples/phd_results/t_net_analysis/input.json b/examples/phd_results/t_net_analysis/input.json new file mode 100644 index 00000000..6aa65496 --- /dev/null +++ b/examples/phd_results/t_net_analysis/input.json @@ -0,0 +1,68 @@ +{ + "name": "IAEA HF", + "file_options": { + "overwrite": { + "preprocessing": true, + "concentrations": true, + "count_rate": true, + "group_fitting": true, + "postprocessing": true, + "logger": true + }, + "unprocessed_data_dir": "/home/luke/github/mosden/mosden/data/unprocessed/", + "log_level": 20 + }, + "data_options": { + "half_life": "endfb71/decay/", + "cross_section": "", + "emission_probability": "endfb71/decay/", + "fission_yield": "endfb71/nfy/", + "decay_time_spacing": "log", + "temperature_K": 920, + "density_g_cm3": 2.3275, + "energy_MeV": 2.53e-08, + "fissile_fractions": { + "U235": 1.0 + } + }, + "modeling_options": { + "concentration_handling": "OMC", + "count_rate_handling": "data", + "residual_handling": [ + "post-irrad" + ], + "reprocessing_locations": [ + "excore" + ], + "reprocessing": { + "Xe": 0.0 + }, + "irrad_type": "intermediate", + "spatial_scaling": { + "flux": false, + "reprocessing": false + }, + "base_removal_scaling": 0.5, + "incore_s": 0.0001, + "excore_s": 0, + "net_irrad_s": 0.0001, + "decay_time": 600, + "num_decay_times": 100, + "openmc_settings": { + "nps": 5000, + "batches": 10, + "source": 1000.0, + "run_omc": true, + "write_fission_json": true, + "write_nuyield_json": true, + "max_timestep": 10000000000.0 + } + }, + "group_options": { + "num_groups": 12, + "method": "nlls", + "parameter_guesses": 10, + "samples": 1, + "sample_func": "normal" + } +} \ No newline at end of file From 8e7748696715817e780b46f889b05181761e39d0 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 18 Mar 2026 10:23:30 -0500 Subject: [PATCH 084/170] Fix bug in generate data to check that dir exists --- examples/phd_results/t_net_analysis/generate_data.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/phd_results/t_net_analysis/generate_data.py b/examples/phd_results/t_net_analysis/generate_data.py index 983dbf63..5fdf1002 100644 --- a/examples/phd_results/t_net_analysis/generate_data.py +++ b/examples/phd_results/t_net_analysis/generate_data.py @@ -1,6 +1,7 @@ import subprocess import json import shutil +import os @@ -22,6 +23,7 @@ subprocess.run(['mosden', '-pre', input_file]) subprocess.run(['mosden', '-m', input_file]) + os.makedirs(output_dir, exist_ok=True) shutil.move('./group_parameters.csv', f'{output_dir}/intermediate_{T}_{eval_method}.csv') subprocess.run(['mosden', '-g', input_file]) From eabdcd1dc8e77310dbbb163a1da043aa7c7c1637 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 18 Mar 2026 10:23:39 -0500 Subject: [PATCH 085/170] Update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 69d8e632..ec4d0f83 100644 --- a/.gitignore +++ b/.gitignore @@ -179,6 +179,8 @@ cython_debug/ !/examples/phd_results/prk/main.py !/examples/phd_results/t_net_analysis/dataNet/* !/examples/phd_results/t_net_analysis/analysis.py +!/examples/phd_results/t_net_analysis/generate_data.py +!/examples/phd_results/t_net_analysis/input.json /examples/prelim_results/detailed_decay/* /examples/prelim_results/spacing_times/* From ff9e48add1aa684c414cee128dc8d0bb610a003a Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 18 Mar 2026 10:33:50 -0500 Subject: [PATCH 086/170] Adjust input files to use iaea data with jeff CFYs --- examples/phd_results/t_net_analysis/input.json | 6 +++--- examples/prelim_results/input.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/phd_results/t_net_analysis/input.json b/examples/phd_results/t_net_analysis/input.json index 6aa65496..0d838022 100644 --- a/examples/phd_results/t_net_analysis/input.json +++ b/examples/phd_results/t_net_analysis/input.json @@ -13,10 +13,10 @@ "log_level": 20 }, "data_options": { - "half_life": "endfb71/decay/", + "half_life": "iaea/eval.csv", "cross_section": "", - "emission_probability": "endfb71/decay/", - "fission_yield": "endfb71/nfy/", + "emission_probability": "iaea/eval.csv", + "fission_yield": "jeff311/nfpy/", "decay_time_spacing": "log", "temperature_K": 920, "density_g_cm3": 2.3275, diff --git a/examples/prelim_results/input.json b/examples/prelim_results/input.json index cdf868b9..275bcc94 100644 --- a/examples/prelim_results/input.json +++ b/examples/prelim_results/input.json @@ -16,7 +16,7 @@ "half_life": "iaea/eval.csv", "cross_section": "", "emission_probability": "iaea/eval.csv", - "fission_yield": "endfb71/nfy/", + "fission_yield": "jeff311/nfpy/", "decay_time_spacing": "linear", "temperature_K": 920, "density_g_cm3": 2.3275, From d4d5a0b9cfff3a9d60a334b9036f0b230351e5ff Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 18 Mar 2026 12:03:13 -0500 Subject: [PATCH 087/170] Clean up t net analysis scripts --- .../phd_results/t_net_analysis/analysis.py | 19 ++++++++++++++----- .../t_net_analysis/generate_data.py | 2 ++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index b4eb6581..b6076674 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -79,13 +79,16 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel plt.savefig(f'stack_yields{namemod}.png') plt.close() -def build_data_dict(data_path=r'./dataNet/'): +def build_data_dict(data_path=r'./dataNet/', post_name='_post', all_name='_all'): def helper(pathmod): files = glob.glob(os.path.join(data_path, f"*{pathmod}.csv")) data = {} + split_offset = 1 + if '_' in data_path: + split_offset += 1 for file in files: file: str = file - time = float(file.split('_')[1]) + time = float(file.split('_')[split_offset]) data[time] = dict() file_data = CSVHandler(file).read_vector_csv() data[time]['yields'] = file_data['yield'] @@ -93,14 +96,20 @@ def helper(pathmod): data = dict(sorted(data.items())) return data - post_data = helper('_post') - all_data = helper('_all') + post_data = helper(post_name) + all_data = helper(all_name) return post_data, all_data if __name__ == '__main__': - #actual_yield = 0.018655 actual_yield = None + + post_data, all_data = build_data_dict('./dataNet_4', post_name='_post-irrad') + print(post_data) + print(all_data) + plot_data(post_data, '_post-irrad', actual_yield=actual_yield) + plot_data(all_data, '_all', actual_yield=actual_yield) + post_data, all_data = build_data_dict() plot_data(post_data, '_post', actual_yield=actual_yield) plot_data(all_data, '_all', actual_yield=actual_yield) diff --git a/examples/phd_results/t_net_analysis/generate_data.py b/examples/phd_results/t_net_analysis/generate_data.py index 5fdf1002..3368f4c7 100644 --- a/examples/phd_results/t_net_analysis/generate_data.py +++ b/examples/phd_results/t_net_analysis/generate_data.py @@ -18,6 +18,8 @@ data['modeling_options']['residual_handling'] = [eval_method] data['modeling_options']['incore_s'] = T data['modeling_options']['net_irrad_s'] = T + data['group_options']['num_groups'] = group + with open(input_file, 'w') as f: json.dump(data, f, indent=4) From 2c615d109a07721842cf24c9e2dfa2748b31c24e Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 18 Mar 2026 12:12:31 -0500 Subject: [PATCH 088/170] Fix test bug --- mosden/groupfit.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 5b9ad7b0..6d51228d 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -202,7 +202,9 @@ def _pulse_fit_function(self, yields = parameters[:self.num_groups] half_lives = parameters[self.num_groups:] counts: np.ndarray[float] = np.zeros(len(times)) - irrad_dt = np.diff(self.fission_times)[0] + irrad_dt = 1 + if self.fission_times: + irrad_dt = np.diff(self.fission_times)[0] for group in range(self.num_groups): lam = np.log(2) / half_lives[group] a = yields[group] From af2927eb2f3bf14923252e3201bcd4557e4d4070 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 18 Mar 2026 13:01:56 -0500 Subject: [PATCH 089/170] Adjust analysis file names --- examples/phd_results/t_net_analysis/analysis.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index b6076674..e4f7f0f4 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -105,10 +105,8 @@ def helper(pathmod): actual_yield = None post_data, all_data = build_data_dict('./dataNet_4', post_name='_post-irrad') - print(post_data) - print(all_data) - plot_data(post_data, '_post-irrad', actual_yield=actual_yield) - plot_data(all_data, '_all', actual_yield=actual_yield) + plot_data(post_data, '_4_post-irrad', actual_yield=actual_yield) + plot_data(all_data, '_4_all', actual_yield=actual_yield) post_data, all_data = build_data_dict() plot_data(post_data, '_post', actual_yield=actual_yield) From c9dfaebc2f5537a932fff92327df5ad09b6896e5 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 18 Mar 2026 13:04:07 -0500 Subject: [PATCH 090/170] Clean up analysis plot gen --- examples/phd_results/t_net_analysis/analysis.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index e4f7f0f4..deb6e902 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -104,9 +104,12 @@ def helper(pathmod): if __name__ == '__main__': actual_yield = None - post_data, all_data = build_data_dict('./dataNet_4', post_name='_post-irrad') - plot_data(post_data, '_4_post-irrad', actual_yield=actual_yield) - plot_data(all_data, '_4_all', actual_yield=actual_yield) + groups = [4, 6] + + for group in groups: + post_data, all_data = build_data_dict(f'./dataNet_{group}', post_name='_post-irrad') + plot_data(post_data, f'_{group}_post-irrad', actual_yield=actual_yield) + plot_data(all_data, f'_{group}_all', actual_yield=actual_yield) post_data, all_data = build_data_dict() plot_data(post_data, '_post', actual_yield=actual_yield) From 472346bf46dbdf44bcaf74fdf954074bbe52883f Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 18 Mar 2026 13:43:14 -0500 Subject: [PATCH 091/170] Add reactivity and clean up PRK data --- examples/phd_results/prk/input.json | 41 +++++++++++++++++++++------- examples/phd_results/prk/main.py | 42 +++++++++++++++++++++++++---- 2 files changed, 69 insertions(+), 14 deletions(-) diff --git a/examples/phd_results/prk/input.json b/examples/phd_results/prk/input.json index b8cc6588..6044b36d 100644 --- a/examples/phd_results/prk/input.json +++ b/examples/phd_results/prk/input.json @@ -1,11 +1,14 @@ { - "o_selections": ["intermediate", "intermediate [all]"], - "selections": ["pulse", "intermediate", "intermediate [all]", "saturation", "saturation [all]"], + "p_selections": ["pulse (12 Group)", "pulse (6 Group)"], + "s_selections": ["saturation (12 Group)", "saturation (6 Group)"], + "12_selections": ["saturation (12 Group)", "pulse (12 Group)"], + "selections": ["saturation (6 Group)", "pulse (6 Group)"], + "o_selections": ["pulse", "intermediate", "intermediate [all]", "saturation", "saturation [all]"], "problem": "step_relative", "euler_mode": "backward", "time_steps": [1e-3], "tf": 60, - "step_relative_insertion": 0.5, + "step_relative_insertion": 0.2, "rho_max_dollars": 0.5, "neutrons_per_fission": 2.4, "gen_time": 2e-5, @@ -18,22 +21,42 @@ "yields": [0.00052, 0.00346, 0.00310, 0.00624, 0.00182, 0.00066], "hls": [55.89897, 22.72614, 6.24457, 2.30281, 0.60802, 0.23028] }, - "pulse": { + "saturation (12 Group)": { "description": "Calculated using ENDFB71 data, post-irrad, (0.00001,0) 0.00001 second irradiation, 100 decay times, 600 decay seconds", - "yields": [0.000601, 0.00325528, 0.00323466, 0.00678078, 0.0036572234, 0.001167046], - "hls": [55.047, 22.133, 5.6015, 1.9612, 0.4696, 0.095268] + "yields": [0.0005656472215,0.002198207066,0.001338003382,0.001114144677,0.00179710018,0.003603305635,0.002678179231,0.001702561476,0.002182161502,0.0005623352814,0.0007872725729,0.0001679907224], + "hls": [55.6500063,24.49692111,16.44366392,6.276748628,4.514150811,2.46927962,1.670333697,0.8350727044,0.4320683266,0.2024997748,0.1033482276,0.05331534079] }, - "intermediate": { + "pulse (12 Group)": { + "description": "Calculated using ENDFB71 data, post-irrad, (0.00001,0) 0.00001 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.0005656706143,0.002202477958,0.001337748909,0.001606337851,0.001828872942,0.004722277575,0.00168008456,0.001554452503,0.001816418866,0.0005476500869,0.0006872078538,0.0001477146368], + "hls": [55.6496383,24.49045138,16.41335757,5.972034253,3.90605527,2.173831207,1.235484705,0.6680106567,0.3927728687,0.1715945748,0.09783430498,0.05206679763] + }, + "pulse (6 Group)": { + "description": "Calculated using ENDFB71 data, post-irrad, (0.00001,0) 0.00001 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.0006011, 0.00325654, 0.00324718397, 0.0067798565, 0.0036530347, 0.001158503], + "hls": [55.04571, 22.12906, 5.588844, 1.95615, 0.46736, 0.094685] + }, + "intermediate (10s) (Six Group)": { + "description": "Calculated using ENDFB71 data, post-irrad, (1,0) 30 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.0005870577906,0.003091138473,0.00196693276,0.006436218583,0.004439662967,0.002133811102], + "hls": [55.29033369,22.66557932,7.593278713,2.643128317,0.801288212,0.1582260609] + }, + "intermediate (10s) [all]": { + "description": "Calculated using ENDFB71 data, all, (1,0) 30 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.000591267, 0.00316419, 0.002834526, 0.007079536, 0.00482916, 0.00073507], + "hls": [55.222525, 22.459077, 6.3348598, 2.0843, 0.349625, 0.006170445] + }, + "intermediate (30s) (Six Group)": { "description": "Calculated using ENDFB71 data, post-irrad, (1,0) 30 second irradiation, 100 decay times, 600 decay seconds", "yields": [0.0005810767, 0.002995618, 0.00165845, 0.0065752589, 0.004701, 0.00214555], "hls": [55.395699, 22.939397, 8.79516, 2.8361, 0.82819, 0.15777] }, - "intermediate [all]": { + "intermediate (30s) [all]": { "description": "Calculated using ENDFB71 data, all, (1,0) 30 second irradiation, 100 decay times, 600 decay seconds", "yields": [0.000591267, 0.00316419, 0.002834526, 0.007079536, 0.00482916, 0.00073507], "hls": [55.222525, 22.459077, 6.3348598, 2.0843, 0.349625, 0.006170445] }, - "saturation": { + "saturation (6 Group)": { "description": "Calculated using ENDFB71 data, post-irrad, (60,0) 1200 second irradiation, 100 decay times, 600 decay seconds", "yields": [0.000576267, 0.002988244, 0.0018862306, 0.0069244077, 0.0044298534, 0.001862336], "hls": [55.4938, 23.030678, 8.43461, 2.63272, 0.7163197, 0.139332515] diff --git a/examples/phd_results/prk/main.py b/examples/phd_results/prk/main.py index c32f3f95..09eeb55d 100644 --- a/examples/phd_results/prk/main.py +++ b/examples/phd_results/prk/main.py @@ -26,9 +26,13 @@ def _solve_handler(self, dt, rho, problem): total_yield = self.data['neutrons_per_fission'] betas = np.asarray(cur_data['yields']) / total_yield beta_eff = np.sum(betas) + self.betaeff = beta_eff lams = np.log(2) / cur_data['hls'] + self.betas = betas + self.lams = lams p0 = self.data['p0'] gen = self.data['gen_time'] + self.gen = gen times = np.arange(0, self.data['tf']+dt, dt) power_vals = list() @@ -190,16 +194,17 @@ def _write_output(self, write_path, times, powers, precs, rho, cur_data, dt, def compare_results(self, full_data): linestyles = [':', '-.', '--'] + colors = self.post.get_colors(len(full_data)) for pi, (problem, data) in enumerate(full_data.items()): label: str = problem.capitalize() times = data['times'] power = data['power'] - plt.plot(times, power, label=label, linestyle=linestyles[pi%len(linestyles)]) + plt.plot(times, power, label=label, linestyle=linestyles[pi%len(linestyles)], color=colors[pi]) print(f'{label} {power[-1] = }') plt.legend() #plt.xscale('log') plt.xlabel('Time [s]') - plt.ylabel('Relative Power') + plt.ylabel(r'$n$') plt.savefig(f'compare_power.png') plt.close() @@ -212,10 +217,11 @@ def compare_results(self, full_data): base_label = label base_power = power power_diff = (base_power - power) / ((base_power + power) / 2) * 100 - plt.plot(times, power_diff, label=f'{label}', linestyle=linestyles[pi%len(linestyles)]) + plt.plot(times, power_diff, label=f'{label}', linestyle=linestyles[pi%len(linestyles)], color=colors[pi]) plt.legend() plt.xlabel('Time [s]') - plt.ylabel(f'Power Difference from {base_label} [\%]') + plt.xscale('log') + plt.ylabel(rf'$\Delta n$ from {base_label} [\%]') plt.savefig(f'compare_power_percent.png') plt.close() @@ -226,7 +232,7 @@ def compare_results(self, full_data): concs = data['concs'] conc = np.asarray(concs)[:, group] - plt.plot(times, conc, label=label, linestyle=linestyles[pi%len(linestyles)]) + plt.plot(times, conc, label=label, linestyle=linestyles[pi%len(linestyles)], color=colors[pi]) print(f'{label} {conc[-1] = }') plt.legend() plt.xlabel('Time [s]') @@ -234,6 +240,31 @@ def compare_results(self, full_data): plt.savefig(f'compare_conc_{group+1}.png') plt.close() + for pi, (problem, data) in enumerate(full_data.items()): + label: str = problem.capitalize() + times = data['times'] + power = np.asarray(data['power']) + base_rho = data['reactivity'] + reactivity_data = list() + for t in times: + reactivity_data.append(base_rho(t)) + concs = data['concs'] + conc_contribution = 0 + for group in range(self.num_groups): + conc = np.asarray(concs)[:, group] + conc_contribution += self.gen/power * self.betas[group] * self.lams[group] + reactivity = np.asarray(reactivity_data) - self.betaeff + np.asarray(conc_contribution) + print(f'{reactivity_data[-1] = }') + print(f'{conc_contribution[-1] = }') + print(f'{self.betaeff = }') + plt.plot(times, reactivity, label=f'{label}', linestyle=linestyles[pi%len(linestyles)], color=colors[pi]) + plt.legend() + plt.xlabel('Time [s]') + plt.ylabel(f'Reactivity') + plt.savefig(f'compare_reactivity.png') + plt.close() + + return def solve(self): @@ -259,6 +290,7 @@ def solve(self): compare_data[problem]['times'] = times compare_data[problem]['power'] = powers compare_data[problem]['concs'] = precs + compare_data[problem]['reactivity'] = rho self._dt_plot(time_collections, power_collections, dt_list) if len(problems) > 1: From b70e4e4291a3254ef494c230aafd9db7b33b5b03 Mon Sep 17 00:00:00 2001 From: Luke Seifert Date: Sat, 21 Mar 2026 20:02:24 -0500 Subject: [PATCH 092/170] Fix num groups in from group counts --- mosden/countrate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mosden/countrate.py b/mosden/countrate.py index 6246a091..f46a35f5 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -113,7 +113,7 @@ def _count_rate_from_groups(self) -> dict[str: list[float]]: self.group_params['half_life'][i], self.group_params['sigma half_life'][i]) parameters[i] = yield_val - parameters[grouper.num_groups + i] = half_life + parameter[num_groups + i] = half_life grouper._set_refined_fission_term(self.decay_times) parameters = grouper._restructure_intermediate_yields(parameters, to_yield=False) From 6bf8eedd29145e0a6cc199ce6f265879bb843a8b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 09:15:40 -0500 Subject: [PATCH 093/170] Add error checking for failed least squares solve --- mosden/groupfit.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 6d51228d..73abac7b 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -8,7 +8,7 @@ from time import time import warnings from tqdm import tqdm -from scipy.linalg import svd +from scipy.linalg import svd, LinAlgError from typing import Callable @@ -569,17 +569,20 @@ def _nonlinear_least_squares(self, best = None for x0 in tqdm(starts): - result = least_squares(self._residual_function, - x0, - bounds=bounds, - method='trf', - x_scale='jac', - ftol=1e-12, - gtol=1e-12, - xtol=1e-12, - verbose=0, - max_nfev=1e6, - args=(times, counts, count_err, irrad_counts, irrad_times, fit_function)) + try: + result = least_squares(self._residual_function, + x0, + bounds=bounds, + method='trf', + x_scale='jac', + ftol=1e-12, + gtol=1e-12, + xtol=1e-12, + verbose=0, + max_nfev=1e6, + args=(times, counts, count_err, irrad_counts, irrad_times, fit_function)) + except LinAlgError: + continue if best is None or result.cost < best.cost: best = result result = best From 062cda3371436b8e2ccf818b5556aafc029371d4 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 09:19:32 -0500 Subject: [PATCH 094/170] Change phd results to iaea jeff data --- examples/phd_results/input.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/phd_results/input.json b/examples/phd_results/input.json index e5b378d9..002a4803 100644 --- a/examples/phd_results/input.json +++ b/examples/phd_results/input.json @@ -13,10 +13,10 @@ "log_level": 20 }, "data_options": { - "half_life": "endfb71/decay/", + "half_life": "iaea/eval.csv", "cross_section": "", - "emission_probability": "endfb71/decay/", - "fission_yield": "endfb71/nfy/", + "emission_probability": "iaea/eval.csv", + "fission_yield": "jeff311/nfpy/", "decay_time_spacing": "log", "temperature_K": 920, "density_g_cm3": 2.3275, From 2ad0cc00947b91c0a8096ffcc54f0e00d12fe27f Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 09:25:42 -0500 Subject: [PATCH 095/170] Clean up analysis marker indexing and diff --- examples/phd_results/t_net_analysis/analysis.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index deb6e902..0e14ca80 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -21,6 +21,7 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel total_yield = sum(vals) total_yields.append(total_yield) max_index = total_yields.index(max(total_yields)) + min_index = total_yields.index(min(total_yields)) for t_net, params in data_vals.items(): formatted_data['xs'].append(t_net) @@ -29,7 +30,7 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel formatted_data[name][group].append(val) markers = ['.', '*', '>', '<', 'v', '^'] - print(f'Maximum yield of {total_yields[max_index]} at {formatted_data["xs"][max_index]}s') + print(f'Max - min yield of {round(1e5*(total_yields[max_index] - total_yields[min_index]), 4)} pcm ({namemod})') plt.plot(formatted_data['xs'], total_yields, label="Yields") if actual_yield: plt.hlines(actual_yield, min(formatted_data['xs']), max(formatted_data['xs']), label='Actual Yield', @@ -48,7 +49,7 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel continue for group, params in data.items(): plt.plot(formatted_data['xs'], params, label=f'Group {group+1}', - marker=markers[group], linestyle='--', markersize=5, + marker=markers[group % len(markers)], linestyle='--', markersize=5, linewidth=1) plt.legend() plt.xlabel(xlab) @@ -104,7 +105,7 @@ def helper(pathmod): if __name__ == '__main__': actual_yield = None - groups = [4, 6] + groups = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13]#, 14] for group in groups: post_data, all_data = build_data_dict(f'./dataNet_{group}', post_name='_post-irrad') From cc7d523bb1b39ba055030b3303c0a0feb519d5d2 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 10:25:07 -0500 Subject: [PATCH 096/170] Clean up analysis --- .../phd_results/t_net_analysis/analysis.py | 75 +++++++++++++++++-- 1 file changed, 68 insertions(+), 7 deletions(-) diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index 0e14ca80..0b2226a3 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -2,17 +2,16 @@ from collections import defaultdict from mosden.utils.csv_handler import CSVHandler import glob +import numpy as np import os +from mosden.postprocessing import PostProcess plt.style.use('mosden.plotting') -def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yield=None): - if data_vals == {}: - return None +def _cleanup_data(data_vals): formatted_data = defaultdict(list) formatted_data['yields'] = defaultdict(list) formatted_data['hls'] = defaultdict(list) formatted_data["xs"] = [] - xscale = 'log' total_yields = [] for t, params in data_vals.items(): @@ -20,14 +19,22 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel if key == 'yields': total_yield = sum(vals) total_yields.append(total_yield) - max_index = total_yields.index(max(total_yields)) - min_index = total_yields.index(min(total_yields)) for t_net, params in data_vals.items(): formatted_data['xs'].append(t_net) for name, data in params.items(): for group, val in enumerate(data): formatted_data[name][group].append(val) + return formatted_data, total_yields + + +def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yield=None): + if data_vals == {}: + return None + formatted_data, total_yields = _cleanup_data(data_vals) + xscale = 'log' + max_index = total_yields.index(max(total_yields)) + min_index = total_yields.index(min(total_yields)) markers = ['.', '*', '>', '<', 'v', '^'] print(f'Max - min yield of {round(1e5*(total_yields[max_index] - total_yields[min_index]), 4)} pcm ({namemod})') @@ -80,6 +87,56 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel plt.savefig(f'stack_yields{namemod}.png') plt.close() +def plot_accumulated_data(accumulated_data): + data = list() + groups = list() + for group, data_vals in accumulated_data.items(): + formatted_data, total_yields = _cleanup_data(data_vals) + times = formatted_data['xs'] + groups.append(group) + data.append(total_yields) + data = np.asarray(data).T + + + + + post = PostProcess(None) + colors = post.get_colors(len(data)) + markers = post.markers + for i in range(len(data)): + plt.plot(groups, data[i], label=f"T = {times[i]}", + marker=markers[i % len(markers)], + color=colors[i], linestyle='--', + linewidth=0.75, + markersize=5) + plt.xlabel('Number of Groups') + plt.ylabel(r'$\nu_d$') + plt.legend() + plt.tight_layout() + plt.savefig(f'total_yield_groups.png') + plt.close() + + + diffs = list() + for i in range(len(data[0])): + diff = max(data[:, i]) - min(data[:, i]) + diffs.append(1e5 * diff) + + plt.plot(groups, diffs, color='black') + plt.xlabel('Number of Groups') + plt.yscale('log') + plt.ylabel(r'$\Delta \nu_d $ $[pcm]$') + plt.tight_layout() + plt.savefig(f'total_yield_diff.png') + plt.close() + + + + + return None + + + def build_data_dict(data_path=r'./dataNet/', post_name='_post', all_name='_all'): def helper(pathmod): files = glob.glob(os.path.join(data_path, f"*{pathmod}.csv")) @@ -105,12 +162,16 @@ def helper(pathmod): if __name__ == '__main__': actual_yield = None - groups = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13]#, 14] + groups = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13] + accumulated_data = dict() for group in groups: post_data, all_data = build_data_dict(f'./dataNet_{group}', post_name='_post-irrad') plot_data(post_data, f'_{group}_post-irrad', actual_yield=actual_yield) plot_data(all_data, f'_{group}_all', actual_yield=actual_yield) + accumulated_data[group] = post_data + + plot_accumulated_data(accumulated_data) post_data, all_data = build_data_dict() plot_data(post_data, '_post', actual_yield=actual_yield) From 787d0225fa0d8e0e59f9d9b513b7b4c6c3b3ae07 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 10:33:38 -0500 Subject: [PATCH 097/170] FIx preprocessing for fast energy --- mosden/preprocessing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mosden/preprocessing.py b/mosden/preprocessing.py index be44d429..46e749e3 100644 --- a/mosden/preprocessing.py +++ b/mosden/preprocessing.py @@ -552,14 +552,14 @@ def _fit_fy_endf(self, Dictionary containing the fitted fission yield data. """ fit_FY_endf: dict[str: float] = {} - endf_nucs: list[str] = list(fys[0].keys()) + endf_nucs: list[str] = list(set().union(*[e.keys() for e in fys])) energy_index: int = np.argmin( np.abs( np.array(energies) - self.energy_MeV * 1e6)) for i, nuc in enumerate(endf_nucs): - fission_yield = fys[energy_index][nuc] + fission_yield = fys[energy_index].get(nuc, ufloat(0.0, 0.0)) uncert = fission_yield.s if fission_yield.s == 0.0: uncert = 1e-12 From 440fb3f1d942d7a9a0a747a1ed27b13675c94451 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 10:33:48 -0500 Subject: [PATCH 098/170] Add index error handling in post --- mosden/postprocessing.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index cad7aa21..abba8302 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -44,6 +44,8 @@ def __init__(self, input_path: str) -> None: self.MC_yields, self.MC_half_lives = self._get_MC_group_params() except KeyError: self.logger.warning('Postdata does not exist') + except IndexError: + self.logger.warning('Could not access data at target index') grouper = Grouper(input_path) self.refined_fission_term = grouper._set_refined_fission_term(self.decay_times) From 275b4bc2e8c5df776d10fb82fc7d736bd20ebfc0 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 10:39:27 -0500 Subject: [PATCH 099/170] Fix typo --- mosden/countrate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mosden/countrate.py b/mosden/countrate.py index f46a35f5..2abbc80c 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -113,7 +113,7 @@ def _count_rate_from_groups(self) -> dict[str: list[float]]: self.group_params['half_life'][i], self.group_params['sigma half_life'][i]) parameters[i] = yield_val - parameter[num_groups + i] = half_life + parameters[num_groups + i] = half_life grouper._set_refined_fission_term(self.decay_times) parameters = grouper._restructure_intermediate_yields(parameters, to_yield=False) From 616b17075df67ee7327255472a3c2d032f518a59 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 10:51:57 -0500 Subject: [PATCH 100/170] Add a new analysis for direct comparison of shape --- .../phd_results/t_net_analysis/analysis.py | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index 0b2226a3..89badb14 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -45,7 +45,7 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel plt.legend() plt.xscale(xscale) plt.xlabel(xlab) - plt.ylabel('Total Yield') + plt.ylabel(r'$\nu_d$') plt.savefig(f'total_yield{namemod}.png') plt.close() @@ -94,15 +94,31 @@ def plot_accumulated_data(accumulated_data): formatted_data, total_yields = _cleanup_data(data_vals) times = formatted_data['xs'] groups.append(group) - data.append(total_yields) - data = np.asarray(data).T + data.append(total_yields) + + post = PostProcess(None) + colors = post.get_colors(len(data)) + markers = post.markers + + for group in range(len(data)): + plt.plot(times, data[group], label=f"{groups[group]} Groups", + marker=markers[group % len(markers)], + color=colors[group], linestyle='--', + linewidth=0.75, + markersize=5) + plt.xlabel(r'Irradiation Time $[s]$') + plt.ylabel(r'$\nu_d$') + plt.xscale('log') + plt.legend() + plt.savefig(f'multiple_group_yields.png') + plt.close() - post = PostProcess(None) + data = np.asarray(data).T colors = post.get_colors(len(data)) - markers = post.markers + for i in range(len(data)): plt.plot(groups, data[i], label=f"T = {times[i]}", marker=markers[i % len(markers)], From c8601b6516359b67a14ad393529f7f442dc2dd0d Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 11:19:18 -0500 Subject: [PATCH 101/170] Remove extra data files --- examples/phd_results/t_net_analysis/analysis.py | 11 +---------- .../t_net_analysis/dataNet/intermediate_10_all.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_10_post.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_5000_all.csv | 7 ------- .../t_net_analysis/dataNet/intermediate_5000_post.csv | 7 ------- 5 files changed, 1 insertion(+), 38 deletions(-) delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv delete mode 100644 examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index 89badb14..10b2e0f2 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -187,13 +187,4 @@ def helper(pathmod): plot_data(all_data, f'_{group}_all', actual_yield=actual_yield) accumulated_data[group] = post_data - plot_accumulated_data(accumulated_data) - - post_data, all_data = build_data_dict() - plot_data(post_data, '_post', actual_yield=actual_yield) - plot_data(all_data, '_all', actual_yield=actual_yield) - - post_data, all_data = build_data_dict('./dataNumSteps5s/') - xlab = r'Number of Irradiation Time Steps' - plot_data(post_data, '_post_dt', xlab, actual_yield=actual_yield) - plot_data(all_data, '_all_dt', xlab, actual_yield=actual_yield) \ No newline at end of file + plot_accumulated_data(accumulated_data) \ No newline at end of file diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv deleted file mode 100644 index 57d44509..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_10_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.000590657042474172,0.0,55.22855914277848,0.0 -0.003143630024285896,0.0,22.50906241870279,0.0 -0.002381745113846482,0.0,6.819401375171663,0.0 -0.007370522187930403,0.0,2.2763731423163236,0.0 -0.003644299325152716,0.0,0.5119327097328897,0.0 -0.00181196679425562,0.0,0.04260770816604993,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv deleted file mode 100644 index 766da00e..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_10_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005871835779444647,0.0,55.28829353296257,0.0 -0.003093321810460667,0.0,22.659376804549193,0.0 -0.001980090377016196,0.0,7.5618884984067165,0.0 -0.006455245259384976,0.0,2.631845502166193,0.0 -0.004435937727030305,0.0,0.7925264492900274,0.0 -0.0021082086790258654,0.0,0.15561858787854457,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv deleted file mode 100644 index 46ed28e9..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_all.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005769432314149624,0.0,55.483560984400675,0.0 -0.0030079663084403396,0.0,22.98187064507782,0.0 -0.002007667290188075,0.0,8.104042456019306,0.0 -0.007062770248202484,0.0,2.532617709184425,0.0 -0.0043721490792248945,0.0,0.6551731827511815,0.0 -0.0016774940235978254,0.0,0.12075250452387626,0.0 diff --git a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv b/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv deleted file mode 100644 index 85ff325a..00000000 --- a/examples/phd_results/t_net_analysis/dataNet/intermediate_5000_post.csv +++ /dev/null @@ -1,7 +0,0 @@ -yield,sigma yield,half_life,sigma half_life -0.0005763522159885184,0.0,55.492507727928015,0.0 -0.0029906195874708163,0.0,23.0246793793513,0.0 -0.0018952694312858334,0.0,8.403478370299641,0.0 -0.006937292089908312,0.0,2.624193496912962,0.0 -0.0044262137281153606,0.0,0.7107029172360932,0.0 -0.0018453088259980548,0.0,0.13754303774294438,0.0 From 5a04fac142d207938a311c04897c525b338413a0 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 13:29:26 -0500 Subject: [PATCH 102/170] Restructure data download and add JEFF 40 OMC chain --- download_data.sh | 184 ++++++++++++++++++++++++++--------------------- 1 file changed, 101 insertions(+), 83 deletions(-) diff --git a/download_data.sh b/download_data.sh index ab23a4f1..74762a5c 100644 --- a/download_data.sh +++ b/download_data.sh @@ -17,76 +17,102 @@ roman_to_int() { esac } +download_endf_data() { + local ENDF_VERSION="$1" + + local LOWERCASE_VERSION + LOWERCASE_VERSION=$(echo "${ENDF_VERSION//./}" | tr '[:upper:]' '[:lower:]') + + local ROMAN_PART="${LOWERCASE_VERSION//[0-9]/}" + local DIGIT_PART="${LOWERCASE_VERSION//[^0-9]/}" + local INTEGER_VALUE + INTEGER_VALUE=$(roman_to_int "$ROMAN_PART") + LOWERCASE_VERSION="${INTEGER_VALUE}${DIGIT_PART}" + + local ENDF_DIR="${DATA_DIR}/endfb${LOWERCASE_VERSION}" + local NFY_DIR="${ENDF_DIR}" + local XS_DIR="${ENDF_DIR}/xs" + local decay_DIR="${ENDF_DIR}" + mkdir -p "$NFY_DIR" + mkdir -p "$XS_DIR" + + local SEPARATOR decay_SEPARATOR XS_URL + if [[ "${ENDF_VERSION}" == "VII.1" ]]; then + SEPARATOR="-" + decay_SEPARATOR="-" + XS_URL="https://anl.box.com/shared/static/9igk353zpy8fn9ttvtrqgzvw1vtejoz6.xz" + elif [[ "${ENDF_VERSION}" == "VIII.0" ]]; then + SEPARATOR="_" + decay_SEPARATOR="_" + XS_URL="https://anl.box.com/shared/static/uhbxlrx7hvxqw27psymfbhi7bx7s6u6a.xz" + else + echo "Unsupported ENDF version: ${ENDF_VERSION}" >&2 + return 1 + fi + + # NFY data + local NFY_ZIP_NAME="ENDF-B-${ENDF_VERSION}${SEPARATOR}nfy.zip" + local NFY_URL="https://www.nndc.bnl.gov/endf-b${INTEGER_VALUE}.${DIGIT_PART}/zips/${NFY_ZIP_NAME}" + local TEMP_ZIP="${NFY_DIR}/${NFY_ZIP_NAME}" + echo "Downloading NFY data for ENDF/B-${ENDF_VERSION}..." + echo "Accessing ${NFY_URL}" + wget -4 --show-progress -O "$TEMP_ZIP" "$NFY_URL" + echo "Extracting NFY data..." + unzip "$TEMP_ZIP" -d "$NFY_DIR" + rm "$TEMP_ZIP" + if [[ "${ENDF_VERSION}" == "VIII.0" ]]; then + mv "${NFY_DIR}/ENDF-B-${ENDF_VERSION}${SEPARATOR}nfy" "${NFY_DIR}/nfy" + fi + echo "NFY data handled" + + # Decay data + local decay_ZIP_NAME="ENDF-B-${ENDF_VERSION}${decay_SEPARATOR}decay.zip" + local decay_URL="https://www.nndc.bnl.gov/endf-b${INTEGER_VALUE}.${DIGIT_PART}/zips/${decay_ZIP_NAME}" + TEMP_ZIP="${decay_DIR}/${decay_ZIP_NAME}" + echo "Downloading decay data for ENDF/B-${ENDF_VERSION}..." + echo "Accessing ${decay_URL}" + wget -4 --show-progress -O "$TEMP_ZIP" "$decay_URL" + echo "Extracting decay data..." + unzip "$TEMP_ZIP" -d "$decay_DIR" + rm "$TEMP_ZIP" + if [[ "${ENDF_VERSION}" == "VIII.0" ]]; then + mv "${decay_DIR}/ENDF-B-${ENDF_VERSION}${decay_SEPARATOR}decay" "${decay_DIR}/decay" + fi + echo "Decay data handled" + + # Cross section data + TEMP_ZIP="${XS_DIR}/XS.tar.xz" + echo "Downloading cross section data for ENDF/B-${ENDF_VERSION}..." + wget -4 --show-progress -O "$TEMP_ZIP" "$XS_URL" + echo "Extracting XS data" + tar -xvf "$TEMP_ZIP" -C "$XS_DIR" --strip-components=1 + rm "$TEMP_ZIP" + echo "Cross section data handled" + + # OpenMC chain data + local OPENMC_DIR="${ENDF_DIR}/omcchain/" + mkdir -p "$OPENMC_DIR" + echo "Getting OpenMC chain data for ENDF/B-${ENDF_VERSION}..." + wget -4 -q --show-progress -O "${OPENMC_DIR}chain_casl_pwr.xml" "https://anl.box.com/shared/static/3nvnasacm2b56716oh5hyndxdyauh5gs.xml" + wget -4 -q --show-progress -O "${OPENMC_DIR}chain_casl_sfr.xml" "https://anl.box.com/shared/static/9fqbq87j0tx4m6vfl06pl4ccc0hwamg9.xml" + if [[ "${ENDF_VERSION}" == "VII.1" ]]; then + wget -4 -q --show-progress -O "${OPENMC_DIR}chain_endfb71_pwr.xml" "https://anl.box.com/shared/static/os1u896bwsbopurpgas72bi6aij2zzdc.xml" + wget -4 -q --show-progress -O "${OPENMC_DIR}chain_endfb71_sfr.xml" "https://anl.box.com/shared/static/9058zje1gm0ekd93hja542su50pccvj0.xml" + elif [[ "${ENDF_VERSION}" == "VIII.0" ]]; then + wget -4 -q --show-progress -O "${OPENMC_DIR}chain_endfb80_pwr.xml" "https://anl.box.com/shared/static/nyezmyuofd4eqt6wzd626lqth7wvpprr.xml" + wget -4 -q --show-progress -O "${OPENMC_DIR}chain_endfb80_sfr.xml" "https://anl.box.com/shared/static/x3kp739hr5upmeqpbwx9zk9ep04fnmtg.xml" + fi + echo "OpenMC chain data collected" +} + DATA_DIR="mosden/data/unprocessed" +rm -rf "$DATA_DIR" mkdir -p "$DATA_DIR" # ENDF -------------------------------------------------------------------- -ENDF_VERSION="VII.1" -ALLOWED_VERSIONS=("VIII.0" "VII.1") - -if [[ ! " ${ALLOWED_VERSIONS[*]} " =~ " ${ENDF_VERSION} " ]]; then - echo "Error: Invalid ENDF version '${ENDF_VERSION}'" - echo "Allowed versions: ${ALLOWED_VERSIONS[*]}" - exit 1 -fi - -LOWERCASE_VERSION=$(echo "${ENDF_VERSION//./}" | tr '[:upper:]' '[:lower:]') - -ROMAN_PART="${LOWERCASE_VERSION//[0-9]/}" -DIGIT_PART="${LOWERCASE_VERSION//[^0-9]/}" -INTEGER_VALUE=$(roman_to_int "$ROMAN_PART") -LOWERCASE_VERSION="${INTEGER_VALUE}${DIGIT_PART}" - -ENDF_DIR="${DATA_DIR}/endfb${LOWERCASE_VERSION}" -NFY_DIR="${ENDF_DIR}" -XS_DIR="${ENDF_DIR}/xs" -decay_DIR="${ENDF_DIR}" -mkdir -p "$NFY_DIR" -mkdir -p "$XS_DIR" - -if [[ "${ENDF_VERSION}" == "VII.1" ]]; then - SEPARATOR="-" - decay_SEPARATOR="-" - XS_URL="https://anl.box.com/shared/static/9igk353zpy8fn9ttvtrqgzvw1vtejoz6.xz" -elif [[ "${ENDF_VERSION}" == "VIII.0" ]]; then - SEPARATOR="_" - decay_SEPARATOR="_" - XS_URL="https://anl.box.com/shared/static/uhbxlrx7hvxqw27psymfbhi7bx7s6u6a.xz" -fi - -NFY_ZIP_NAME="ENDF-B-${ENDF_VERSION}${SEPARATOR}nfy.zip" -NFY_URL="https://www.nndc.bnl.gov/endf-b${INTEGER_VALUE}.${DIGIT_PART}/zips/${NFY_ZIP_NAME}" - -echo "Downloading NFY data for ENDF/B-${ENDF_VERSION}..." -TEMP_ZIP="${NFY_DIR}/${NFY_ZIP_NAME}" -echo "Accessing ${NFY_URL}" -wget -4 --show-progress -O "$TEMP_ZIP" "$NFY_URL" -echo "Extracting NFY data..." -unzip "$TEMP_ZIP" -d "$NFY_DIR" -rm "$TEMP_ZIP" -echo "NFY data handled" - -decay_ZIP_NAME="ENDF-B-${ENDF_VERSION}${decay_SEPARATOR}decay.zip" -decay_URL="https://www.nndc.bnl.gov/endf-b${INTEGER_VALUE}.${DIGIT_PART}/zips/${decay_ZIP_NAME}" - -echo "Downloading decay data for ENDF/B-${ENDF_VERSION}..." -TEMP_ZIP="${decay_DIR}/${decay_ZIP_NAME}" -echo "Accessing ${decay_URL}" -wget -4 --show-progress -O "$TEMP_ZIP" "$decay_URL" -echo "Extracting decay data..." -unzip "$TEMP_ZIP" -d "$decay_DIR" -rm "$TEMP_ZIP" -echo "Decay data handled" - - -echo "Downloading cross section data for ENDF/B-${ENDF_VERSION}..." -TEMP_ZIP="${XS_DIR}/XS.tar.xz" -wget -4 --show-progress -O "$TEMP_ZIP" "$XS_URL" -echo "Extracting XS data" -tar -xvf "$TEMP_ZIP" -C "$XS_DIR" --strip-components=1 -rm "$TEMP_ZIP" -echo "Cross section data handled" +download_endf_data "VII.1" +download_endf_data "VIII.0" # /ENDF -------------------------------------------------------------------- @@ -94,13 +120,7 @@ echo "Cross section data handled" # JEFF -------------------------------------------------------------------- JEFF_VERSION="3.1.1" -ALLOWED_VERSIONS=("3.1.1") -if [[ ! " ${ALLOWED_VERSIONS[*]} " =~ " ${JEFF_VERSION} " ]]; then - echo "Error: Invalid JEFF version '${JEFF_VERSION}'" - echo "Allowed versions: ${ALLOWED_VERSIONS[*]}" - exit 1 -fi JEFF_VERSION_NOP="${JEFF_VERSION//./}" JEFF_DIR="${DATA_DIR}/jeff${JEFF_VERSION_NOP}" @@ -125,6 +145,16 @@ rm "$NFY_DIR"/*.zip echo "NFY data handled" +JEFF_VERSION="4.0" +JEFF_VERSION_NOP="${JEFF_VERSION//./}" +JEFF_DIR="${DATA_DIR}/jeff${JEFF_VERSION_NOP}" +OPENMC_DIR="${JEFF_DIR}/omcchain/" +mkdir -p "$OPENMC_DIR" +echo "Getting OpenMC chain data for JEFF-4.0..." +wget -4 -q --show-progress -O "${OPENMC_DIR}chain_jeff40_pwr.xml" "https://anl.box.com/shared/static/qpcfyrctoffb34m4dwyxz2vgp8tim8e7.xml" +wget -4 -q --show-progress -O "${OPENMC_DIR}chain_jeff40_sfr.xml" "https://anl.box.com/shared/static/p6cettxz3ovbp151qg7bc3k9ov0zt3wm.xml" +echo "OpenMC chain data collected" + # /JEFF -------------------------------------------------------------------- # IAEA -------------------------------------------------------------------- @@ -139,15 +169,3 @@ echo "Saved to $IAEA_FILE" # /IAEA -------------------------------------------------------------------- -# OpenMC -------------------------------------------------------------------- -OPENMC_DIR="${ENDF_DIR}/omcchain/" -mkdir -p "$OPENMC_DIR" -wget -4 -q --show-progress -O "${OPENMC_DIR}chain_casl_pwr.xml" "https://anl.box.com/shared/static/3nvnasacm2b56716oh5hyndxdyauh5gs.xml" -wget -4 -q --show-progress -O "${OPENMC_DIR}chain_casl_sfr.xml" "https://anl.box.com/shared/static/9fqbq87j0tx4m6vfl06pl4ccc0hwamg9.xml" -if [[ "${ENDF_VERSION}" == "VII.1" ]]; then - wget -4 -q --show-progress -O "${OPENMC_DIR}chain_endfb71_pwr.xml" "https://anl.box.com/shared/static/os1u896bwsbopurpgas72bi6aij2zzdc.xml" - wget -4 -q --show-progress -O "${OPENMC_DIR}chain_endfb71_sfr.xml" "https://anl.box.com/shared/static/9058zje1gm0ekd93hja542su50pccvj0.xml" -elif [[ "${ENDF_VERSION}" == "VIII.0" ]]; then - wget -4 -q --show-progress -O "${OPENMC_DIR}chain_endfb71_pwr.xml" "https://anl.box.com/shared/static/nyezmyuofd4eqt6wzd626lqth7wvpprr.xml" - wget -4 -q --show-progress -O "${OPENMC_DIR}chain_endfb71_sfr.xml" "https://anl.box.com/shared/static/x3kp739hr5upmeqpbwx9zk9ep04fnmtg.xml" -fi From fa9b077946237b862098b3f88ca3418eb675b51d Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 13:46:28 -0500 Subject: [PATCH 103/170] Update schema for new data and JEFF 4.0 data --- download_data.sh | 77 +++++++++++++++++------------- mosden/templates/input_schema.json | 2 +- 2 files changed, 44 insertions(+), 35 deletions(-) diff --git a/download_data.sh b/download_data.sh index 74762a5c..6910b4f7 100644 --- a/download_data.sh +++ b/download_data.sh @@ -17,6 +17,47 @@ roman_to_int() { esac } +download_jeff_data() { + local JEFF_VERSION="$1" + + local JEFF_VERSION_NOP="${JEFF_VERSION//./}" + local JEFF_DIR="${DATA_DIR}/jeff${JEFF_VERSION_NOP}" + local NFY_DIR="${JEFF_DIR}/nfpy/" + mkdir -p "$NFY_DIR" + echo "Saving data to ${NFY_DIR}" + + local JEFF_URL + if [[ "${JEFF_VERSION}" == "3.1.1" || "${JEFF_VERSION}" == "4.0" ]]; then + JEFF_URL="https://www-nds.iaea.org/public/download-endf/JEFF-${JEFF_VERSION}/nfpy/" + else + echo "Unsupported JEFF version: ${JEFF_VERSION}" >&2 + return 1 + fi + + echo "Downloading NFY data for JEFF-${JEFF_VERSION}..." + echo "Accessing ${JEFF_URL}" + wget -4 --show-progress --recursive --no-parent --accept "*.zip" --no-host-directories --cut-dirs=3 -P "${JEFF_DIR}" "$JEFF_URL" + + echo "Extracting NFY data..." + for f in "$NFY_DIR"/*.zip; do + unzip "$f" -d "$NFY_DIR" + + + if [[ "${JEFF_VERSION}" == "4.0" ]]; then + OPENMC_DIR="${JEFF_DIR}/omcchain/" + mkdir -p "$OPENMC_DIR" + echo "Getting OpenMC chain data for JEFF-4.0..." + wget -4 -q --show-progress -O "${OPENMC_DIR}chain_jeff40_pwr.xml" "https://anl.box.com/shared/static/qpcfyrctoffb34m4dwyxz2vgp8tim8e7.xml" + wget -4 -q --show-progress -O "${OPENMC_DIR}chain_jeff40_sfr.xml" "https://anl.box.com/shared/static/p6cettxz3ovbp151qg7bc3k9ov0zt3wm.xml" + echo "OpenMC chain data collected" + fi + done + + echo "Removing zip files..." + rm "$NFY_DIR"/*.zip + echo "NFY data handled" +} + download_endf_data() { local ENDF_VERSION="$1" @@ -119,41 +160,9 @@ download_endf_data "VIII.0" # JEFF -------------------------------------------------------------------- -JEFF_VERSION="3.1.1" -JEFF_VERSION_NOP="${JEFF_VERSION//./}" - -JEFF_DIR="${DATA_DIR}/jeff${JEFF_VERSION_NOP}" -NFY_DIR="${JEFF_DIR}/nfpy/" -mkdir -p "$NFY_DIR" -echo "Saving data to ${NFY_DIR}" - -if [[ "${JEFF_VERSION}" == "3.1.1" ]]; then - JEFF_URL="https://www-nds.iaea.org/public/download-endf/JEFF-${JEFF_VERSION}/nfpy/" -fi - - -echo "Downloading NFY data for JEFF-${JEFF_VERSION}..." -echo "Accessing ${JEFF_URL}" -wget -4 --show-progress --recursive --no-parent --accept "*.zip" --no-host-directories --cut-dirs=3 -P "${JEFF_DIR}" "$JEFF_URL" -echo "Extracting NFY data..." -for f in "$NFY_DIR"/*.zip; do - unzip "$f" -d "$NFY_DIR" -done -echo "Removing zip files..." -rm "$NFY_DIR"/*.zip -echo "NFY data handled" - - -JEFF_VERSION="4.0" -JEFF_VERSION_NOP="${JEFF_VERSION//./}" -JEFF_DIR="${DATA_DIR}/jeff${JEFF_VERSION_NOP}" -OPENMC_DIR="${JEFF_DIR}/omcchain/" -mkdir -p "$OPENMC_DIR" -echo "Getting OpenMC chain data for JEFF-4.0..." -wget -4 -q --show-progress -O "${OPENMC_DIR}chain_jeff40_pwr.xml" "https://anl.box.com/shared/static/qpcfyrctoffb34m4dwyxz2vgp8tim8e7.xml" -wget -4 -q --show-progress -O "${OPENMC_DIR}chain_jeff40_sfr.xml" "https://anl.box.com/shared/static/p6cettxz3ovbp151qg7bc3k9ov0zt3wm.xml" -echo "OpenMC chain data collected" +download_jeff_data "3.1.1" +download_jeff_data "4.0" # /JEFF -------------------------------------------------------------------- diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index 8cce33c1..a6e9973d 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -103,7 +103,7 @@ "fission_yield": { "type": "string", "description": "Path to the fission yield data", - "pattern": "^(?:.*/)?(endfb71/nfy/|jeff311/nfpy/|omcchain/chain_test.xml|omcchain/four_dnp_test.xml)$" + "pattern": "^(?:.*/)?(jeff40/nfpy/|endfb71/nfy/|jeff311/nfpy/|omcchain/chain_test.xml|omcchain/four_dnp_test.xml)$" }, "decay_time_spacing": { "type": "string", From ffd110ff02bbdc7953a63da64f1d8be5579e6f4b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 14:37:15 -0500 Subject: [PATCH 104/170] Update schema to handle new data --- mosden/templates/input_schema.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index a6e9973d..153bd738 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -84,7 +84,7 @@ "description": "Path to the half-life unprocessed data", "oneOf": [ { - "enum": ["iaea/eval.csv", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv"] + "enum": ["iaea/eval.csv", "endfb80/decay/", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv"] }, { "pattern": "^([A-Za-z0-9]+/)?omcchain/.+\\.xml" @@ -98,12 +98,12 @@ "emission_probability": { "type": "string", "description": "Path to the emission probability data", - "enum": ["iaea/eval.csv", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv"] + "enum": ["iaea/eval.csv", "endfb80/decay/", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv"] }, "fission_yield": { "type": "string", "description": "Path to the fission yield data", - "pattern": "^(?:.*/)?(jeff40/nfpy/|endfb71/nfy/|jeff311/nfpy/|omcchain/chain_test.xml|omcchain/four_dnp_test.xml)$" + "pattern": "^(?:.*/)?(jeff40/nfpy/|endfb80/nfy/|endfb71/nfy/|jeff311/nfpy/|omcchain/chain_test.xml|omcchain/four_dnp_test.xml)$" }, "decay_time_spacing": { "type": "string", From 2931c5c6df6373c8dbdba01443ddb09b07f0d1c4 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 23 Mar 2026 15:47:08 -0500 Subject: [PATCH 105/170] Switch to jeff4.0 --- examples/phd_results/t_net_analysis/generate_data.py | 2 +- examples/phd_results/t_net_analysis/input.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/phd_results/t_net_analysis/generate_data.py b/examples/phd_results/t_net_analysis/generate_data.py index 3368f4c7..f75ed412 100644 --- a/examples/phd_results/t_net_analysis/generate_data.py +++ b/examples/phd_results/t_net_analysis/generate_data.py @@ -6,7 +6,7 @@ if __name__ == "__main__": - num_groups = [4, 6, 8, 10, 12] + num_groups = [4, 5, 6, 7, 8, 9, 12, 20, 40, 80, 100] irrad_times = [1e-4, 1e-3, 1e-2, 1e-1, 1, 1e1, 1e2, 1e3, 1e4] for group in num_groups: output_dir = f'./dataNet_{group}' diff --git a/examples/phd_results/t_net_analysis/input.json b/examples/phd_results/t_net_analysis/input.json index 0d838022..dad119a3 100644 --- a/examples/phd_results/t_net_analysis/input.json +++ b/examples/phd_results/t_net_analysis/input.json @@ -16,7 +16,7 @@ "half_life": "iaea/eval.csv", "cross_section": "", "emission_probability": "iaea/eval.csv", - "fission_yield": "jeff311/nfpy/", + "fission_yield": "jeff40/nfpy/", "decay_time_spacing": "log", "temperature_K": 920, "density_g_cm3": 2.3275, @@ -53,6 +53,7 @@ "batches": 10, "source": 1000.0, "run_omc": true, + "chain": "jeff40/omcchain/chain_jeff40_pwr.xml", "write_fission_json": true, "write_nuyield_json": true, "max_timestep": 10000000000.0 From 566f4b6fc08a2a589d24d4e92a6295d2ce1928ef Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Mar 2026 11:14:36 -0500 Subject: [PATCH 106/170] Increase half life noice to account for 100 second half-life --- mosden/groupfit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 73abac7b..d28d919f 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -561,7 +561,7 @@ def _nonlinear_least_squares(self, if self.irrad_type == 'intermediate': setup_noise = np.random.uniform(1e-2, 1, self.num_groups) y_noise = 0.9 * counts[0] * setup_noise / np.sum(setup_noise) - hl_noise = 10 ** np.random.uniform(-2, 1, size=self.num_groups) + hl_noise = 10 ** np.random.uniform(-2, 2, size=self.num_groups) x0 = np.concatenate((np.ones(self.num_groups) * y_noise, np.ones(self.num_groups) * hl_noise)) starts.append(x0) From 27970e765b7afbee13e65b7fbcace3769bed74e7 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Mar 2026 11:26:15 -0500 Subject: [PATCH 107/170] Update example inputs --- examples/high_fidelity/input.json | 13 ++++++----- examples/iaea_matching/input.json | 4 ++-- examples/zero_dnps/input.json | 38 +++++++++++++++++++++++-------- 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/examples/high_fidelity/input.json b/examples/high_fidelity/input.json index 2c0a8ad2..756407ca 100644 --- a/examples/high_fidelity/input.json +++ b/examples/high_fidelity/input.json @@ -12,10 +12,10 @@ "log_level": 20 }, "data_options": { - "half_life": "endfb71/decay/", + "half_life": "iaea/eval.csv", "cross_section": "", - "emission_probability": "endfb71/decay/", - "fission_yield": "endfb71/nfy/", + "emission_probability": "iaea/eval.csv", + "fission_yield": "jeff40/nfpy/", "decay_time_spacing": "log", "temperature_K": 920, "density_g_cm3": 2.3275, @@ -25,7 +25,7 @@ }, "debug_dnps": { "Zz99": { - "yield": 1.0, + "yield": 0.0, "half_life_s": 10, "pn": 1, "parent": { @@ -49,15 +49,16 @@ "reprocessing": false }, "base_removal_scaling": 0.5, - "incore_s": 50, + "incore_s": 1e-5, "excore_s": 0, - "net_irrad_s": 5000, + "net_irrad_s": 1e-5, "decay_time": 600, "num_decay_times": 100, "openmc_settings": { "nps": 5000, "batches": 10, "source": 1e3, + "chain": "jeff40/omcchain/chain_jeff40_pwr.xml", "run_omc": true, "write_fission_json": true, "write_nuyield_json": true, diff --git a/examples/iaea_matching/input.json b/examples/iaea_matching/input.json index 80785dcd..db7aaec1 100644 --- a/examples/iaea_matching/input.json +++ b/examples/iaea_matching/input.json @@ -33,9 +33,9 @@ "Xe": 0.0 }, "irrad_type": "saturation", - "incore_s": 10, + "incore_s": 4200, "excore_s": 0, - "net_irrad_s": 420, + "net_irrad_s": 4200, "decay_time": 120, "num_decay_times": 800 }, diff --git a/examples/zero_dnps/input.json b/examples/zero_dnps/input.json index 24c70593..6c2dcf47 100644 --- a/examples/zero_dnps/input.json +++ b/examples/zero_dnps/input.json @@ -1,5 +1,5 @@ { - "name": "Four DNPs", + "name": "Zero DNPs", "file_options": { "overwrite": { "preprocessing": false, @@ -25,13 +25,31 @@ "U235": 1.0 }, "debug_dnps": { - "Zz99": { - "yield": 0.5, - "half_life_s": 3, - "pn": 1, + "Zi137": { + "yield": 0.0262236, + "half_life_s": 24.5, + "pn": 0.0714, "parent": { - "yield": 0.5, - "half_life_s": 0.3 + "yield": 0.003924, + "half_life_s": 2.49 + } + }, + "Zbr87": { + "yield": 0.0127177, + "half_life_s": 55, + "pn": 0.026, + "parent": { + "yield": 0.00731, + "half_life_s": 5.29 + } + }, + "Zrb94": { + "yield": 0.0156647, + "half_life_s": 2.702, + "pn": 0.105, + "parent": { + "yield": 0.000868149, + "half_life_s": 0.212 } } } @@ -44,13 +62,13 @@ "reprocessing": { "Xe": 0.0 }, - "irrad_type": "intermediate", + "irrad_type": "pulse", "spatial_scaling": { "flux": false, "reprocessing": false }, "base_removal_scaling": 0.5, - "incore_s": 1e-6, + "incore_s": 1e-5, "excore_s": 0, "net_irrad_s": 1e-5, "decay_time": 600, @@ -66,7 +84,7 @@ } }, "group_options": { - "num_groups": 1, + "num_groups": 3, "method": "nlls", "parameter_guesses": 10, "samples": 1, From a1b7a9d3814a9ed83ff18d26448e88c241b39732 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Mar 2026 11:26:26 -0500 Subject: [PATCH 108/170] Add fast pulse results to prk --- examples/phd_results/prk/input.json | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/examples/phd_results/prk/input.json b/examples/phd_results/prk/input.json index 6044b36d..c3dc764f 100644 --- a/examples/phd_results/prk/input.json +++ b/examples/phd_results/prk/input.json @@ -2,16 +2,18 @@ "p_selections": ["pulse (12 Group)", "pulse (6 Group)"], "s_selections": ["saturation (12 Group)", "saturation (6 Group)"], "12_selections": ["saturation (12 Group)", "pulse (12 Group)"], - "selections": ["saturation (6 Group)", "pulse (6 Group)"], + "selections": ["fast pulse (9 Group)", "fast pulse (6 Group)"], + "_selections": ["saturation (6 Group)", "pulse (6 Group)"], "o_selections": ["pulse", "intermediate", "intermediate [all]", "saturation", "saturation [all]"], "problem": "step_relative", "euler_mode": "backward", "time_steps": [1e-3], - "tf": 60, - "step_relative_insertion": 0.2, + "tf": 50, + "step_relative_insertion": 0.25, "rho_max_dollars": 0.5, "neutrons_per_fission": 2.4, - "gen_time": 2e-5, + "gen_time": 2e-7, + "old_gen_time": 2e-5, "p0": 1, "rho_amplitude": 750e-5, "rho_relative_amplitude": 0.25, @@ -21,6 +23,16 @@ "yields": [0.00052, 0.00346, 0.00310, 0.00624, 0.00182, 0.00066], "hls": [55.89897, 22.72614, 6.24457, 2.30281, 0.60802, 0.23028] }, + "fast pulse (6 Group)": { + "description": "Calculated using IAEA and JEFF40 data, post-irrad, (0.00001,0) 0.00001 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.0005021036685,0.00341460966,0.00229365229,0.006027459811,0.002630153928,0.001228086463], + "hls": [55.252769,22.90792575,6.728068058,2.402756955,0.7460524157,0.2679809025] + }, + "fast pulse (9 Group)": { + "description": "Calculated using IAEA and JEFF40 data, post-irrad, (0.00001,0) 0.00001 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.000479918173,0.002619743119,0.001167517464,0.002326700163,0.003923848714,0.002732455985,0.00181996685,0.0009886137857,3.76E-05], + "hls": [55.69299478,24.42762052,16.26819865,5.50448835,2.617191233,1.499191457,0.5528582752,0.278688309,0.09965688659] + }, "saturation (12 Group)": { "description": "Calculated using ENDFB71 data, post-irrad, (0.00001,0) 0.00001 second irradiation, 100 decay times, 600 decay seconds", "yields": [0.0005656472215,0.002198207066,0.001338003382,0.001114144677,0.00179710018,0.003603305635,0.002678179231,0.001702561476,0.002182161502,0.0005623352814,0.0007872725729,0.0001679907224], From 73402e92e1e083fe1f67d1bd4d7d6a4efd43a41d Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Mar 2026 11:27:01 -0500 Subject: [PATCH 109/170] Change to title case and add colors --- examples/phd_results/prk/main.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/examples/phd_results/prk/main.py b/examples/phd_results/prk/main.py index 09eeb55d..c84f7e77 100644 --- a/examples/phd_results/prk/main.py +++ b/examples/phd_results/prk/main.py @@ -94,20 +94,24 @@ def _conc_plot(self, time, conc_data): def _power_reativity_plot(self, time, power, reactivity_data): + colors = self.post.get_colors(2) fig, ax1 = plt.subplots() - color = 'tab:red' + color = colors[0] ax1.set_xlabel('Time [s]') - ax1.set_ylabel('Relative Power', color=color) + ax1.set_ylabel(r'$n(t)/n_0$', color=color) ax1.plot(time, power, color=color) + ax1.set_yscale('log') ax1.tick_params(axis='y', labelcolor=color) ax2 = ax1.twinx() - color = 'tab:blue' - ax2.set_ylabel('Reactivity [pcm]', color=color) - ax2.plot(time, np.asarray(reactivity_data)*1e5, color=color) + color = colors[1] + ax2.set_ylabel('Reactivity [\$]', color=color) + time = np.append([0], time) + reactivity_data = np.append([0], reactivity_data) + ax2.plot(time, np.asarray(reactivity_data)/self.betaeff, color=color) ax2.tick_params(axis='y', labelcolor=color) fig.tight_layout() @@ -196,7 +200,7 @@ def compare_results(self, full_data): linestyles = [':', '-.', '--'] colors = self.post.get_colors(len(full_data)) for pi, (problem, data) in enumerate(full_data.items()): - label: str = problem.capitalize() + label: str = problem.title() times = data['times'] power = data['power'] plt.plot(times, power, label=label, linestyle=linestyles[pi%len(linestyles)], color=colors[pi]) @@ -210,7 +214,7 @@ def compare_results(self, full_data): for pi, (problem, data) in enumerate(full_data.items()): - label: str = problem.capitalize() + label: str = problem.title() times = data['times'] power = np.asarray(data['power']) if pi == 0: @@ -227,7 +231,7 @@ def compare_results(self, full_data): for group in range(self.num_groups): for pi, (problem, data) in enumerate(full_data.items()): - label: str = problem.capitalize() + label: str = problem.title() times = data['times'] concs = data['concs'] conc = np.asarray(concs)[:, group] @@ -241,7 +245,7 @@ def compare_results(self, full_data): plt.close() for pi, (problem, data) in enumerate(full_data.items()): - label: str = problem.capitalize() + label: str = problem.title() times = data['times'] power = np.asarray(data['power']) base_rho = data['reactivity'] From b5016d971cd43e55449b5a43ddfe0cbcde062ce9 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Mar 2026 13:05:25 -0500 Subject: [PATCH 110/170] Improve colors --- .../phd_results/t_net_analysis/analysis.py | 54 +++++++++++++++---- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index 10b2e0f2..140214ab 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -31,17 +31,20 @@ def _cleanup_data(data_vals): def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yield=None): if data_vals == {}: return None + + post = PostProcess(None) + markers = post.markers formatted_data, total_yields = _cleanup_data(data_vals) xscale = 'log' max_index = total_yields.index(max(total_yields)) min_index = total_yields.index(min(total_yields)) - markers = ['.', '*', '>', '<', 'v', '^'] + colors = post.get_colors(1) print(f'Max - min yield of {round(1e5*(total_yields[max_index] - total_yields[min_index]), 4)} pcm ({namemod})') - plt.plot(formatted_data['xs'], total_yields, label="Yields") + plt.plot(formatted_data['xs'], total_yields, label="Yields", color=colors[0]) if actual_yield: plt.hlines(actual_yield, min(formatted_data['xs']), max(formatted_data['xs']), label='Actual Yield', - linestyle='--', color='orange') + linestyle='--', color='red') plt.legend() plt.xscale(xscale) plt.xlabel(xlab) @@ -54,10 +57,11 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel for name, data in formatted_data.items(): if type(data) is list: continue + colors = post.get_colors(len(data.values())) for group, params in data.items(): plt.plot(formatted_data['xs'], params, label=f'Group {group+1}', marker=markers[group % len(markers)], linestyle='--', markersize=5, - linewidth=1) + linewidth=1, color=colors[group]) plt.legend() plt.xlabel(xlab) plt.xscale(xscale) @@ -75,8 +79,9 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel y_arrays = [yields[group] for group in sorted(yields.keys())] labels = [f'Group {group + 1}' for group in sorted(yields.keys())] + colors = post.get_colors(len(y_arrays)) - plt.stackplot(xs, y_arrays, labels=labels) + plt.stackplot(xs, y_arrays, labels=labels, colors=colors) plt.xlabel(xlab) plt.xscale(xscale) @@ -87,25 +92,31 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel plt.savefig(f'stack_yields{namemod}.png') plt.close() -def plot_accumulated_data(accumulated_data): +def plot_accumulated_data(accumulated_data, actual_yield=None): data = list() groups = list() + time_vals = list() for group, data_vals in accumulated_data.items(): formatted_data, total_yields = _cleanup_data(data_vals) times = formatted_data['xs'] + time_vals.append(times) groups.append(group) - data.append(total_yields) + data.append(total_yields) + post = PostProcess(None) colors = post.get_colors(len(data)) markers = post.markers for group in range(len(data)): - plt.plot(times, data[group], label=f"{groups[group]} Groups", + plt.plot(time_vals[group], data[group], label=f"{groups[group]} Groups", marker=markers[group % len(markers)], color=colors[group], linestyle='--', linewidth=0.75, markersize=5) + if actual_yield: + plt.hlines(actual_yield, min(formatted_data['xs']), max(formatted_data['xs']), label='Actual Yield', + linestyle='--', color='red') plt.xlabel(r'Irradiation Time $[s]$') plt.ylabel(r'$\nu_d$') plt.xscale('log') @@ -114,6 +125,22 @@ def plot_accumulated_data(accumulated_data): plt.close() + if actual_yield: + for group in range(len(data)): + diff = 1e5*np.abs(np.asarray(data[group]) - actual_yield) + plt.plot(time_vals[group], diff, label=f"{groups[group]} Groups", + marker=markers[group % len(markers)], + color=colors[group], linestyle='--', + linewidth=0.75, + markersize=5) + plt.xlabel(r'Irradiation Time $[s]$') + #plt.yscale('log') + plt.xscale('log') + plt.ylabel(r'$|\Delta \nu_d |$ $[pcm]$') + plt.legend() + plt.tight_layout() + plt.savefig(f'total_yield_diff_actual.png') + plt.close() data = np.asarray(data).T @@ -125,6 +152,9 @@ def plot_accumulated_data(accumulated_data): color=colors[i], linestyle='--', linewidth=0.75, markersize=5) + if actual_yield: + plt.hlines(actual_yield, min(groups), max(groups), label='Actual Yield', + linestyle='--', color='red') plt.xlabel('Number of Groups') plt.ylabel(r'$\nu_d$') plt.legend() @@ -149,6 +179,8 @@ def plot_accumulated_data(accumulated_data): + + return None @@ -176,9 +208,9 @@ def helper(pathmod): return post_data, all_data if __name__ == '__main__': - actual_yield = None + actual_yield = 0.01609639439 - groups = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13] + groups = [4, 5, 6, 7, 8, 9, 12, 20] accumulated_data = dict() for group in groups: @@ -187,4 +219,4 @@ def helper(pathmod): plot_data(all_data, f'_{group}_all', actual_yield=actual_yield) accumulated_data[group] = post_data - plot_accumulated_data(accumulated_data) \ No newline at end of file + plot_accumulated_data(accumulated_data, actual_yield) \ No newline at end of file From acb84f651a0918fac8a78cb4ce744f408a77187b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Mar 2026 13:54:25 -0500 Subject: [PATCH 111/170] Add avg hl plotting --- .../phd_results/t_net_analysis/analysis.py | 102 ++++++++++++++++-- 1 file changed, 93 insertions(+), 9 deletions(-) diff --git a/examples/phd_results/t_net_analysis/analysis.py b/examples/phd_results/t_net_analysis/analysis.py index 140214ab..2cf557e4 100644 --- a/examples/phd_results/t_net_analysis/analysis.py +++ b/examples/phd_results/t_net_analysis/analysis.py @@ -14,36 +14,39 @@ def _cleanup_data(data_vals): formatted_data["xs"] = [] total_yields = [] + avg_halflives = [] for t, params in data_vals.items(): for key, vals in params.items(): if key == 'yields': total_yield = sum(vals) total_yields.append(total_yield) + avg_hl = 1/total_yield * np.sum(np.asarray(params['yields']) * np.asarray(params['hls'])) + avg_halflives.append(avg_hl) for t_net, params in data_vals.items(): formatted_data['xs'].append(t_net) for name, data in params.items(): for group, val in enumerate(data): formatted_data[name][group].append(val) - return formatted_data, total_yields + return formatted_data, total_yields, avg_halflives -def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yield=None): +def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yield=None, actual_hl=None): if data_vals == {}: return None post = PostProcess(None) markers = post.markers - formatted_data, total_yields = _cleanup_data(data_vals) + formatted_data, total_yields, avg_halflives = _cleanup_data(data_vals) xscale = 'log' max_index = total_yields.index(max(total_yields)) min_index = total_yields.index(min(total_yields)) colors = post.get_colors(1) print(f'Max - min yield of {round(1e5*(total_yields[max_index] - total_yields[min_index]), 4)} pcm ({namemod})') - plt.plot(formatted_data['xs'], total_yields, label="Yields", color=colors[0]) + plt.plot(formatted_data['xs'], total_yields, label=r"Group", color=colors[0]) if actual_yield: - plt.hlines(actual_yield, min(formatted_data['xs']), max(formatted_data['xs']), label='Actual Yield', + plt.hlines(actual_yield, min(formatted_data['xs']), max(formatted_data['xs']), label='Actual', linestyle='--', color='red') plt.legend() plt.xscale(xscale) @@ -53,6 +56,18 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel plt.close() + plt.plot(formatted_data['xs'], avg_halflives, label="Group", color=colors[0]) + if actual_hl: + plt.hlines(actual_hl, min(formatted_data['xs']), max(formatted_data['xs']), label=r'Actual', + linestyle='--', color='red') + plt.legend() + plt.xscale(xscale) + plt.xlabel(xlab) + plt.ylabel(r'$\bar{\tau}$') + plt.savefig(f'average_hl{namemod}.png') + plt.close() + + for name, data in formatted_data.items(): if type(data) is list: @@ -92,16 +107,19 @@ def plot_data(data_vals, namemod='', xlab=r'Irradiation Time $[s]$', actual_yiel plt.savefig(f'stack_yields{namemod}.png') plt.close() -def plot_accumulated_data(accumulated_data, actual_yield=None): +def plot_accumulated_data(accumulated_data, actual_yield=None, actual_hl=None): data = list() groups = list() time_vals = list() + hl_data = list() for group, data_vals in accumulated_data.items(): - formatted_data, total_yields = _cleanup_data(data_vals) + formatted_data, total_yields, avg_halflives = _cleanup_data(data_vals) times = formatted_data['xs'] time_vals.append(times) groups.append(group) data.append(total_yields) + hl_data.append(avg_halflives) + post = PostProcess(None) @@ -115,7 +133,7 @@ def plot_accumulated_data(accumulated_data, actual_yield=None): linewidth=0.75, markersize=5) if actual_yield: - plt.hlines(actual_yield, min(formatted_data['xs']), max(formatted_data['xs']), label='Actual Yield', + plt.hlines(actual_yield, min(formatted_data['xs']), max(formatted_data['xs']), label='Actual', linestyle='--', color='red') plt.xlabel(r'Irradiation Time $[s]$') plt.ylabel(r'$\nu_d$') @@ -125,6 +143,23 @@ def plot_accumulated_data(accumulated_data, actual_yield=None): plt.close() + for group in range(len(hl_data)): + plt.plot(time_vals[group], hl_data[group], label=f"{groups[group]} Groups", + marker=markers[group % len(markers)], + color=colors[group], linestyle='--', + linewidth=0.75, + markersize=5) + if actual_hl: + plt.hlines(actual_hl, min(formatted_data['xs']), max(formatted_data['xs']), label='Actual', + linestyle='--', color='red') + plt.xlabel(r'Irradiation Time $[s]$') + plt.ylabel(r'$\bar{\tau}$ $[s]$') + plt.xscale('log') + plt.legend() + plt.savefig(f'multiple_group_hls.png') + plt.close() + + if actual_yield: for group in range(len(data)): diff = 1e5*np.abs(np.asarray(data[group]) - actual_yield) @@ -142,8 +177,26 @@ def plot_accumulated_data(accumulated_data, actual_yield=None): plt.savefig(f'total_yield_diff_actual.png') plt.close() + if actual_hl: + for group in range(len(hl_data)): + diff = np.abs(np.asarray(hl_data[group]) - actual_hl) + plt.plot(time_vals[group], diff, label=f"{groups[group]} Groups", + marker=markers[group % len(markers)], + color=colors[group], linestyle='--', + linewidth=0.75, + markersize=5) + plt.xlabel(r'Irradiation Time $[s]$') + #plt.yscale('log') + plt.xscale('log') + plt.ylabel(r'$|\Delta \bar{\tau} |$ $[s]$') + plt.legend() + plt.tight_layout() + plt.savefig(f'avg_hl_diff_actual.png') + plt.close() + data = np.asarray(data).T + hl_data = np.asarray(hl_data).T colors = post.get_colors(len(data)) for i in range(len(data)): @@ -153,7 +206,7 @@ def plot_accumulated_data(accumulated_data, actual_yield=None): linewidth=0.75, markersize=5) if actual_yield: - plt.hlines(actual_yield, min(groups), max(groups), label='Actual Yield', + plt.hlines(actual_yield, min(groups), max(groups), label='Actual', linestyle='--', color='red') plt.xlabel('Number of Groups') plt.ylabel(r'$\nu_d$') @@ -163,6 +216,23 @@ def plot_accumulated_data(accumulated_data, actual_yield=None): plt.close() + for i in range(len(hl_data)): + plt.plot(groups, hl_data[i], label=f"T = {times[i]}", + marker=markers[i % len(markers)], + color=colors[i], linestyle='--', + linewidth=0.75, + markersize=5) + if actual_hl: + plt.hlines(actual_hl, min(groups), max(groups), label='Actual', + linestyle='--', color='red') + plt.xlabel('Number of Groups') + plt.ylabel(r'$\bar{\tau}$ $[s]$') + plt.legend() + plt.tight_layout() + plt.savefig(f'avg_hl_groups.png') + plt.close() + + diffs = list() for i in range(len(data[0])): diff = max(data[:, i]) - min(data[:, i]) @@ -177,6 +247,20 @@ def plot_accumulated_data(accumulated_data, actual_yield=None): plt.close() + diffs = list() + for i in range(len(hl_data[0])): + diff = max(hl_data[:, i]) - min(hl_data[:, i]) + diffs.append(diff) + + plt.plot(groups, diffs, color='black') + plt.xlabel('Number of Groups') + plt.yscale('log') + plt.ylabel(r'$\Delta \bar{\tau} $ $[s]$') + plt.tight_layout() + plt.savefig(f'avg_hl_diff.png') + plt.close() + + From f37f697698c8172080b216d91431d97bab365aa8 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Mar 2026 15:01:05 -0500 Subject: [PATCH 112/170] Add 8 group data --- examples/phd_results/prk/input.json | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/examples/phd_results/prk/input.json b/examples/phd_results/prk/input.json index c3dc764f..1db7653f 100644 --- a/examples/phd_results/prk/input.json +++ b/examples/phd_results/prk/input.json @@ -2,7 +2,8 @@ "p_selections": ["pulse (12 Group)", "pulse (6 Group)"], "s_selections": ["saturation (12 Group)", "saturation (6 Group)"], "12_selections": ["saturation (12 Group)", "pulse (12 Group)"], - "selections": ["fast pulse (9 Group)", "fast pulse (6 Group)"], + "fast_selections": ["fast pulse (9 Group)", "fast pulse (6 Group)"], + "selections": ["pulse (8 Group)", "intermediate (8 Group)", "saturation (8 Group)"], "_selections": ["saturation (6 Group)", "pulse (6 Group)"], "o_selections": ["pulse", "intermediate", "intermediate [all]", "saturation", "saturation [all]"], "problem": "step_relative", @@ -12,8 +13,8 @@ "step_relative_insertion": 0.25, "rho_max_dollars": 0.5, "neutrons_per_fission": 2.4, - "gen_time": 2e-7, - "old_gen_time": 2e-5, + "fast_gen_time": 2e-7, + "gen_time": 2e-5, "p0": 1, "rho_amplitude": 750e-5, "rho_relative_amplitude": 0.25, @@ -23,6 +24,21 @@ "yields": [0.00052, 0.00346, 0.00310, 0.00624, 0.00182, 0.00066], "hls": [55.89897, 22.72614, 6.24457, 2.30281, 0.60802, 0.23028] }, + "pulse (8 Group)": { + "description": "Calculated using IAEA and JEFF40 data, post-irrad, (0.0001,0) 0.0001 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.0004810412398,0.002747985876,0.001102469289,0.002812815944,0.005185550176,0.001834079671,0.001796392814,0.0001360405968], + "hls": [55.67180429,24.24290079,15.3710988,5.066760398,2.177984601,0.8800434482,0.3614118892,0.1414840313] + }, + "intermediate (8 Group)": { + "description": "Calculated using IAEA and JEFF40 data, post-irrad, (0.0001,0) 0.0001 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.0004798412438,0.002609836129,0.001172955115,0.00228913104,0.00396493595,0.002839532266,0.002116834191,0.0006225115174], + "hls": [55.69446054,24.44150444,16.33155403,5.542215216,2.638502954,1.468718471,0.4947322385,0.2237650564] + }, + "saturation (8 Group)": { + "description": "Calculated using IAEA and JEFF40 data, post-irrad, (0.0001,0) 0.0001 second irradiation, 100 decay times, 600 decay seconds", + "yields": [0.0004796809023,0.002599249108,0.001183678947,0.002381161476,0.004491262022,0.002411658835,0.002098340837,0.0004508185884], + "hls": [55.69771461,24.45926929,16.37416228,5.491068375,2.503326905,1.301201058,0.453571702,0.2032534501] + }, "fast pulse (6 Group)": { "description": "Calculated using IAEA and JEFF40 data, post-irrad, (0.00001,0) 0.00001 second irradiation, 100 decay times, 600 decay seconds", "yields": [0.0005021036685,0.00341460966,0.00229365229,0.006027459811,0.002630153928,0.001228086463], From 4aa3c59d9601bdd1bf9041e249cd10622c7c0312 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 24 Mar 2026 15:48:43 -0500 Subject: [PATCH 113/170] (potential breaking change) Fix bug, add metastable to emission prob data --- mosden/utils/csv_handler.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mosden/utils/csv_handler.py b/mosden/utils/csv_handler.py index 5ea19166..12174bd5 100644 --- a/mosden/utils/csv_handler.py +++ b/mosden/utils/csv_handler.py @@ -104,7 +104,8 @@ def _read_iaea_csv(self) -> dict[str, dict[str, float]]: df = pd.read_csv(self.file_path, header=1) for _, row in df.iterrows(): iaea_nuc = row['nucid'] - nuc = self._iaea_to_mosden_nuc(iaea_nuc) + metastable_id = row[' liso'] + nuc = self._iaea_to_mosden_nuc(iaea_nuc, metastable_id) half_life = row[' T1/2 [s] '] half_life_uncertainty = row[' D T1/2 [s]'] if row['D pn1'] < 0: @@ -128,7 +129,7 @@ def _read_iaea_csv(self) -> dict[str, dict[str, float]]: data[nuc]['sigma emission probability'] = emission_prob.s return data - def _iaea_to_mosden_nuc(self, iaea_nuc: str) -> str: + def _iaea_to_mosden_nuc(self, iaea_nuc: str, metastable_id: int) -> str: """ Converts IAEA nuclide format to MoSDeN format. @@ -136,6 +137,8 @@ def _iaea_to_mosden_nuc(self, iaea_nuc: str) -> str: ---------- iaea_nuc : str IAEA nuclide identifier + metastable_id : int + Value indicating metastable index Returns ------- @@ -147,7 +150,10 @@ def _iaea_to_mosden_nuc(self, iaea_nuc: str) -> str: i += 1 mass = iaea_nuc[:i] element = iaea_nuc[i:].capitalize() - return f"{element}{mass}" + m_id = '' + if metastable_id != 0: + m_id = f'_m{metastable_id}' + return f"{element}{mass}{m_id}" def write_csv(self, data: dict[str: dict[str, float]]) -> None: """ From 37cb1414085dca47e23a652c7f0c3361856e8ee3 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 25 Mar 2026 13:19:24 -0500 Subject: [PATCH 114/170] Adjust num groups to use parameter length --- mosden/groupfit.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index d28d919f..207a8356 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -297,8 +297,9 @@ def _intermediate_numerical_fit_function(self, counts : np.ndarray[float|object] Array of counts for each time point (can be float or ufloat) """ - yields = parameters[:self.num_groups] - half_lives = parameters[self.num_groups:] + num_groups = int(len(parameters) / 2) + yields = parameters[:num_groups] + half_lives = parameters[num_groups:] try: np.exp(-np.log(2)/half_lives[0]) exp = np.exp @@ -403,8 +404,9 @@ def _restructure_intermediate_yields(self, parameters: np.ndarray[float|object], if self.irrad_type != 'intermediate': return parameters - scaled_yields = parameters[:self.num_groups] - half_lives = parameters[self.num_groups:] + num_groups = int(len(parameters) / 2) + scaled_yields = parameters[:num_groups] + half_lives = parameters[num_groups:] try: np.exp(-np.log(2)/half_lives[0]) exp = np.exp From 8dc75864af7f28d8d66994c6ae6ab0aa371e860a Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 25 Mar 2026 14:08:15 -0500 Subject: [PATCH 115/170] Add JENDL5 to data download --- download_data.sh | 69 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 64 insertions(+), 5 deletions(-) diff --git a/download_data.sh b/download_data.sh index 6910b4f7..ec0ac67f 100644 --- a/download_data.sh +++ b/download_data.sh @@ -30,7 +30,7 @@ download_jeff_data() { if [[ "${JEFF_VERSION}" == "3.1.1" || "${JEFF_VERSION}" == "4.0" ]]; then JEFF_URL="https://www-nds.iaea.org/public/download-endf/JEFF-${JEFF_VERSION}/nfpy/" else - echo "Unsupported JEFF version: ${JEFF_VERSION}" >&2 + echo "Unsupported JEFF version: ${JEFF_VERSION}" return 1 fi @@ -41,6 +41,7 @@ download_jeff_data() { echo "Extracting NFY data..." for f in "$NFY_DIR"/*.zip; do unzip "$f" -d "$NFY_DIR" + done if [[ "${JEFF_VERSION}" == "4.0" ]]; then @@ -51,7 +52,6 @@ download_jeff_data() { wget -4 -q --show-progress -O "${OPENMC_DIR}chain_jeff40_sfr.xml" "https://anl.box.com/shared/static/p6cettxz3ovbp151qg7bc3k9ov0zt3wm.xml" echo "OpenMC chain data collected" fi - done echo "Removing zip files..." rm "$NFY_DIR"/*.zip @@ -87,7 +87,7 @@ download_endf_data() { decay_SEPARATOR="_" XS_URL="https://anl.box.com/shared/static/uhbxlrx7hvxqw27psymfbhi7bx7s6u6a.xz" else - echo "Unsupported ENDF version: ${ENDF_VERSION}" >&2 + echo "Unsupported ENDF version: ${ENDF_VERSION}" return 1 fi @@ -134,8 +134,6 @@ download_endf_data() { local OPENMC_DIR="${ENDF_DIR}/omcchain/" mkdir -p "$OPENMC_DIR" echo "Getting OpenMC chain data for ENDF/B-${ENDF_VERSION}..." - wget -4 -q --show-progress -O "${OPENMC_DIR}chain_casl_pwr.xml" "https://anl.box.com/shared/static/3nvnasacm2b56716oh5hyndxdyauh5gs.xml" - wget -4 -q --show-progress -O "${OPENMC_DIR}chain_casl_sfr.xml" "https://anl.box.com/shared/static/9fqbq87j0tx4m6vfl06pl4ccc0hwamg9.xml" if [[ "${ENDF_VERSION}" == "VII.1" ]]; then wget -4 -q --show-progress -O "${OPENMC_DIR}chain_endfb71_pwr.xml" "https://anl.box.com/shared/static/os1u896bwsbopurpgas72bi6aij2zzdc.xml" wget -4 -q --show-progress -O "${OPENMC_DIR}chain_endfb71_sfr.xml" "https://anl.box.com/shared/static/9058zje1gm0ekd93hja542su50pccvj0.xml" @@ -146,6 +144,62 @@ download_endf_data() { echo "OpenMC chain data collected" } +download_jendl_data() { + local JENDL_VERSION="$1" + JENDL_DIR="${DATA_DIR}/jendl" + mkdir -p "${JENDL_DIR}" + local NFY_DIR="${JENDL_DIR}/fpy/" + local DECAY_DIR="${JENDL_DIR}/decay/" + + + # Fission product yields + local JENDL_URL + local JENDL_FPY_NAME + if [[ "${JENDL_VERSION}" = "5" ]]; then + JENDL_FPY_NAME="jendl5-fpy_upd8.tar.gz" + JENDL_URL="https://wwwndc.jaea.go.jp/ftpnd/ftp/JENDL/${JENDL_FPY_NAME}" + else + echo "Unsupported JENDL version: ${JENDL_VERSION}" + return 1 + fi + + echo "Downloading NFY data for JENDL-${JENDL_VERSION}..." + echo "Accessing ${JENDL_URL}" + wget -4 --show-progress -P "${NFY_DIR}" "${JENDL_URL}" + + echo "Extracting NFY data..." + tar -xvf "${NFY_DIR}/${JENDL_FPY_NAME}" -C "${NFY_DIR}" --strip-components=1 + + # Decay data + local JENDL_URL + local JENDL_DECAY_NAME + if [[ "${JENDL_VERSION}" = "5" ]]; then + JENDL_DECAY_NAME="jendl5-dec_upd5.tar.gz" + JENDL_URL="https://wwwndc.jaea.go.jp/ftpnd/ftp/JENDL/${JENDL_DECAY_NAME}" + else + echo "Unsupported JENDL version: ${JENDL_VERSION}" + return 1 + fi + + echo "Downloading decay data for JENDL-${JENDL_VERSION}..." + echo "Accessing ${JENDL_URL}" + wget -4 --show-progress -P "${DECAY_DIR}" "${JENDL_URL}" + + echo "Extracting decay data..." + tar -xvf "${DECAY_DIR}/${JENDL_DECAY_NAME}" -C "${DECAY_DIR}" --strip-components=1 + + # OpenMC chain data + local OPENMC_DIR="${JENDL_DIR}/omcchain/" + mkdir -p "${OPENMC_DIR}" + echo "Getting OpenMC chain data for JENDL${JENDL_VERSION}..." + if [[ "${JENDL_VERSION}" == "5" ]]; then + wget -4 -q --show-progress -O "${OPENMC_DIR}chain_jendl5_pwr.xml" "https://anl.box.com/shared/static/zgn4gkwxnl3tyh45vrig429yze24sy9d.xml" + wget -4 -q --show-progress -O "${OPENMC_DIR}chain_jendl5_sfr.xml" "https://anl.box.com/shared/static/yw4bsaf86d1vhva42wzurwstlp1ynhe5.xml" + fi + echo "OpenMC chain data collected" + +} + DATA_DIR="mosden/data/unprocessed" rm -rf "$DATA_DIR" mkdir -p "$DATA_DIR" @@ -178,3 +232,8 @@ echo "Saved to $IAEA_FILE" # /IAEA -------------------------------------------------------------------- +# JENDL -------------------------------------------------------------------- +download_jendl_data "5" + + +# /JENDL -------------------------------------------------------------------- \ No newline at end of file From db4618eb3abbbbd1df14ea1ff6c43a57eb37476b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 25 Mar 2026 14:11:23 -0500 Subject: [PATCH 116/170] Make jendl save to jendl5 --- download_data.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/download_data.sh b/download_data.sh index ec0ac67f..86350292 100644 --- a/download_data.sh +++ b/download_data.sh @@ -146,7 +146,8 @@ download_endf_data() { download_jendl_data() { local JENDL_VERSION="$1" - JENDL_DIR="${DATA_DIR}/jendl" + local JENDL_VERSION_NOP="${JENDL_VERSION//./}" + local JENDL_DIR="${DATA_DIR}/jendl${JENDL_VERSION_NOP}" mkdir -p "${JENDL_DIR}" local NFY_DIR="${JENDL_DIR}/fpy/" local DECAY_DIR="${JENDL_DIR}/decay/" From 667f32079badf5304ab7b721b5fcf6e2991134f4 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 25 Mar 2026 14:18:59 -0500 Subject: [PATCH 117/170] JENDL-5 added --- mosden/templates/input_schema.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index 153bd738..134b4f36 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -84,7 +84,7 @@ "description": "Path to the half-life unprocessed data", "oneOf": [ { - "enum": ["iaea/eval.csv", "endfb80/decay/", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv"] + "enum": ["iaea/eval.csv", "endfb80/decay/", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv", "jendl5/decay/"] }, { "pattern": "^([A-Za-z0-9]+/)?omcchain/.+\\.xml" @@ -98,12 +98,12 @@ "emission_probability": { "type": "string", "description": "Path to the emission probability data", - "enum": ["iaea/eval.csv", "endfb80/decay/", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv"] + "enum": ["iaea/eval.csv", "endfb80/decay/", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv", "jendl5/decay/"] }, "fission_yield": { "type": "string", "description": "Path to the fission yield data", - "pattern": "^(?:.*/)?(jeff40/nfpy/|endfb80/nfy/|endfb71/nfy/|jeff311/nfpy/|omcchain/chain_test.xml|omcchain/four_dnp_test.xml)$" + "pattern": "^(?:.*/)?(jeff40/nfpy/|jendl5/fpy/|endfb80/nfy/|endfb71/nfy/|jeff311/nfpy/|omcchain/chain_test.xml|omcchain/four_dnp_test.xml)$" }, "decay_time_spacing": { "type": "string", From a25f4beb52cf62983572de56950efdeb26bac01b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 25 Mar 2026 15:15:50 -0500 Subject: [PATCH 118/170] Adjust minimum to use mean value instead for improved resolution and rename colorbars --- mosden/postprocessing.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index abba8302..b76189b6 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -358,10 +358,10 @@ def _get_sens_coeffs(self, write=False) -> tuple[list[dict[str, float]], if write: self.logger.info(f'\n{pcc_latex}') self.logger.info('Completed writing nuclides \n') - chart_min_data = np.min((np.min(list(summed_pcc_data.values())), np.min(list(scaled_uncert_pcc.values())))) + chart_min_data = np.min((np.mean(list(summed_pcc_data.values())), np.mean(list(scaled_uncert_pcc.values())))) chart_max_data = np.max((np.max(list(summed_pcc_data.values())), np.max(list(scaled_uncert_pcc.values())))) - self._chart_form(name='PCC', data=summed_pcc_data, cbar_label='Sum of Pearson Correlation Coefficient Magnitudes', vmin=chart_min_data, vmax=chart_max_data) - self._chart_form(name='PCC_uncertainty', data=scaled_uncert_pcc, cbar_label='Sum of Relative Uncertainties Scaled by PCC Magnitudes', vmin=chart_min_data, vmax=chart_max_data) + self._chart_form(name='PCC', data=summed_pcc_data, cbar_label=r'$PCC_i$', vmin=chart_min_data, vmax=chart_max_data) + self._chart_form(name='PCC_uncertainty', data=scaled_uncert_pcc, cbar_label=r'$U_i$', vmin=chart_min_data, vmax=chart_max_data) sorted_summed_pccs = sorted(summed_pcc_data.items(), key=lambda item: item[1], reverse=True) top = 10 self.logger.info(f'Writing {top = } summed |PCC| nuclides') From 7b2bccc45ae4ebfe90a9a9e1f8ca62b0354639f2 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 25 Mar 2026 15:17:23 -0500 Subject: [PATCH 119/170] Further simplify axes --- mosden/postprocessing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index b76189b6..2716babf 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -246,8 +246,8 @@ def _chart_form(self, name: str, data: dict, cbar_label: str, vmin: float=1e-1, plt.set_cmap('viridis') cbar = plt.colorbar() cbar.set_label(cbar_label) - plt.xlabel("Number of neutrons (N)") - plt.ylabel("Number of protons (Z)") + plt.xlabel("Neutrons (N)") + plt.ylabel("Protons (Z)") plt.savefig(f'{self.img_dir}chart_{name}.png') plt.close() return None From 44fc46e64933ab5334914ac6b2ae955eeb67c4fe Mon Sep 17 00:00:00 2001 From: Luke Seifert Date: Thu, 26 Mar 2026 14:56:02 -0500 Subject: [PATCH 120/170] Clean up prelim results with new equilibrium results --- examples/prelim_results/input.json | 20 ++++++++++++-------- examples/prelim_results/results_generator.py | 17 ++++++++--------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/examples/prelim_results/input.json b/examples/prelim_results/input.json index 275bcc94..5836434f 100644 --- a/examples/prelim_results/input.json +++ b/examples/prelim_results/input.json @@ -13,11 +13,11 @@ "log_level": 20 }, "data_options": { - "half_life": "iaea/eval.csv", + "half_life": "endfb80/decay/", "cross_section": "", - "emission_probability": "iaea/eval.csv", + "emission_probability": "endfb80/decay/", "fission_yield": "jeff311/nfpy/", - "decay_time_spacing": "linear", + "decay_time_spacing": "log", "temperature_K": 920, "density_g_cm3": 2.3275, "energy_MeV": 0.0253e-6, @@ -30,21 +30,25 @@ "concentration_handling": "CFY", "count_rate_handling": "data", "reprocessing_locations": ["excore"], + "base_removal_scaling": 0.5, "reprocessing": { "Xe": 0.0 }, "irrad_type": "saturation", - "incore_s": 10, + "incore_s": 4200, "excore_s": 0, - "spatial_scaling": "unscaled", - "net_irrad_s": 420, + "spatial_scaling": { + "flux": false, + "reprocessing": false + }, + "net_irrad_s": 4200, "decay_time": 600, - "num_decay_times": 300 + "num_decay_times": 800 }, "group_options": { "num_groups": 6, "method": "nlls", - "samples": 1000, + "samples": 5000, "sample_func": "normal" } } diff --git a/examples/prelim_results/results_generator.py b/examples/prelim_results/results_generator.py index cbe45906..31ec8128 100644 --- a/examples/prelim_results/results_generator.py +++ b/examples/prelim_results/results_generator.py @@ -28,7 +28,7 @@ chemical_long_analysis = { 'meta': { 'name': name, - 'run_full': False, + 'run_full': True, 'run_post': False, 'overwrite': True }, @@ -44,7 +44,7 @@ chemical_bool_analysis = { 'meta': { 'name': name, - 'run_full': False, + 'run_full': True, 'run_post': False, 'overwrite': True }, @@ -60,7 +60,7 @@ spacing_times_analysis = { 'meta': { 'name': name, - 'run_full': False, + 'run_full': True, 'run_post': False, 'overwrite': True }, @@ -73,7 +73,7 @@ decay_times_analysis = { 'meta': { 'name': name, - 'run_full': False, + 'run_full': True, 'run_post': False, 'overwrite': True }, @@ -86,7 +86,7 @@ total_decay_analysis = { 'meta': { 'name': name, - 'run_full': False, + 'run_full': True, 'run_post': False, 'overwrite': True }, @@ -99,8 +99,8 @@ detailed_decay_analysis = { 'meta': { 'name': name, - 'run_full': False, - 'run_post': True, + 'run_full': True, + 'run_post': False, 'overwrite': True }, 'decay_time': [1200, 2400], @@ -253,8 +253,7 @@ def run_mosden(analysis: dict, input_paths: list[str]) -> None: if __name__ == '__main__': for analysis in analysis_list: - dir_name = f'./{analysis["meta"]["name"]}' + dir_name = f'./{analysis["meta"]["name"]}/' if analysis['meta']['run_full'] or analysis['meta']['run_post']: input_paths = populate_inputs(analysis, dir_name) run_mosden(analysis, input_paths) - pass \ No newline at end of file From c84154e89ef433ef5317e99497c685ce15fc0b2e Mon Sep 17 00:00:00 2001 From: Luke Seifert Date: Thu, 26 Mar 2026 14:59:22 -0500 Subject: [PATCH 121/170] Update multipost naming --- mosden/multipostprocessing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mosden/multipostprocessing.py b/mosden/multipostprocessing.py index 34e32944..ef8a7263 100644 --- a/mosden/multipostprocessing.py +++ b/mosden/multipostprocessing.py @@ -82,7 +82,7 @@ def _set_post_names(self): post.name = rf'$T_d$ = {post.total_decay_time}s' elif self._is_name('detailed_decay'): for post in self.posts: - post.name = rf'$T_d$ = {post.total_decay_time}s with {post.num_decay_times} nodes' + post.name = rf'$T_d$ = {post.decay_time}s with {post.num_decay_times} nodes' elif self._is_name('irrad_time'): for post in self.posts: post.name = f'T = {post.net_irrad_s}' From e797642c6ae980e401355d3c0edb41a025f68f78 Mon Sep 17 00:00:00 2001 From: Luke Seifert Date: Thu, 26 Mar 2026 20:12:23 -0500 Subject: [PATCH 122/170] Renamed num_times --- mosden/multipostprocessing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mosden/multipostprocessing.py b/mosden/multipostprocessing.py index ef8a7263..83dae7d1 100644 --- a/mosden/multipostprocessing.py +++ b/mosden/multipostprocessing.py @@ -82,7 +82,7 @@ def _set_post_names(self): post.name = rf'$T_d$ = {post.total_decay_time}s' elif self._is_name('detailed_decay'): for post in self.posts: - post.name = rf'$T_d$ = {post.decay_time}s with {post.num_decay_times} nodes' + post.name = rf'$T_d$ = {post.decay_time}s with {post.num_times} nodes' elif self._is_name('irrad_time'): for post in self.posts: post.name = f'T = {post.net_irrad_s}' From a107bb22893489dbcb8f214a0297bb5a0ecd621b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 10:14:00 -0500 Subject: [PATCH 123/170] Add jendl processing --- mosden/base.py | 4 ++- mosden/preprocessing.py | 56 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index 37e0be5a..dbefe635 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -21,9 +21,11 @@ def __init__(self, input_path: str) -> None: Path to the input file """ self.omc_data_words: list[str] = ['omcchain'] - self.endf_data_words: list[str] = ['nfy', 'decay'] + self.endf_data_words: list[str] = ['endfb71', 'endfb80'] self.iaea_data_words: list[str] = ['iaea'] self.jeff_data_words: list[str] = ['jeff'] + self.jendl_data_words: list[str] = ['jendl5'] + self.input_path: str = input_path self.input_handler: InputHandler = InputHandler(input_path) diff --git a/mosden/preprocessing.py b/mosden/preprocessing.py index 46e749e3..186e4551 100644 --- a/mosden/preprocessing.py +++ b/mosden/preprocessing.py @@ -40,13 +40,15 @@ def run(self) -> None: self.omc_data_words, self.endf_data_words, self.iaea_data_words, - self.jeff_data_words + self.jeff_data_words, + self.jendl_data_words ] func_list: list = [ self.openmc_preprocess, self.endf_preprocess, self.iaea_preprocess, - self.jeff_preprocess + self.jeff_preprocess, + self.jendl_preprocess ] func_selector: list[zip] = list(zip(datasource_list, @@ -141,6 +143,25 @@ def endf_preprocess(self, data_val: str, unprocessed_path: str) -> None: else: self.logger.error(f'{data_val} not available in ENDF') return None + + def jendl_preprocess(self, data_val: str, unprocessed_path: str) -> None: + """ + Processes JENDL data + + Parameters + ---------- + data_val : str + Type of data to process + unprocessed_path : str + Path to the unprocessed data + """ + if data_val == 'fission_yield': + self._jendl_nfy_preprocess(data_val, unprocessed_path) + elif data_val == 'half_life' or data_val == 'emission_probability': + self._endf_decay_preprocess(data_val, unprocessed_path) + else: + self.logger.error(f'{data_val} not available in ENDF') + return None def jeff_preprocess(self, data_val: str, unprocessed_path: str) -> None: """ @@ -243,6 +264,37 @@ def _jeff_nfy_preprocess(self, data_val: str, path: str) -> None: csv_path: str = os.path.join(out_path) CSVHandler(csv_path, self.preprocess_overwrite).write_csv(treated_data) return None + + + def _jendl_nfy_preprocess(self, data_val: str, path: str) -> None: + """ + Processes JENDL fission yield data for the specified fissile target. + + Parameters + ---------- + data_val : str + Type of data to process + path : str + Path to the unprocessed data + """ + data_dir: str = os.path.join(self.data_dir, path) + out_path: str = os.path.join(self.processed_data_dir, f'{data_val}.csv') + pre_treated_data: dict[str: dict[str: dict[str: float]]] = dict() + for fissile in self.fissile_targets: + for file in os.listdir(data_dir): + fissile_endf: str = self._endf_fissile_name(fissile) + fissile_jendl = fissile_endf.replace('_', '-') + if not fissile_jendl in file: + continue + full_path: str = os.path.join(data_dir, file) + file_data: dict[str: dict[str: float] + ] = self._process_jeff_nfy_file(full_path) + pre_treated_data[fissile] = file_data + treated_data: dict[str: dict[str: float] + ] = self._treat_endf_data(pre_treated_data) + csv_path: str = os.path.join(out_path) + CSVHandler(csv_path, self.preprocess_overwrite).write_csv(treated_data) + return None def _endf_nfy_preprocess(self, data_val: str, path: str) -> None: """ From e6cd1c3622a33d40edc9f9b42e27731c121eb3f6 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 10:21:02 -0500 Subject: [PATCH 124/170] Add jeff311 to input schema --- mosden/templates/input_schema.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index 134b4f36..63f78a08 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -84,7 +84,7 @@ "description": "Path to the half-life unprocessed data", "oneOf": [ { - "enum": ["iaea/eval.csv", "endfb80/decay/", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv", "jendl5/decay/"] + "enum": ["iaea/eval.csv", "endfb80/decay/", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv", "jendl5/decay/", "jeff311/decay/"] }, { "pattern": "^([A-Za-z0-9]+/)?omcchain/.+\\.xml" @@ -98,7 +98,7 @@ "emission_probability": { "type": "string", "description": "Path to the emission probability data", - "enum": ["iaea/eval.csv", "endfb80/decay/", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv", "jendl5/decay/"] + "enum": ["iaea/eval.csv", "endfb80/decay/", "endfb71/decay/", "iaea/eval_test.csv", "iaea/four_dnp_test.csv", "jendl5/decay/", "jeff311/decay/"] }, "fission_yield": { "type": "string", @@ -414,4 +414,4 @@ } } } -} \ No newline at end of file +} From b88c149c086a63b5f7d618e450bb3cfcb34e5f49 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 10:22:21 -0500 Subject: [PATCH 125/170] Make names more generic --- mosden/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index dbefe635..cc695e65 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -21,10 +21,10 @@ def __init__(self, input_path: str) -> None: Path to the input file """ self.omc_data_words: list[str] = ['omcchain'] - self.endf_data_words: list[str] = ['endfb71', 'endfb80'] + self.endf_data_words: list[str] = ['endf'] self.iaea_data_words: list[str] = ['iaea'] self.jeff_data_words: list[str] = ['jeff'] - self.jendl_data_words: list[str] = ['jendl5'] + self.jendl_data_words: list[str] = ['jendl'] self.input_path: str = input_path From 68e0ea9ccdb10670b41adb3d6ae75e8705d56698 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 11:13:50 -0500 Subject: [PATCH 126/170] Download JEFF decay data --- download_data.sh | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/download_data.sh b/download_data.sh index 86350292..b1def16e 100644 --- a/download_data.sh +++ b/download_data.sh @@ -23,6 +23,7 @@ download_jeff_data() { local JEFF_VERSION_NOP="${JEFF_VERSION//./}" local JEFF_DIR="${DATA_DIR}/jeff${JEFF_VERSION_NOP}" local NFY_DIR="${JEFF_DIR}/nfpy/" + local DECAY_DIR="${JEFF_DIR}/decay/" mkdir -p "$NFY_DIR" echo "Saving data to ${NFY_DIR}" @@ -44,6 +45,39 @@ download_jeff_data() { done + # Decay data (formatted as many small zipped files) + local JEFF_URL="https://www-nds.iaea.org/public/download-endf/JEFF-${JEFF_VERSION}/decay/" + + echo "Downloading decay data for JEFF-${JEFF_VERSION}..." + echo "Accessing ${JEFF_URL}" + JEFF_URL="https://www-nds.iaea.org/public/download-endf/JEFF-3.1.1/decay/" + + if command -v aria2c &>/dev/null; then + echo "aria2c in use" + + wget -q -O - "$JEFF_URL" \ + | grep -oP 'href="\K[^"]+\.zip' \ + | sed "s|^|$JEFF_URL|" \ + > /tmp/jeff_urls.txt + + aria2c \ + --input-file=/tmp/jeff_urls.txt \ + --dir="${DECAY_DIR}" \ + --max-concurrent-downloads=16 \ + --split=1 \ + --auto-file-renaming=false + + rm /tmp/jeff_urls.txt + else + echo "aria2c not available (highly suggested), using wget" + wget -4 --show-progress --recursive --no-parent --accept "*.zip" --no-host-directories --cut-dirs=3 -P "${JEFF_DIR}" "$JEFF_URL" + fi + + echo "Extracting decay data..." + for f in "$DECAY_DIR"/*.zip; do + unzip "$f" -d "$DECAY_DIR" + done + if [[ "${JEFF_VERSION}" == "4.0" ]]; then OPENMC_DIR="${JEFF_DIR}/omcchain/" mkdir -p "$OPENMC_DIR" @@ -54,8 +88,9 @@ download_jeff_data() { fi echo "Removing zip files..." + rm "$DECAY_DIR"/*.zip rm "$NFY_DIR"/*.zip - echo "NFY data handled" + echo "JEFF-${JEFF_VERSION} data handled" } download_endf_data() { From 5deccc3a87b5fdb8113eef7de6bc26662cd3bb22 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 11:26:11 -0500 Subject: [PATCH 127/170] add jeff decay availability --- mosden/preprocessing.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mosden/preprocessing.py b/mosden/preprocessing.py index 186e4551..45d6904c 100644 --- a/mosden/preprocessing.py +++ b/mosden/preprocessing.py @@ -176,6 +176,8 @@ def jeff_preprocess(self, data_val: str, unprocessed_path: str) -> None: """ if data_val == 'fission_yield': self._jeff_nfy_preprocess(data_val, unprocessed_path) + elif data_val == 'half_life' or data_val == 'emission_probability': + self._endf_decay_preprocess(data_val, unprocessed_path) else: self.logger.error(f'{data_val} not available in JEFF') return None From 4b717f3245ee112f4bf41e7d9e8f19e0e31e562f Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 11:45:50 -0500 Subject: [PATCH 128/170] Clean up preprocessing to be more general --- mosden/preprocessing.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mosden/preprocessing.py b/mosden/preprocessing.py index 45d6904c..9f3dd351 100644 --- a/mosden/preprocessing.py +++ b/mosden/preprocessing.py @@ -511,10 +511,12 @@ def _process_endf_decay_file(self, dir: str) -> dict[str, dict[str: float]]: """ import openmc.data data = dict() + valid_endings = ('.dat', '.endf') for file in os.listdir(dir): Pn = ufloat(0, 1e-12) half_life = ufloat(0, 1e-12) - if not file.startswith(f'dec-'): + is_valid = (file.startswith('dec') and file.endswith(valid_endings)) + if not is_valid: continue decay = openmc.data.Decay.from_endf(dir+file) half_life = decay.half_life From fd0dd3f77f4f48be7a5c98b8a3ea1b5c79fa9b75 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 11:47:30 -0500 Subject: [PATCH 129/170] Add 2026 data paper results generator script --- .gitignore | 6 + examples/2026_data_paper/input.json | 61 ++++++ examples/2026_data_paper/results_generator.py | 175 ++++++++++++++++++ 3 files changed, 242 insertions(+) create mode 100644 examples/2026_data_paper/input.json create mode 100644 examples/2026_data_paper/results_generator.py diff --git a/.gitignore b/.gitignore index ec4d0f83..b906a747 100644 --- a/.gitignore +++ b/.gitignore @@ -172,6 +172,12 @@ cython_debug/ !/examples/**/input.json !/examples/**/*.py + +/examples/2026_data_paper/* +!/examples/2026_data_paper/input.json +!/examples/2026_data_paper/results_generator.py + + /examples/phd_results/* !/examples/phd_results/input.json !/examples/phd_results/results_generator.py diff --git a/examples/2026_data_paper/input.json b/examples/2026_data_paper/input.json new file mode 100644 index 00000000..4d3514df --- /dev/null +++ b/examples/2026_data_paper/input.json @@ -0,0 +1,61 @@ +{ + "name": "Data Investigation", + "multi_id": null, + "file_options": { + "overwrite": { + "preprocessing": true, + "concentrations": true, + "count_rate": true, + "group_fitting": true, + "postprocessing": true, + "logger": true + }, + "log_level": 20 + }, + "data_options": { + "half_life": "endfb71/decay/", + "cross_section": "", + "emission_probability": "endfb71/decay/", + "fission_yield": "endfb71/nfy/", + "decay_time_spacing": "log", + "temperature_K": 920, + "density_g_cm3": 2.3275, + "energy_MeV": 0.0253e-6, + "fissile_fractions": { + "U235": 1.0 + } + }, + "modeling_options": { + "concentration_handling": "CFY", + "count_rate_handling": "data", + "reprocessing_locations": [], + "reprocessing": { + "Xe": 0.0 + }, + "irrad_type": "saturation", + "spatial_scaling": { + "flux": false, + "reprocessing": false + }, + "base_removal_scaling": 0.5, + "incore_s": 4200, + "excore_s": 0, + "net_irrad_s": 4200, + "decay_time": 600, + "num_decay_times": 800, + "openmc_settings": { + "nps": 5000, + "batches": 10, + "source": 1e3, + "run_omc": true, + "write_fission_json": true, + "write_nuyield_json": true + } + }, + "group_options": { + "num_groups": 6, + "method": "nlls", + "samples": 1, + "sample_func": "normal" + } +} diff --git a/examples/2026_data_paper/results_generator.py b/examples/2026_data_paper/results_generator.py new file mode 100644 index 00000000..0ff8be6b --- /dev/null +++ b/examples/2026_data_paper/results_generator.py @@ -0,0 +1,175 @@ +import os +from pathlib import Path +import json +import itertools +import shutil +from copy import deepcopy +import subprocess + +base_input_file = './input.json' +analysis_list = list() + +name = 'data' +residence_time_analysis = { + 'meta': { + 'name': name, + 'run_full': True, + 'run_post': True, + 'overwrite': True, + }, + 'half_life': ['endfb71/decay/', 'endfb80/decay/', 'jeff311/decay/', 'jendl5/decay/', 'iaea/eval.csv'], + 'emission_probability': ['endfb71/decay/', 'endfb80/decay/', 'jeff311/decay/', 'jendl5/decay/', 'iaea/eval.csv'], + 'fission_yield': ['endfb71/nfy/', 'endfb80/nfy/', 'jeff311/nfpy/', 'jendl5/fpy/'], + 'multi_id': [name] +} +analysis_list.append(residence_time_analysis) + + +def replace_value(input_data: dict, key: str, new_val: str|float|int) -> bool: + """ + Recursively search through dict d to find key and replace its value. + Returns True if replacement was made, False otherwise. + + Parameters + ---------- + input_data : dict + The dictionary of input data + key : str + The key to search for + new_val : str|float|int + The new value to assign to the key + + """ + if key in input_data.keys(): + input_data[key] = new_val + return True + + for val in input_data.values(): + if isinstance(val, dict): + if replace_value(val, key, new_val): + return True + return False + +def create_directory(dir_name: str) -> None: + """ + Create directory if it does not exist. If it does exist and overwrite is + True, delete and recreate. + + Parameters + ---------- + dir_name : str + The name of the directory to create + + """ + if os.path.isdir(dir_name) and analysis['meta']['overwrite']: + shutil.rmtree(dir_name) + os.makedirs(dir_name, exist_ok=analysis['meta']['overwrite']) + return None + +def set_data(new_data: dict, dir_path: str, idx: int, combination: tuple) -> tuple[dict, str]: + """ + Set the data for the new input file. + + Parameters + ---------- + new_data : dict + The new data to write to the input file + dir_path : str + The directory path where the input file will be created + idx : int + The index of the current input file + combination : tuple + The combination of parameters for this input file + + Returns + ------- + tuple[dict, str] + The updated data and the path to the input file + """ + filename = 'input.json' + file_dir = dir_path / str(idx) + file_path = file_dir / filename + new_data['file_options']['processed_data_dir'] = str(file_dir) + new_data['file_options']['output_dir'] = str(file_dir) + '/' + new_data['file_options']['log_file'] = str(file_dir) + '/log.log' + new_data['modeling_options']['openmc_settings']['omc_dir'] = str(file_dir) + '/omc' + new_data['name'] = str(combination) + if analysis['meta']['run_full']: + create_directory(file_dir) + + with open(file_path, "w") as f: + json.dump(new_data, f, indent=2) + + return new_data, file_path + +def populate_inputs(analysis: dict, dir_path: str) -> list[str]: + """ + Populate the input files for each case in the analysis dict. + + Parameters + ---------- + analysis : dict + The analysis dictionary containing the parameters for each case + dir_path : str + The directory path where the input files will be created + + Returns + ------- + list[str] + A list of paths to the created input files + + Raises + ------ + KeyError + If a key in the analysis dict is not found in the input file + """ + paths = [] + dir_path = Path(dir_path) + + with open("input.json", "r") as f: + base_data = json.load(f) + + component_keys = [k for k in analysis.keys() if k != "meta"] + value_combinations = itertools.product(*(analysis[k] for k in component_keys)) + for idx, combination in enumerate(value_combinations, start=1): + + new_data = deepcopy(base_data) + + for key, val in zip(component_keys, combination): + replaced = replace_value(new_data, key, val) + if not replaced: + raise KeyError(f'{key} not found in input file') + + new_data, file_path = set_data(new_data, dir_path, idx, combination) + + paths.append(str(file_path)) + return paths + +def run_mosden(analysis: dict, input_paths: list[str]) -> None: + """ + Run mosden for the given analysis and input paths. + + Parameters + ---------- + analysis : dict + The analysis dictionary containing the parameters for the run + input_paths : list[str] + The list of input file paths to process + + """ + if analysis['meta']['run_full']: + command = ['mosden', '-a'] + input_paths + elif analysis['meta']['run_post']: + command = ['mosden', '-post'] + input_paths + else: + return None + subprocess.run(command) + return None + +if __name__ == '__main__': + for analysis in analysis_list: + dir_name = f'{os.getcwd()}/{analysis["meta"]["name"]}' + if analysis['meta']['run_full'] or analysis['meta']['run_post']: + input_paths = populate_inputs(analysis, dir_name) + run_mosden(analysis, input_paths) + pass \ No newline at end of file From b5dcd12464f2051f8e46e127948756cc9c0e5ef8 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 13:00:41 -0500 Subject: [PATCH 130/170] Add data table generation --- mosden/multipostprocessing.py | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/mosden/multipostprocessing.py b/mosden/multipostprocessing.py index 83dae7d1..d12a4ec8 100644 --- a/mosden/multipostprocessing.py +++ b/mosden/multipostprocessing.py @@ -89,6 +89,8 @@ def _set_post_names(self): elif self._is_name('omc_timestep'): for post in self.posts: post.name = rf'$\Delta t$ = {post.openmc_settings["max_timestep"]}' + elif self._is_name('data'): + self.data_table_gen() return None def _post_heatmap_setup(self) -> None: @@ -123,6 +125,43 @@ def _initialize_posts(self) -> None: self.do_heatmap = False return None + def data_table_gen(self) -> None: + """ + Write a csv table for the various data parameters and the results + """ + csv_data = list() + rename = { + 'endfb71/decay/': 'ENDF/B-VII.1', + 'endfb80/decay/': 'ENDF/B-VIII.0', + 'jeff311/decay/': 'JEFF-3.1.1', + 'jendl5/decay/': 'JENDL-5', + 'iaea/eval.csv': 'IAEA', + 'endfb71/nfy/': 'ENDF/B-VII.1', + 'endfb80/nfy/': 'ENDF/B-VIII.0', + 'jeff311/nfpy/': 'JEFF-3.1.1', + 'jendl5/fpy/': 'JENDL-5' + } + for post in self.posts: + cfy = post.input_data['data_options']['fission_yield'] + pn = post.input_data['data_options']['emission_probability'] + hl = post.input_data['data_options']['half_life'] + row_data = { + r'$CFY$': rename[cfy], + r'$P_n$': rename[pn], + r'$\tau$': rename[hl], + r'$\nu_d (I)$': post.summed_yield.n, + r'$\Delta \nu_d (I)$': post.summed_yield.s, + r'$\bar{\tau} (I)$ $[s]$': post.summed_avg_halflife.n, + r'$\Delta \bar{\tau} (I)$ $[s]$': post.summed_avg_halflife.s, + r'$\nu_d (K)$': post.group_yield.n, + r'$\Delta \nu_d (K)$': post.group_yield.s, + r'$\bar{\tau} (K)$ $[s]$': post.group_avg_halflife.n, + r'$\Delta \bar{\tau} (K)$ $[s]$': post.group_avg_halflife.s + } + csv_data.append(row_data) + pd.DataFrame(csv_data).to_csv(f'{self.output_dir}data.csv', index=False) + return None + def run(self): """ Run the multi-post processing analysis and generate figures. From a471ddbafa22137d3ac2a15fe8fe896f435af975 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 13:21:50 -0500 Subject: [PATCH 131/170] Update samples and post options --- examples/2026_data_paper/input.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/examples/2026_data_paper/input.json b/examples/2026_data_paper/input.json index 4d3514df..40d9189e 100644 --- a/examples/2026_data_paper/input.json +++ b/examples/2026_data_paper/input.json @@ -55,7 +55,15 @@ "group_options": { "num_groups": 6, "method": "nlls", - "samples": 1, + "samples": 5000, "sample_func": "normal" + }, + "post_options": { + "top_num_nuclides": { + "yield_top": 5, + "conc_top": 5, + "conc_over_time_top": 5 + } } + } From 830921a8ff1d994f7271d1430617565614e2282b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 13:52:41 -0500 Subject: [PATCH 132/170] Add less frequent data plotting --- mosden/postprocessing.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index 2716babf..9a4fd2db 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -1054,6 +1054,7 @@ def _plot_counts(self) -> None: countrate = CountRate(self.input_path) irrad_index = self.get_irrad_index(False) + 1 times = countrate.use_times + tenth = int(len(times)/10) alpha_MC: float = 1 / np.sqrt(self.MC_samples) for MC_iterm, count_val in enumerate(counts): label = mc_label if MC_iterm == 0 else None @@ -1073,7 +1074,8 @@ def _plot_counts(self) -> None: marker='x', label='Mean, This Work', markersize=5, - markevery=5) + markevery=tenth, + errorevery=tenth) countrate.count_method = 'groupfit' if self.self_relative_data: base_name = mc_label @@ -1139,6 +1141,7 @@ def _plot_counts(self) -> None: plt.xlabel('Time [s]') plt.ylabel(r'Count Rate $[n \cdot s^{-1}]$') plt.yscale('log') + plt.xscale('log') leg = plt.legend() for line in leg.legend_handles: if line.get_label() == mc_label: @@ -1175,7 +1178,8 @@ def _plot_counts(self) -> None: marker='x', label='Mean, This Work', markersize=5, - markevery=5) + markevery=tenth, + errorevery=tenth) counts_group = unumpy.uarray(group_counts['counts'], group_counts['sigma counts']) From 41daf183b0ed3bff1e19997925b34ba635a3d7fc Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 14:05:39 -0500 Subject: [PATCH 133/170] Fix debug concs for CFY --- mosden/concentrations.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/mosden/concentrations.py b/mosden/concentrations.py index ecf6b578..491e7c66 100644 --- a/mosden/concentrations.py +++ b/mosden/concentrations.py @@ -137,6 +137,12 @@ def _evaluate_conc(self, cur_conc: float, cur_p_conc: float, lam_p: float, lam: exp_p = np.exp(-lam_p * dt[ti]) exp_c = np.exp(-lam * dt[ti]) + if self.conc_method == 'CFY': + cfy = y_p + y + cur_conc = cfy / lam + cur_p_conc = y_p / lam + return cur_conc, cur_p_conc + if lam_p > 0: cur_p_conc = p_concs[ti] * exp_p + (fission_rates[ti] * y_p / lam_p) * (1 - exp_p) else: @@ -183,8 +189,6 @@ def _add_debug_dnp_data(self, data: list[dict[str, float]]) -> list[dict[str, fl fission_rates, _ = self._calculate_fission_term(False) len_diff = len(times) - len(fission_rates) fission_rates = np.append(fission_rates, [0]*len_diff) - concs = [0] - p_concs = [0] lam = np.log(2) / nuc_vals['half_life_s'] y = nuc_vals['yield'] dt = np.diff(times) @@ -196,6 +200,17 @@ def _add_debug_dnp_data(self, data: list[dict[str, float]]) -> list[dict[str, fl except NameError: y_p = 0 lam_p = 1 + except KeyError: + y_p = 0 + lam_p = 1 + initial_conc = 0 + initial_p_conc = 0 + + if self.conc_method == 'CFY': + initial_conc = (y+y_p) / lam + initial_p_conc = y_p / lam_p + concs = [initial_conc] + p_concs = [initial_p_conc] for ti, t in enumerate(times[:-1]): cur_conc, cur_p_conc = self._evaluate_conc(cur_conc, cur_p_conc, lam_p, lam, ti, dt, fission_rates, concs, p_concs, y_p, y) p_concs.append(cur_p_conc) From 7c8896f0ab5ce60179cb4531e1c1dd6aaa15387b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 14:49:42 -0500 Subject: [PATCH 134/170] Make mean marker plotting an optional user setting --- mosden/base.py | 1 + mosden/postprocessing.py | 23 ++++++++++++----------- mosden/templates/input_schema.json | 4 ++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index cc695e65..c6231764 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -152,6 +152,7 @@ def __init__(self, input_path: str) -> None: self.num_over_time = self.num_top.get('conc_over_time_top', 3) self.nuc_colors = post_options.get('nuc_colors', {}) self.num_stack = post_options.get('num_stacked_nuclides', 2) + self.plot_means = post_options.get('plot_means', False) self.post_irrad_only: bool = (len(self.residual_masks) == 1 and 'post-irrad' in self.residual_masks) self.no_post_irrad: bool = ('post-irrad' not in self.residual_masks and 'all' not in self.residual_masks) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index 9a4fd2db..d8257d59 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -1169,17 +1169,18 @@ def _plot_counts(self) -> None: if len(counts_this_work) > len(times): counts_this_work = counts_this_work[irrad_index:] this_over_base = counts_this_work / counts_base - plt.errorbar( - times, - unumpy.nominal_values(this_over_base), - unumpy.std_devs(this_over_base), - color=mean_color, - linestyle='', - marker='x', - label='Mean, This Work', - markersize=5, - markevery=tenth, - errorevery=tenth) + if self.plot_means: + plt.errorbar( + times, + unumpy.nominal_values(this_over_base), + unumpy.std_devs(this_over_base), + color=mean_color, + linestyle='', + marker='x', + label='Mean, This Work', + markersize=5, + markevery=tenth, + errorevery=tenth) counts_group = unumpy.uarray(group_counts['counts'], group_counts['sigma counts']) diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index 63f78a08..3aa07504 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -397,6 +397,10 @@ "type": "integer", "description": "Plots the top X nuclides at each time step, where X is this value" }, + "plot_means": { + "type": "boolean", + "description": "Whether to plot the nominal values in count rate figures" + }, "lit_data": { "type": "array", "description": "Data from the literature to compare against. Must be present in the data directory", From e640c423c157bd9b9fa99e5b7bde0fb0b5529d93 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 27 Mar 2026 14:53:20 -0500 Subject: [PATCH 135/170] Comment out default nuc color --- mosden/utils/defaults.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mosden/utils/defaults.py b/mosden/utils/defaults.py index ab0a89bd..ff123193 100644 --- a/mosden/utils/defaults.py +++ b/mosden/utils/defaults.py @@ -94,10 +94,11 @@ 'conc_top': 15, 'conc_over_time_top': 5 }, + "plot_means": False, "num_stacked_nuclides": 2, "lit_data": ['keepin', 'brady', 'synetos'], "nuc_colors": { - 'Br87': '#FF474C' + #'Br87': '#FF474C' } } } \ No newline at end of file From 92b19d4ca787d66372c2136630f50b9200f37743 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 30 Mar 2026 09:13:24 -0500 Subject: [PATCH 136/170] Remove warning about residence time --- mosden/base.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/mosden/base.py b/mosden/base.py index c6231764..0e36c2bd 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -98,8 +98,6 @@ def __init__(self, input_path: str) -> None: self.t_in: float = modeling_options.get('incore_s', 0.0) self.t_ex: float = modeling_options.get('excore_s', 0.0) self.t_net: float = modeling_options.get('net_irrad_s', 0.0) - if self.t_in/self.t_net >= 0.9: - self.logger.warning('It is suggested to use a smaller in-core residence time or a longer total time') self.t_net = self._update_t_net() self.irrad_type: str = modeling_options.get('irrad_type', 'saturation') self.spatial_scaling: dict[str: str] = modeling_options.get( From 9ec12b13481e689f4f01141fbc54281f9c27576e Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 30 Mar 2026 09:14:36 -0500 Subject: [PATCH 137/170] Reduce warning length --- mosden/concentrations.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mosden/concentrations.py b/mosden/concentrations.py index 491e7c66..d59e0b43 100644 --- a/mosden/concentrations.py +++ b/mosden/concentrations.py @@ -48,8 +48,8 @@ def __init__(self, input_path: str) -> None: if self.repr_scale <= 0.0: self.logger.info(f'{self.repr_scale = }') - self.logger.error('No valid chemical removal region provided') - self.logger.warning('Setting reprocessing scale to 1.0') + msg = 'No valid chemical removal region provided (scale set to 1.0)' + self.logger.warning(msg) self.repr_scale = 1.0 return None From 44b0e014c6abe2a5e1352ca473e40d3c093e173f Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 30 Mar 2026 10:21:08 -0500 Subject: [PATCH 138/170] Add difference and relabel pcc bar --- mosden/postprocessing.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index d8257d59..c5a6dce7 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -404,7 +404,7 @@ def _get_sens_coeffs(self, write=False) -> tuple[list[dict[str, float]], edgecolor='black') handles = [plt.Rectangle((0,0),1,1, color=color_map[val]) for val in dnp_vals] plt.legend(handles, dnp_vals, title="DNP Value") - plt.xlabel(r"$U_{i}$") + plt.xlabel(r"$U_{i,v}$") plt.tight_layout() plt.savefig(f'{self.img_dir}pcc-bar.png') plt.close() @@ -782,12 +782,16 @@ def compare_yields(self) -> None: self.summed_avg_halflife = summed_avg_halflife self.group_yield = group_yield self.group_avg_halflife = group_avg_halflife + yield_diff = 1e5*(summed_yield - group_yield) + avg_hl_diff = (summed_avg_halflife - group_avg_halflife) self._plot_nuclide_count_rates(self.num_stack) self.logger.info(f'{summed_yield = }') self.logger.info(f'{summed_avg_halflife = } s') self.logger.info(f'{group_yield = }') self.logger.info(f'{group_avg_halflife = } s') + self.logger.info(f'{yield_diff = } pcm') + self.logger.info(f'{avg_hl_diff = } s') if self.omc: yields = Concentrations(self.input_path).read_omc_nuyield_json() try: From 5f03aeba7a2efb5bac125dedfb05fa2fe8a5b8c9 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 31 Mar 2026 11:58:10 -0500 Subject: [PATCH 139/170] Add PCC cutoff setting --- mosden/base.py | 1 + mosden/templates/input_schema.json | 5 +++++ mosden/utils/defaults.py | 1 + 3 files changed, 7 insertions(+) diff --git a/mosden/base.py b/mosden/base.py index 0e36c2bd..85e1bba4 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -151,6 +151,7 @@ def __init__(self, input_path: str) -> None: self.nuc_colors = post_options.get('nuc_colors', {}) self.num_stack = post_options.get('num_stacked_nuclides', 2) self.plot_means = post_options.get('plot_means', False) + self.pcc_cutoff = post_options.get('pcc_cutoff', 0.2) self.post_irrad_only: bool = (len(self.residual_masks) == 1 and 'post-irrad' in self.residual_masks) self.no_post_irrad: bool = ('post-irrad' not in self.residual_masks and 'all' not in self.residual_masks) diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index 3aa07504..b83afd22 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -401,6 +401,11 @@ "type": "boolean", "description": "Whether to plot the nominal values in count rate figures" }, + "pcc_cutoff": { + "type": "number", + "description": "This is the cutoff value for logging PCCs", + "minimum": 0.0 + }, "lit_data": { "type": "array", "description": "Data from the literature to compare against. Must be present in the data directory", diff --git a/mosden/utils/defaults.py b/mosden/utils/defaults.py index ff123193..13d5c3fd 100644 --- a/mosden/utils/defaults.py +++ b/mosden/utils/defaults.py @@ -96,6 +96,7 @@ }, "plot_means": False, "num_stacked_nuclides": 2, + "pcc_cutoff": 0.2, "lit_data": ['keepin', 'brady', 'synetos'], "nuc_colors": { #'Br87': '#FF474C' From 4e8e414bb0a049a6cc1c1c3beb5f563d3f756836 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Tue, 31 Mar 2026 13:29:50 -0500 Subject: [PATCH 140/170] Adjust post data loading to save memory --- mosden/multipostprocessing.py | 2 ++ mosden/postprocessing.py | 56 +++++++++++++++++++++++++++-------- 2 files changed, 46 insertions(+), 12 deletions(-) diff --git a/mosden/multipostprocessing.py b/mosden/multipostprocessing.py index d12a4ec8..31be4390 100644 --- a/mosden/multipostprocessing.py +++ b/mosden/multipostprocessing.py @@ -123,6 +123,8 @@ def _initialize_posts(self) -> None: self.hm_y_vals.append(post.hm_y) except AttributeError: self.do_heatmap = False + # Memory limitation for large datasets (~70 sims with 5k samples) + post.post_data = None return None def data_table_gen(self) -> None: diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index c5a6dce7..28e201d5 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -34,23 +34,34 @@ def __init__(self, input_path: str) -> None: super().__init__(input_path) self.markers: list[str] = ['v', 'o', 'x', '^', 's', 'D'] self.linestyles: list[str] = ['-', '--', ':', '-.'] - self.load_post_data() self.decay_times: np.ndarray[float] = CountRate(input_path).decay_times if not os.path.exists(self.img_dir): os.makedirs(self.img_dir) self.group_data = None + self.post_data = None + self.MC_half_lives = None + self.MC_yields = None + grouper = Grouper(input_path) + self.refined_fission_term = grouper._set_refined_fission_term(self.decay_times) + np.set_printoptions(legacy='1.25') + + return None + + def get_MC_data_post(self) -> None: + """ + Load post data and get the MC yield and half-lives + """ + self.load_post_data() try: self.MC_yields, self.MC_half_lives = self._get_MC_group_params() except KeyError: self.logger.warning('Postdata does not exist') except IndexError: self.logger.warning('Could not access data at target index') - grouper = Grouper(input_path) - self.refined_fission_term = grouper._set_refined_fission_term(self.decay_times) - return None + def get_colors(self, num_colors: int, colormap: str = None, min_val: float = 0.0, max_val: float = 1.0) -> list[tuple[float]]: """ @@ -256,6 +267,7 @@ def MC_NLLS_analysis(self) -> None: """ Analyze Monte Carlo Non-linear Least Squares results """ + self.get_MC_data_post() if not self.no_post_irrad: self._plot_counts() if self.MC_samples > 2: @@ -299,7 +311,7 @@ def _get_sens_coeffs(self, write=False) -> tuple[list[dict[str, float]], group_names = ['Yield', 'Half-life'] nucs_with_pcc = list() - pcc_cutoff = 0.2 + pcc_cutoff = self.pcc_cutoff summed_pcc_data = dict() scaled_uncert_pcc = dict() pcc_data = dict() @@ -365,14 +377,28 @@ def _get_sens_coeffs(self, write=False) -> tuple[list[dict[str, float]], sorted_summed_pccs = sorted(summed_pcc_data.items(), key=lambda item: item[1], reverse=True) top = 10 self.logger.info(f'Writing {top = } summed |PCC| nuclides') + PCC_table = dict() + PCC_table['Nuclide'] = list() + PCC_table[r'$PCC_{i}$'] = list() for nuc,sum_PCC in sorted_summed_pccs[:top]: - self.logger.info(f'{nuc = } {sum_PCC = }') + nuc_name = self._convert_nuc_to_latex(nuc) + PCC_table['Nuclide'].append(nuc_name) + PCC_table[r'$PCC_{i}$'].append(sum_PCC) + PCC_table = pd.DataFrame(PCC_table).to_latex(index=False) + self.logger.info(f'\n{PCC_table}') sorted_uncert_pccs = sorted(scaled_uncert_pcc.items(), key=lambda item: item[1], reverse=True) self.logger.info(f'Writing {top = } summed uncertainty times |PCC| nuclides') nucs = list() + Ui_table = dict() + Ui_table['Nuclide'] = list() + Ui_table[r'$U_{i}$'] = list() for nuc,sum_PCC in sorted_uncert_pccs[:top]: - self.logger.info(f'{nuc = } {sum_PCC = }') + nuc_name = self._convert_nuc_to_latex(nuc) + Ui_table['Nuclide'].append(nuc_name) + Ui_table[r'$U_{i}$'].append(sum_PCC) nucs.append(nuc) + Ui_table = pd.DataFrame(Ui_table).to_latex(index=False) + self.logger.info(f'\n{Ui_table}') table_data = dict() for nuc in nucs: nuc_name = self._convert_nuc_to_latex(nuc) @@ -386,10 +412,10 @@ def _get_sens_coeffs(self, write=False) -> tuple[list[dict[str, float]], False) table_data.setdefault('Nuclide', []).append(nuc_name) table_data.setdefault('DNP Value', []).append(nuc_lab) - table_data.setdefault(r'$U_{i}$', []).append(scaled_uncert) + table_data.setdefault(r'$U_{i,v}$', []).append(scaled_uncert) table_df_data: pd.DataFrame = pd.DataFrame.from_dict( table_data, orient='columns') - df_sorted = table_df_data.nlargest(top, r"$U_{i}$").sort_values(r'$U_{i}$', ascending=True) + df_sorted = table_df_data.nlargest(top, r"$U_{i,v}$").sort_values(r'$U_{i,v}$', ascending=True) dnp_vals = df_sorted["DNP Value"].unique() colors = self.get_colors(len(dnp_vals)) color_map = dict(zip(dnp_vals, colors)) @@ -400,7 +426,7 @@ def _get_sens_coeffs(self, write=False) -> tuple[list[dict[str, float]], dup_count = labels.count(label) label = label + invisible_char * dup_count labels.append(label) - plt.barh(label, row[r"$U_{i}$"], color=color_map[row["DNP Value"]], + plt.barh(label, row[r"$U_{i,v}$"], color=color_map[row["DNP Value"]], edgecolor='black') handles = [plt.Rectangle((0,0),1,1, color=color_map[val]) for val in dnp_vals] plt.legend(handles, dnp_vals, title="DNP Value") @@ -410,12 +436,18 @@ def _get_sens_coeffs(self, write=False) -> tuple[list[dict[str, float]], plt.close() table_latex = table_df_data.to_latex(index=False) self.logger.info(f'\n{table_latex}') - plt.hist(list(summed_pcc_data.values()), bins=int(np.sqrt(len(list(summed_pcc_data.values()))))) + plt.hist(list(summed_pcc_data.values()), bins=int(2*np.sqrt(len(list(summed_pcc_data.values()))))) plt.yscale('log') - plt.xlabel(r'$\Sigma\left|PCC\right|$') + plt.xlabel(r'$PCC_i$') plt.ylabel(r'Frequency') plt.savefig(f'{self.img_dir}pcc-frequency.png') plt.close() + plt.hist(list(scaled_uncert_pcc.values()), bins=int(2*np.sqrt(len(list(scaled_uncert_pcc.values()))))) + plt.yscale('log') + plt.xlabel(r'$U_i$') + plt.ylabel(r'Frequency') + plt.savefig(f'{self.img_dir}u-frequency.png') + plt.close() From 201bf8054175394b2126c771b4132dba790e8f5e Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 1 Apr 2026 10:29:03 -0500 Subject: [PATCH 141/170] Add hybrid data analysis script --- .gitignore | 1 + .../2026_data_paper/hybrid_data_analysis.py | 88 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 examples/2026_data_paper/hybrid_data_analysis.py diff --git a/.gitignore b/.gitignore index b906a747..98d8cdec 100644 --- a/.gitignore +++ b/.gitignore @@ -176,6 +176,7 @@ cython_debug/ /examples/2026_data_paper/* !/examples/2026_data_paper/input.json !/examples/2026_data_paper/results_generator.py +!/examples/2026_data_paper/hybrid_data_analysis.py /examples/phd_results/* diff --git a/examples/2026_data_paper/hybrid_data_analysis.py b/examples/2026_data_paper/hybrid_data_analysis.py new file mode 100644 index 00000000..38ec3b7d --- /dev/null +++ b/examples/2026_data_paper/hybrid_data_analysis.py @@ -0,0 +1,88 @@ +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +plt.style.use('mosden.plotting') + + +def pure_dataset_plot(base_df: pd.DataFrame): + cfy = r'$CFY$' + tau = r'$\tau$' + pn = r'$P_n$' + nu = r'$\nu_d (I)$' + nu_err = r'$\Delta \nu_d (I)$' + hl = r'$\bar{\tau} (I)$ $[s]$' + hl_err = r'$\Delta \bar{\tau} (I)$ $[s]$' + + df = base_df.loc[base_df[cfy] == base_df[tau]] + df = df.loc[df[cfy] == df[pn]] + iaea_df_row = base_df.loc[base_df[cfy] == 'JENDL-5'].loc[base_df[pn] == 'IAEA'].loc[base_df[tau] == 'IAEA'] + pure_df = pd.concat((df, iaea_df_row)) + + ax = sns.barplot(pure_df, x=pn, y=nu, palette='viridis') + x_coords = [p.get_x() + p.get_width() / 2 for p in ax.patches] + y_coords = [p.get_height() for p in ax.patches] + ax.errorbar(x=x_coords, y=y_coords, yerr=pure_df[nu_err], + fmt='none', capsize=3) + ax.set_xticklabels(ax.get_xticklabels(), rotation=25, ha='right') + plt.xlabel('Dataset') + plt.ylim((0, np.max(1.1*pure_df[nu]))) + plt.tight_layout() + plt.savefig(f'./pure_yield_bar.png') + plt.close() + + + ax = sns.barplot(pure_df, x=pn, y=hl, palette='viridis') + x_coords = [p.get_x() + p.get_width() / 2 for p in ax.patches] + y_coords = [p.get_height() for p in ax.patches] + ax.errorbar(x=x_coords, y=y_coords, yerr=pure_df[hl_err], + fmt='none', capsize=3) + ax.set_xticklabels(ax.get_xticklabels(), rotation=25, ha='right') + plt.xlabel('Dataset') + plt.ylim((0, np.max(1.1*pure_df[hl]))) + plt.tight_layout() + plt.savefig(f'./pure_hl_bar.png') + plt.close() + + + return None + +def heatmap_plot(base_df: pd.DataFrame): + x = r'$CFY$' + y = r'$P_n$' + z = r'$\nu_d (I)$' + numin = np.min(base_df[z]) + numax = np.max(base_df[z]) + for tau in set(base_df[r'$\tau$']): + df = base_df.loc[base_df[r'$\tau$'] == tau] + X = df[x] + Y = df[y] + Z = df[z] + df = pd.DataFrame.from_dict(np.array([X, Y, Z]).T) + df.columns = [x, y, z] + pivotted = df.pivot(index=x, columns=y, values=z) + color = sns.color_palette("viridis", as_cmap=True) + pivotted = pivotted.astype(float) + ax = sns.heatmap(pivotted, cmap=color, vmin=numin, vmax=numax) + ax.set_xticklabels(ax.get_xticklabels(), rotation=25, ha='right') + ax.invert_yaxis() + ax.collections[0].colorbar.set_label(z) + plt.tight_layout() + plt.savefig(f'./yield_surf_tau_{tau.replace('/','')}.png') + plt.close() + + return None + + +def process_data(data_path: str): + df = pd.read_csv(data_path) + pure_dataset_plot(df) + heatmap_plot(df) + + return None + + + +if __name__ == '__main__': + data_table_path = './data/images/data.csv' + process_data(data_table_path) \ No newline at end of file From d6f81c251580a551c7fedd8bcea264e4b77f5b4b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 6 Apr 2026 08:00:05 -0500 Subject: [PATCH 142/170] Add more data plotting --- .../2026_data_paper/hybrid_data_analysis.py | 58 +++++++++++-------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/examples/2026_data_paper/hybrid_data_analysis.py b/examples/2026_data_paper/hybrid_data_analysis.py index 38ec3b7d..cb74f1be 100644 --- a/examples/2026_data_paper/hybrid_data_analysis.py +++ b/examples/2026_data_paper/hybrid_data_analysis.py @@ -5,45 +5,55 @@ plt.style.use('mosden.plotting') -def pure_dataset_plot(base_df: pd.DataFrame): - cfy = r'$CFY$' - tau = r'$\tau$' - pn = r'$P_n$' - nu = r'$\nu_d (I)$' - nu_err = r'$\Delta \nu_d (I)$' - hl = r'$\bar{\tau} (I)$ $[s]$' - hl_err = r'$\Delta \bar{\tau} (I)$ $[s]$' - - df = base_df.loc[base_df[cfy] == base_df[tau]] - df = df.loc[df[cfy] == df[pn]] - iaea_df_row = base_df.loc[base_df[cfy] == 'JENDL-5'].loc[base_df[pn] == 'IAEA'].loc[base_df[tau] == 'IAEA'] - pure_df = pd.concat((df, iaea_df_row)) - - ax = sns.barplot(pure_df, x=pn, y=nu, palette='viridis') +def bar_plot_gen(df, nu, nu_err, hl, hl_err, dataset, save_mod=''): + ax = sns.barplot(df, x=dataset, y=nu, palette='viridis') x_coords = [p.get_x() + p.get_width() / 2 for p in ax.patches] y_coords = [p.get_height() for p in ax.patches] - ax.errorbar(x=x_coords, y=y_coords, yerr=pure_df[nu_err], + ax.errorbar(x=x_coords, y=y_coords, yerr=df[nu_err], fmt='none', capsize=3) ax.set_xticklabels(ax.get_xticklabels(), rotation=25, ha='right') plt.xlabel('Dataset') - plt.ylim((0, np.max(1.1*pure_df[nu]))) + plt.ylim((0, np.max(1.1*df[nu]))) plt.tight_layout() - plt.savefig(f'./pure_yield_bar.png') + plt.savefig(f'./{save_mod}_yield_bar.png') plt.close() - ax = sns.barplot(pure_df, x=pn, y=hl, palette='viridis') + ax = sns.barplot(df, x=dataset, y=hl, palette='viridis') x_coords = [p.get_x() + p.get_width() / 2 for p in ax.patches] y_coords = [p.get_height() for p in ax.patches] - ax.errorbar(x=x_coords, y=y_coords, yerr=pure_df[hl_err], + ax.errorbar(x=x_coords, y=y_coords, yerr=df[hl_err], fmt='none', capsize=3) ax.set_xticklabels(ax.get_xticklabels(), rotation=25, ha='right') plt.xlabel('Dataset') - plt.ylim((0, np.max(1.1*pure_df[hl]))) + plt.ylim((0, np.max(1.1*df[hl]))) plt.tight_layout() - plt.savefig(f'./pure_hl_bar.png') + plt.savefig(f'./{save_mod}_hl_bar.png') plt.close() + +def bar_plots(base_df: pd.DataFrame): + cfy = r'$CFY$' + tau = r'$\tau$' + pn = r'$P_n$' + nu = r'$\nu_d (I)$' + nu_err = r'$\Delta \nu_d (I)$' + hl = r'$\bar{\tau} (I)$ $[s]$' + hl_err = r'$\Delta \bar{\tau} (I)$ $[s]$' + + df = base_df.loc[base_df[cfy] == base_df[tau]] + df = df.loc[df[cfy] == df[pn]] + iaea_df_row = base_df.loc[base_df[cfy] == 'JENDL-5'].loc[base_df[pn] == 'IAEA'].loc[base_df[tau] == 'IAEA'] + pure_df = pd.concat((df, iaea_df_row)) + + bar_plot_gen(pure_df, nu, nu_err, hl, hl_err, pn, save_mod='pure') + + iaea_df = base_df.loc[base_df[pn] == 'IAEA'].loc[base_df[tau] == 'IAEA'] + df = iaea_df + + bar_plot_gen(iaea_df, nu, nu_err, hl, hl_err, cfy, save_mod='iaea') + + return None @@ -76,7 +86,7 @@ def heatmap_plot(base_df: pd.DataFrame): def process_data(data_path: str): df = pd.read_csv(data_path) - pure_dataset_plot(df) + bar_plots(df) heatmap_plot(df) return None @@ -85,4 +95,4 @@ def process_data(data_path: str): if __name__ == '__main__': data_table_path = './data/images/data.csv' - process_data(data_table_path) \ No newline at end of file + process_data(data_table_path) \ No newline at end of file From 1ea41409a00d87575d398fa8ca3176aa31c5ce97 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 6 Apr 2026 08:18:33 -0500 Subject: [PATCH 143/170] Fix test to account for CFY and add more comments --- tests/unit/test_concentrations.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/tests/unit/test_concentrations.py b/tests/unit/test_concentrations.py index f913957a..7a79a711 100644 --- a/tests/unit/test_concentrations.py +++ b/tests/unit/test_concentrations.py @@ -22,6 +22,7 @@ def test_evaluate_conc(): dt = np.diff([0, 1, 2]) # N(dt) = (F*y/lam) * (1 - exp(-lam*dt)) + name = 'Fission and decay' lam = np.log(2) / 10 lam_p = np.log(2) / 10 new_conc, new_p_conc = conc._evaluate_conc( @@ -31,9 +32,10 @@ def test_evaluate_conc(): ) assert new_p_conc == 0 expected = (1.0 / lam) * (1 - np.exp(-lam * 1)) - assert np.isclose(new_conc, expected) + assert np.isclose(new_conc, expected), f"{name}" # N(dt) = N0 * exp(-lam*dt) + name = 'Pure decay' N0 = 5.0 lam = np.log(2) / 10 new_conc, new_p_conc = conc._evaluate_conc( @@ -42,9 +44,10 @@ def test_evaluate_conc(): y_p=0.0, y=1.0 ) expected = N0 * np.exp(-lam * 1) - assert np.isclose(new_conc, expected) + assert np.isclose(new_conc, expected), f"{name}" # N(dt) = N0*exp(-l*dt) + (lp*Np0/(l-lp)) * (exp(-lp*dt) - exp(-l*dt)) + name = 'Pure decay with parent' lam_p = np.log(2) / 30 lam = np.log(2) / 10 Np0, Nc0 = 10.0, 0.0 @@ -57,10 +60,11 @@ def test_evaluate_conc(): expected_c = (Nc0 * np.exp(-lam * 1) + (lam_p * Np0 / (lam - lam_p)) * (np.exp(-lam_p * 1) - np.exp(-lam * 1))) - assert np.isclose(new_p_conc, expected_p), 'Parent incorrect' - assert np.isclose(new_conc, expected_c), 'Daughter incorrect' + assert np.isclose(new_p_conc, expected_p), f'{name} Parent incorrect' + assert np.isclose(new_conc, expected_c), f'{name} Daughter incorrect' # Same but equal half-lives + name = 'Pure decay with parent (same hl)' lam_p = lam = np.log(2) / 10 Np0, Nc0 = 10.0, 0.0 new_conc, new_p_conc = conc._evaluate_conc( @@ -70,10 +74,11 @@ def test_evaluate_conc(): ) expected_p = Np0 * np.exp(-lam_p * 1) expected_c = lam_p * Np0 * 1 * np.exp(-lam * 1) - assert np.isclose(new_p_conc, expected_p), 'Parent incorrect' - assert np.isclose(new_conc, expected_c), 'Daughter incorrect' + assert np.isclose(new_p_conc, expected_p), f'{name} Parent incorrect' + assert np.isclose(new_conc, expected_c), f'{name} Daughter incorrect' # N(dt) = N0 + F*y*dt + name = 'Fission no decay' lam = 0.0 lam_p = np.log(2) / 10 new_conc, new_p_conc = conc._evaluate_conc( @@ -82,7 +87,7 @@ def test_evaluate_conc(): y_p=0.0, y=3.0 ) expected = 2.0 * 3.0 * 1 - assert np.isclose(new_conc, expected) + assert np.isclose(new_conc, expected), f'{name}' # Pulse irradiation lam = np.log(2) / 10 @@ -121,6 +126,7 @@ def test_evaluate_conc(): def test_evaluate_conc(): input_path = './tests/unit/input/input.json' conc = Concentrations(input_path) + conc.conc_method = 'IFY' times = [0, 1, 2] dt = np.diff(times) cur_conc = 0 @@ -136,4 +142,11 @@ def test_evaluate_conc(): new_conc, new_p_conc = conc._evaluate_conc(cur_conc, cur_p_conc, lam_p, lam, ti, dt, fission_rates, concs, p_concs, y_p, y) assert new_p_conc == 0 new_conc_expected = 1/lam * (1 - np.exp(-lam * 1)) - assert new_conc == new_conc_expected + assert new_conc == new_conc_expected, "Concentrations don't match" + + conc.conc_method = 'CFY' + new_conc, new_p_conc = conc._evaluate_conc(cur_conc, cur_p_conc, lam_p, lam, ti, dt, fission_rates, concs, p_concs, y_p, y) + assert new_p_conc == y_p / lam_p + new_conc_expected = (y_p + y) / lam + assert new_conc == new_conc_expected, "Concentrations don't match" + From a4fa6ccb97b1fe70f80aa1d12f74a0e9d8c7efc5 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 6 Apr 2026 09:09:29 -0500 Subject: [PATCH 144/170] Adjust test data for corrected metastable nucs --- .../reference/test4/concentrations.csv | 376 ++-- .../test-data/reference/test4/count_rate.csv | 192 +- .../reference/test4/emission_probability.csv | 80 +- .../reference/test4/group_parameters.csv | 12 +- .../test-data/reference/test4/half_life.csv | 80 +- .../reference/test5/concentrations.csv | 378 ++-- .../test-data/reference/test5/count_rate.csv | 192 +- .../reference/test5/emission_probability.csv | 80 +- .../reference/test5/fission_yield.csv | 500 +++--- .../reference/test5/group_parameters.csv | 12 +- .../test-data/reference/test5/half_life.csv | 80 +- .../reference/test6/concentrations.csv | 370 ++-- .../test-data/reference/test6/count_rate.csv | 1542 ++++++++--------- .../reference/test6/emission_probability.csv | 80 +- .../reference/test6/group_parameters.csv | 12 +- .../test-data/reference/test6/half_life.csv | 80 +- .../reference/test8/group_parameters.csv | 12 +- 17 files changed, 2129 insertions(+), 1949 deletions(-) diff --git a/tests/integration/test-data/reference/test4/concentrations.csv b/tests/integration/test-data/reference/test4/concentrations.csv index 2f8bc1c9..c8466da6 100644 --- a/tests/integration/test-data/reference/test4/concentrations.csv +++ b/tests/integration/test-data/reference/test4/concentrations.csv @@ -1,206 +1,214 @@ Time,Nuclide,Concentration,sigma Concentration +0,Cd132,1.1028021485746955e-08,7.088530315552657e-09 +0,Co71,4.1785186194658653e-10,2.6788428230903487e-10 +0,Ag120,5.893501891906941e-05,3.823592124263742e-05 +0,Cs141,1.5149292936627432,0.030243084671351995 +0,Sr101,1.1052274127136074e-05,5.73035111097771e-06 +0,Zr107,2.4251071376241803e-09,1.5528276718413908e-09 +0,Sb136,0.00030568294518464934,0.00019569188025011738 +0,Cs145,0.0008424761561147824,0.0002012716433636504 +0,In128_m1,0.00015007082899185788,9.828080965415342e-05 +0,Nb107,3.912493986932497e-05,2.508481617918656e-05 +0,Sn134,0.00033758172126008317,0.00021630680379158422 +0,Pd123,4.8987180778214895e-09,3.1379744042959607e-09 +0,As87,0.00036726542809328237,0.00017067168386323422 +0,Tc110,0.00028660053033675804,0.00018347723482393371 +0,Rh121,5.778561433034068e-10,3.701653668806877e-10 +0,Br90,0.016766239035426535,0.001051942666338339 0,I137,1.124883996671712,0.036511612596349136 -0,In128,0.00018515600091790428,0.00012125799377666578 +0,Ga86,2.2319718521399998e-08,1.4313386139684454e-08 +0,Nb109,8.739227151016486e-07,5.657429551890969e-07 +0,Rb94,0.06742443525810204,0.003187590077704834 +0,Co73,3.5403084363953135e-11,2.2686182130984923e-11 +0,Br87,1.613172028625597,0.03500257170613949 +0,Tc114,9.940684234528315e-08,6.734638461420511e-08 +0,I139,0.027862206731330403,0.0027668873242739913 +0,La149,0.0017698988890915686,0.0010278005186328588 +0,Ni75,8.551238569868773e-09,5.473421461079408e-09 +0,In131_m1,0.0,4.76089363493358e-13 +0,Y100,0.007829086811860168,0.004311403091541925 +0,Ga79,0.000776637547547752,0.0001091030347801554 +0,Rb96,0.0007447792770115062,0.00013146288975341948 0,Ge85,2.472367262773268e-05,1.5825949552697886e-05 +0,Pd122,7.140415345845826e-08,4.573532453910508e-08 +0,Sn133,0.003380168924740183,0.001527769408816989 +0,Mo109,0.00023657536119163253,0.00015166918583668084 +0,Xe144,6.650431295523878e-05,7.413204019139573e-06 +0,Tc116,9.876290931054235e-10,6.342152243270843e-10 +0,Rb97,9.884404390803804e-05,1.4025081005467276e-05 +0,Cu73,3.628710540188767e-06,2.3259850980443915e-06 +0,Cu75,1.841674108763976e-06,1.1786780245538553e-06 +0,Zn84,9.215345558846408e-10,6.060025187057695e-10 +0,Y97_m1,0.0,1.6879531978400872e-12 +0,Se89,0.00040076866182387334,0.00011468923440760976 +0,Ag125,2.2221634526331197e-08,1.4226934977718059e-08 +0,Ga81,0.00014968035446120864,3.0328868995195228e-05 +0,Ag129,8.146975127905937e-17,5.235192892339521e-17 +0,Cu79,5.187057281392289e-09,3.3203493852175837e-09 +0,Sr102,4.966120351552528e-07,2.906831091331771e-07 +0,Xe146,1.1968117223384662e-07,6.998197933511106e-08 +0,I141,0.0003122330510313359,0.00010391235434038751 +0,Xe143,0.00026780246606506467,0.00017142265490239716 +0,Ag121,3.9138522994617927e-05,1.3601679285832257e-05 +0,Rh124,1.317362648019933e-14,8.485799335737544e-15 +0,I138,0.14378183654226137,0.00738092441091746 +0,Co74,3.714583466847598e-12,2.383938917381913e-12 +0,Xe142,0.008734404596595503,0.0007717214662392944 0,Kr98,9.703877356272816e-07,6.275780409707926e-07 -0,Cd127,4.034103827330181e-05,1.8718396672143557e-05 +0,Ag124,1.5865435514166304e-06,1.0416842971397075e-06 0,Nb108,2.644076146886239e-06,1.6942242392122814e-06 -0,Sr99,0.0006840018870407429,0.00014091802915365472 -0,Cs145,0.0008424761561147824,0.0002012716433636504 +0,Mn70,6.387936031743079e-15,3.1367177186332335e-14 +0,Cd128,1.200596730239502e-05,7.684501989780481e-06 +0,Zn80,2.287123077337393e-06,1.4638078053115882e-06 +0,Br91,0.0019750917992539508,0.0003224796187942117 +0,Y103,3.096588292065301e-05,1.9929011791787224e-05 +0,Rh118,1.2216540001157338e-06,7.830249322276764e-07 +0,Ru121,2.648135217281255e-13,1.7153741900402487e-13 +0,Rb101,1.6599520019262258e-09,1.0885135197405837e-09 +0,Y105,2.763124101479045e-07,1.7792740465621804e-07 +0,In129,0.0002586471979949641,9.225562787847963e-05 +0,Ge84,0.00045104752694433245,0.0001279529210628389 +0,Zn82,3.827828645074522e-08,2.450406398753393e-08 +0,Ba147,0.003557587610769557,0.00072776498354934 +0,La148,0.007880688724128181,0.0048148686975924134 +0,Br94,5.582562850322886e-07,3.453630888004618e-07 +0,Co70,1.1612902282163813e-09,7.46696594703663e-10 +0,Sr98,0.008366125138553443,0.0006899417912009069 +0,Cs142,0.06751075815845875,0.002570603237750841 +0,Tc112,8.549686399521445e-06,5.478961418588178e-06 +0,Ga87,1.7190557841372488e-11,1.1254572026525765e-11 +0,Kr95,2.1642104434272682e-05,1.0272138585381986e-05 +0,Sn137,6.64255242484076e-08,4.281840831088093e-08 +0,Zn83,7.587942699270835e-10,4.861648669530365e-10 +0,Ag122_m1,1.6480012211507657e-06,1.1323349785420852e-06 +0,In130,0.00038133754260743277,0.00012727776011205709 +0,Co75,3.983443711434402e-13,2.555777711492282e-13 0,Ni77,1.9930357141235271e-10,1.2766074672988774e-10 -0,Cu75,1.841674108763976e-06,1.1786780245538553e-06 -0,Kr97,6.120277560781505e-08,3.9367684925001434e-08 -0,Rh116,1.6833222701092596e-05,1.0873991390751045e-05 +0,Te136,0.37145249359884425,0.03684455952244577 +0,Br89,0.07061365229886706,0.003225780945051474 +0,Rh116,2.037705905921735e-05,1.312465419357817e-05 +0,Ag128,1.4664314181857866e-14,9.400348352416019e-15 0,Nb106,0.0006991074648942952,0.00035928195465386245 -0,Y105,2.763124101479045e-07,1.7792740465621804e-07 +0,Se88,0.008725670102436401,0.0016103097989740584 +0,Tc115,9.544240702899129e-09,6.113200861999318e-09 +0,Nb110,2.1731320811016862e-08,1.3911070045878708e-08 +0,Rb93,0.30198094592393293,0.005821813919733452 +0,Xe145,1.9493607264022407e-06,1.1892804191937006e-06 +0,Kr97,6.120277560781505e-08,3.9367684925001434e-08 +0,Zn79,1.8556571217110535e-05,8.755041494952658e-06 +0,Tc113,1.1468694994298554e-06,7.364742582422146e-07 +0,Xe141,0.033628303156581864,0.001098400502873031 +0,I140,0.0016204718297961255,0.00045796333619904 0,Cu80,3.119951022960229e-10,2.004528254841781e-10 +0,Sb134_m1,0.05816203636207889,0.037228313980850664 +0,Cd129,6.704820593435391e-09,4.294759460349018e-09 +0,Mo110,2.8201405889307312e-05,1.8075630147105326e-05 +0,Rb92,0.31046562120638826,0.005415298698972368 +0,Y99,0.047229472611507894,0.0036985953470681206 +0,Cs146,6.112782943838794e-05,2.0230510044235075e-05 +0,Zr106,9.605570053132736e-08,6.15955680804897e-08 +0,La147,0.05646805136735979,0.004083902249234997 +0,As85,0.006653360755611069,0.00425821510283963 +0,In127_m1,0.0006027046705470523,0.00017574934844632762 +0,Ba149,1.6988892186630768e-05,1.0876743125940358e-05 +0,Y98_m1,0.03771676309623113,0.011912545747929304 +0,Ru116,5.743691422482375e-07,3.679876042689996e-07 +0,Sr99,0.0006840018870407429,0.00014091802915365472 +0,Y101,0.0021423491599582094,0.0002490686180773977 +0,Cs143,0.039438108913487376,0.0018528385390435378 +0,Rh123,8.024841809363674e-13,5.147283928663602e-13 +0,Pd126,0.0,7.040351799538143e-14 +0,Kr93,0.009954561927852018,0.00046187957585652837 +0,Ga82,5.661368461211863e-05,3.6233255062432184e-05 +0,Br92,0.00017956756774146004,0.00011516952272269984 +0,Co72,8.855792578628453e-11,5.667938510279351e-11 +0,Cd131,1.567338860024903e-05,1.0423246761221736e-05 0,Pd127,1.8366220561866707e-21,5.2081292151530687e-14 -0,Xe145,1.9493607264022407e-06,1.1892804191937006e-06 -0,Ga85,7.137762224471928e-09,4.569118997639451e-09 -0,Nb109,8.739227151016486e-07,5.657429551890969e-07 +0,In132,2.6577870678371435e-05,6.257979479930021e-06 +0,Cu74,1.7729931107953449e-06,1.1348210676803998e-06 +0,Zr105,0.0011597152301053239,0.0007438169969402623 +0,Ru120,6.321956065607958e-12,4.055807566228364e-12 +0,Kr96,4.343509840966059e-05,2.8057050158493928e-05 +0,Zr104,0.0017338363448713078,0.0004261530227089933 +0,Cs144,0.007066471910833082,0.0006504975058304286 +0,In131,9.591139784521415e-05,3.246614676490329e-05 +0,Ba148,0.00029964949642038893,0.00015635557535715374 +0,Br93,1.1922242997979442e-05,5.607677951950299e-06 +0,Ag123,2.076755904622061e-06,1.3302804913781086e-06 +0,Ru119,2.492105711517945e-10,1.5965735342914224e-10 +0,Mn68,1.3118638780084598e-12,8.428952643773895e-13 +0,Ru117,6.478688702697007e-08,4.148333922735342e-08 +0,In133,1.2441695013508289e-06,7.964156723252753e-07 +0,Nb105,0.014313971012599316,0.004215123848896034 +0,Y97,0.2653461881665886,0.058341385823994944 +0,As86,0.007312327422157877,0.001248226404037368 +0,Sb140,2.2277131946964026e-09,1.4286859167688342e-09 +0,In128,0.00021601533440422166,0.00013910803529059815 0,Mo111,2.924221701893955e-06,1.8768458562140055e-06 -0,I139,0.027862206731330403,0.0027668873242739913 -0,In129,0.0004964151328898405,0.00017704721098212668 -0,Sb134,0.06121052567179954,0.03917957608041593 -0,Rh119,1.5792294141133458e-07,1.0119476469782427e-07 -0,Te138,0.0019087297014339954,0.0008040684073677114 -0,Cs147,9.42927671179463e-06,6.034877089425987e-06 -0,Ge84,0.00045104752694433245,0.0001279529210628389 -0,Xe142,0.008734404596595503,0.0007717214662392944 -0,Pd124,6.405471384033167e-10,4.10459827748859e-10 -0,Ag126,1.3665559995999743e-12,8.747957868181175e-13 -0,Cs143,0.039438108913487376,0.0018528385390435378 -0,Kr92,0.04576464673689404,0.00140817874136106 -0,Co75,3.983443711434402e-13,2.555777711492282e-13 -0,Ni76,1.914336482878104e-09,1.2253719418304947e-09 -0,Tc114,1.1045204705031464e-07,7.406052033789203e-08 -0,La150,0.00015365829435237658,9.852577263400666e-05 -0,Sb136,0.00030568294518464934,0.00019569188025011738 -0,Rb96,0.0007447792770115062,0.00013146288975341948 +0,Sr97,0.011192718346964479,0.0005137801583767754 +0,Mn66,1.0035518120164117e-11,6.425070793366717e-12 +0,Cu81,1.6580134093189317e-11,1.0821765176749329e-11 +0,Kr99,5.173888915053951e-10,3.651111255149778e-10 +0,Tc111,3.1771370825182855e-05,2.0448226309628567e-05 +0,Sb138,1.1157919796704903e-06,7.145188610770758e-07 +0,Rb102,1.3968121838393133e-10,9.136707632230562e-11 0,Rh122,2.34816607056694e-11,1.504336202637936e-11 -0,Cs150,2.8325501102290097e-10,1.815865564460341e-10 -0,Sr101,1.1052274127136074e-05,5.73035111097771e-06 -0,Rh120,1.8075694537022572e-08,1.158837951994366e-08 -0,Ag129,8.146975127905937e-17,5.235192892339521e-17 +0,Rb98,1.3310470862114545e-05,5.543196498594369e-06 0,Te137,0.01841686961734059,0.0024003672807921587 +0,Sb135,0.004583013179731559,0.0004883741237386519 +0,Ni76,1.914336482878104e-09,1.2253719418304947e-09 +0,Pd121,6.11809252628598e-07,3.915644058359829e-07 0,Sb137,0.0005296226051203003,0.0003399669488571203 -0,Y103,3.096588292065301e-05,1.9929011791787224e-05 -0,Co70,5.220667574636474e-09,3.341990015635059e-09 -0,Pd126,0.0,7.040351799538143e-14 -0,Cs141,1.5149292936627432,0.030243084671351995 -0,Zn84,9.215345558846408e-10,6.060025187057695e-10 -0,Kr94,0.0003645196368625332,7.898348785454662e-05 -0,As86,0.007312327422157877,0.001248226404037368 -0,Xe143,0.00026780246606506467,0.00017142265490239716 -0,Cs148,2.9493153810400625e-07,1.8877038232218619e-07 -0,Ga84,1.4500620138828879e-05,9.28822162704711e-06 -0,Rb95,0.004457915583677064,0.00030997827217864 -0,Rb99,7.433374824143002e-07,4.758741360333016e-07 -0,Br89,0.07061365229886706,0.003225780945051474 -0,Sr97,0.011192718346964479,0.0005137801583767754 -0,Cu73,3.628710540188767e-06,2.3259850980443915e-06 -0,Br93,1.1922242997979442e-05,5.607677951950299e-06 -0,Rh123,8.024841809363674e-13,5.147283928663602e-13 -0,Cs142,0.06751075815845875,0.002570603237750841 -0,Rb101,1.6599520019262258e-09,1.0885135197405837e-09 -0,Cu76,7.730088290947924e-07,4.94820688699058e-07 -0,Rh117,6.336373360780286e-06,4.099930185585952e-06 -0,Br88,0.41470069266932635,0.015258378692793471 -0,Rb98,1.1111349589243446e-05,4.60401868679116e-06 +0,Pd125,9.571390082897755e-12,6.2187422023649836e-12 +0,Pd124,6.405471384033167e-10,4.10459827748859e-10 +0,In130_m2,0.0,7.718418468755954e-13 0,Cu77,3.2883768321162164e-07,2.1046103474122743e-07 -0,Ga86,2.2319718521399998e-08,1.4313386139684454e-08 -0,Zr106,9.605570053132736e-08,6.15955680804897e-08 -0,Ag125,2.0075226645946934e-08,1.311891965347068e-08 +0,Cs150,2.8325501102290097e-10,1.815865564460341e-10 +0,Se87,0.062451803367402935,0.0037407479198569055 +0,Ru118,6.521136950883246e-09,4.178204491630281e-09 0,In134,4.869767932653489e-08,3.1259928799991265e-08 -0,Sn134,0.00033758172126008317,0.00021630680379158422 -0,Y104,4.139597073282549e-06,2.677971741982095e-06 -0,Ga83,1.6983238957259143e-06,1.0869411087348493e-06 -0,I141,0.0003122330510313359,0.00010391235434038751 -0,I140,0.0016204718297961255,0.00045796333619904 -0,Ru121,2.648135217281255e-13,1.7153741900402487e-13 -0,Se88,0.008725670102436401,0.0016103097989740584 -0,Ru119,2.492105711517945e-10,1.5965735342914224e-10 -0,Zr107,2.4251071376241803e-09,1.5528276718413908e-09 -0,Sn137,6.64255242484076e-08,4.281840831088093e-08 -0,Tc109,0.0005203764432953729,0.00016049112601211824 -0,Cu74,1.7729931107953449e-06,1.1348210676803998e-06 -0,Sr98,0.008366125138553443,0.0006899417912009069 -0,Y97,0.08300936902537666,0.018341329943598304 -0,Ga82,5.661368461211863e-05,3.6233255062432184e-05 -0,Y98,0.06743365234817927,0.015236638135122315 -0,Y99,0.047229472611507894,0.0036985953470681206 -0,Zr104,0.0017338363448713078,0.0004261530227089933 -0,La148,0.007880688724128181,0.0048148686975924134 -0,Tc113,1.1468694994298554e-06,7.364742582422146e-07 -0,Pd128,6.611138771852354e-16,3.0213578605393026e-15 -0,Y102,0.0012168645038974585,0.0007581592424983709 -0,Ag120,2.7586604600415468e-05,1.7931562214081935e-05 -0,Tc110,0.00028660053033675804,0.00018347723482393371 +0,Ga84,1.4500620138828879e-05,9.28822162704711e-06 +0,Kr92,0.04576464673689404,0.00140817874136106 +0,In129_m1,0.0004612808656908789,0.00010107794611441383 +0,Ag120_m1,2.149587963116792e-05,1.3792915082334519e-05 +0,Cs147,9.42927671179463e-06,6.034877089425987e-06 +0,Br88,0.41470069266932635,0.015258378692793471 +0,La150,0.00015365829435237658,9.852577263400666e-05 0,Rb100,2.434429436958616e-05,1.5609569662173555e-05 -0,Sr100,0.00016219761776882394,5.541832406944447e-05 -0,Cu81,1.6580134093189317e-11,1.0821765176749329e-11 -0,Zn83,7.587942699270835e-10,4.861648669530365e-10 -0,Mn69,1.1506290659448556e-13,7.469142630827825e-14 -0,Pd121,6.11809252628598e-07,3.915644058359829e-07 -0,In133,1.2825697946023977e-06,8.251795873235754e-07 -0,Nb107,3.912493986932497e-05,2.508481617918656e-05 -0,Sn136,4.469327600809717e-07,2.8610385621492065e-07 -0,Mn68,1.3118638780084598e-12,8.428952643773895e-13 -0,Tc111,3.1771370825182855e-05,2.0448226309628567e-05 -0,Cs144,0.007066471910833082,0.0006504975058304286 -0,Rb94,0.06742443525810204,0.003187590077704834 -0,Co71,4.1785186194658653e-10,2.6788428230903487e-10 -0,Ru120,6.321956065607958e-12,4.055807566228364e-12 -0,Cd128,1.200596730239502e-05,7.684501989780481e-06 -0,Cs149,3.81276581239941e-09,2.44952322266523e-09 -0,Sr102,4.966120351552528e-07,2.906831091331771e-07 -0,Cd132,1.1028021485746955e-08,7.088530315552657e-09 -0,As85,0.006653360755611069,0.00425821510283963 -0,Zn79,1.8556571217110535e-05,8.755041494952658e-06 -0,Sb140,2.2277131946964026e-09,1.4286859167688342e-09 -0,Kr96,4.343509840966059e-05,2.8057050158493928e-05 -0,Cs146,6.112782943838794e-05,2.0230510044235075e-05 -0,In130,0.0007418748556180965,0.0002468110512361579 -0,In127,0.002334005486818431,0.00041732380401367995 -0,Te136,0.37145249359884425,0.03684455952244577 -0,Ag128,1.4664314181857866e-14,9.400348352416019e-15 -0,Se91,6.1292580625776354e-06,4.083649600135913e-06 -0,Ru117,6.478688702697007e-08,4.148333922735342e-08 +0,Ag127,2.6941570244741086e-13,1.7244748256361564e-13 0,Cd130,0.00015488037773644188,9.91621278521787e-05 -0,Mo110,2.8201405889307312e-05,1.8075630147105326e-05 -0,Tc115,9.544240702899129e-09,6.113200861999318e-09 -0,Ru118,6.521136950883246e-09,4.178204491630281e-09 -0,Br87,1.613172028625597,0.03500257170613949 -0,Zr105,0.0011597152301053239,0.0007438169969402623 -0,Ag123,2.076755904622061e-06,1.3302804913781086e-06 +0,Cs149,3.81276581239941e-09,2.44952322266523e-09 +0,Ag122,4.554342579089505e-06,2.919366103086645e-06 +0,Nb104,0.033531964280982776,0.02163429837481858 +0,Kr94,0.0003645196368625332,7.898348785454662e-05 +0,Ga85,7.137762224471928e-09,4.569118997639451e-09 +0,Y102,0.0012168645038974585,0.0007581592424983709 +0,Cu76,7.730088290947924e-07,4.94820688699058e-07 +0,Rh117,6.336373360780286e-06,4.099930185585952e-06 0,Zn81,7.268557156836453e-08,4.7335143212675794e-08 -0,Ag124,1.1961375466177736e-06,7.83346609221635e-07 -0,Ag127,2.6941570244741086e-13,1.7244748256361564e-13 -0,Mn70,6.387936031743079e-15,3.1367177186332335e-14 -0,Xe144,6.650431295523878e-05,7.413204019139573e-06 -0,Ba148,0.00029964949642038893,0.00015635557535715374 -0,Br94,5.582562850322886e-07,3.453630888004618e-07 -0,Y100,0.010053745359492567,0.005545365975430271 -0,Br91,0.0019750917992539508,0.0003224796187942117 -0,Se89,0.00040076866182387334,0.00011468923440760976 -0,Zr103,0.012249494448121324,0.006736348916645337 -0,Ga79,0.000776637547547752,0.0001091030347801554 -0,Cu79,5.187057281392289e-09,3.3203493852175837e-09 -0,As87,0.00036726542809328237,0.00017067168386323422 -0,Sb135,0.004583013179731559,0.0004883741237386519 -0,Nb104,0.006706392856196554,0.0043187346962282784 -0,Nb105,0.014313971012599316,0.004215123848896034 -0,Mo109,0.00023657536119163253,0.00015166918583668084 -0,I138,0.14378183654226137,0.00738092441091746 -0,Pd123,4.8987180778214895e-09,3.1379744042959607e-09 -0,Y101,0.0021423491599582094,0.0002490686180773977 -0,Xe147,3.2314501563586603e-09,2.1296804203363497e-09 -0,Ni75,8.551238569868773e-09,5.473421461079408e-09 -0,Cd131,1.567338860024903e-05,1.0423246761221736e-05 -0,Rh124,1.317362648019933e-14,8.485799335737544e-15 -0,Sb138,1.1157919796704903e-06,7.145188610770758e-07 -0,Rb97,9.884404390803804e-05,1.4025081005467276e-05 -0,Zn80,2.287123077337393e-06,1.4638078053115882e-06 -0,Kr93,0.009954561927852018,0.00046187957585652837 -0,Ru116,5.743691422482375e-07,3.679876042689996e-07 -0,Cu78,6.869117893047866e-08,4.396440071032322e-08 -0,Xe141,0.033628303156581864,0.001098400502873031 +0,Cs148,2.9493153810400625e-07,1.8877038232218619e-07 0,As84,0.007818287034828862,0.0050050756355145285 -0,Cd129,6.704820593435391e-09,4.294759460349018e-09 -0,Sn133,0.003380168924740183,0.001527769408816989 -0,Xe146,1.1968117223384662e-07,6.998197933511106e-08 -0,Tc116,9.876290931054235e-10,6.342152243270843e-10 -0,Pd122,7.140415345845826e-08,4.573532453910508e-08 -0,Rh118,1.2216540001157338e-06,7.830249322276764e-07 -0,In131,0.00011538213274612227,4.4513428102614914e-05 -0,Co74,3.714583466847598e-12,2.383938917381913e-12 -0,Co73,3.5403084363953135e-11,2.2686182130984923e-11 -0,La149,0.0017698988890915686,0.0010278005186328588 -0,Zn82,3.827828645074522e-08,2.450406398753393e-08 -0,Co68,2.993155938864235e-08,1.9961406983167857e-08 -0,Ga81,0.00014968035446120864,3.0328868995195228e-05 +0,Rh120,1.8075694537022572e-08,1.158837951994366e-08 +0,Y104,4.139597073282549e-06,2.677971741982095e-06 0,Ge86,0.0019138843158365434,0.0003605993570088887 -0,Tc112,8.549686399521445e-06,5.478961418588178e-06 -0,Ag122,1.7218686499393215e-06,1.1830880842667757e-06 -0,Ba149,1.6988892186630768e-05,1.0876743125940358e-05 -0,La147,0.05646805136735979,0.004083902249234997 -0,Co72,8.219551170066798e-11,5.2612120703889907e-11 -0,Rh121,5.778561433034068e-10,3.701653668806877e-10 -0,Ag121,3.9138522994617927e-05,1.3601679285832257e-05 -0,Br92,0.00017956756774146004,0.00011516952272269984 -0,Rb92,0.31046562120638826,0.005415298698972368 +0,Sn136,4.469327600809717e-07,2.8610385621492065e-07 +0,Te138,0.0019087297014339954,0.0008040684073677114 +0,Pd128,6.611138771852354e-16,3.0213578605393026e-15 +0,Xe147,3.2314501563586603e-09,2.1296804203363497e-09 +0,Mn69,1.1506290659448556e-13,7.469142630827825e-14 +0,In130_m1,0.0,7.718418468755954e-13 +0,Rb95,0.004457915583677064,0.00030997827217864 +0,Rb99,7.433374824143002e-07,4.758741360333016e-07 +0,Zr103,0.012249494448121324,0.006736348916645337 +0,Rh119,1.5792294141133458e-07,1.0119476469782427e-07 0,Sn135,1.1516068067321044e-05,5.95250625340372e-06 +0,Y98,0.015928293744311314,0.0035573158450251524 +0,Ga80,0.00033265951513173416,8.711255569939079e-05 +0,Nb104_m1,0.004844267933525279,0.0031195774792724617 +0,Se91,6.1292580625776354e-06,4.083649600135913e-06 +0,Ga83,1.6983238957259143e-06,1.0869411087348493e-06 +0,In127,0.0007012338209429614,0.00012542909821947797 0,Sb139,4.471576884286194e-08,2.8703357344779696e-08 -0,Kr95,2.1642104434272682e-05,1.0272138585381986e-05 -0,Br90,0.016766239035426535,0.001051942666338339 -0,Kr99,5.173888915053951e-10,3.651111255149778e-10 -0,Rb93,0.30198094592393293,0.005821813919733452 -0,Mn66,1.0035518120164117e-11,6.425070793366717e-12 -0,Ba147,0.003557587610769557,0.00072776498354934 -0,Rb102,1.3968121838393133e-10,9.136707632230562e-11 -0,Ga87,1.7190557841372488e-11,1.1254572026525765e-11 -0,Ga80,0.00022760914193223916,6.808249119945713e-05 -0,In132,2.6577870678371435e-05,6.257979479930021e-06 -0,Se87,0.062451803367402935,0.0037407479198569055 -0,Nb110,2.72365887498078e-08,1.7625407623285278e-08 -0,Pd125,9.571390082897755e-12,6.2187422023649836e-12 +0,Sr100,0.00016219761776882394,5.541832406944447e-05 +0,Cu78,6.869117893047866e-08,4.396440071032322e-08 +0,Tc109,0.0005203764432953729,0.00016049112601211824 diff --git a/tests/integration/test-data/reference/test4/count_rate.csv b/tests/integration/test-data/reference/test4/count_rate.csv index 8d238861..7088041c 100644 --- a/tests/integration/test-data/reference/test4/count_rate.csv +++ b/tests/integration/test-data/reference/test4/count_rate.csv @@ -1,101 +1,101 @@ times,counts,sigma counts -0.0,0.023600336170557675,0.004821949019405518 -6.0606060606060606,0.006052130164756723,0.000491491807008618 -12.121212121212121,0.00376718737209701,0.00021011061459441744 -18.18181818181818,0.0028086358183352293,0.00013704160484092435 -24.242424242424242,0.002235504613461828,0.00010390518503035691 -30.303030303030305,0.0018320132373954193,8.314454514680999e-05 -36.36363636363636,0.0015252012195614412,6.819885300493273e-05 -42.42424242424242,0.001282330294872936,5.674641986032977e-05 -48.484848484848484,0.001085611534211331,4.7676503422048116e-05 -54.54545454545455,0.0009240182005897881,4.0349990009675614e-05 -60.60606060606061,0.0007900453236002864,3.4354563802357364e-05 -66.66666666666667,0.000678239342344227,2.940314910138605e-05 -72.72727272727272,0.0005844580797254178,2.5285166606397216e-05 -78.78787878787878,0.0005054625823293822,2.1840570088377944e-05 -84.84848484848484,0.000438671799308539,1.8944768337236062e-05 -90.9090909090909,0.0003820032001388878,1.6499177491873584e-05 -96.96969696969697,0.00033376225778502204,1.4424903884799957e-05 -103.03030303030303,0.00029256187116298446,1.2658293082564343e-05 -109.0909090909091,0.00025726144915742653,1.1147666590970573e-05 -115.15151515151516,0.00022691969005906107,9.850859136746231e-06 -121.21212121212122,0.00020075734975007317,8.733321625499766e-06 -127.27272727272727,0.00017812754473803174,7.766638575531547e-06 -133.33333333333334,0.00015849187498343583,6.927357483869899e-06 -139.3939393939394,0.00014140111556594083,6.19605751609786e-06 -145.45454545454544,0.00012647953546785515,5.55660435426401e-06 -151.5151515151515,0.00011341211846900665,4.995551287612026e-06 -157.57575757575756,0.0001019341192176932,4.501656028612948e-06 -163.63636363636363,9.182250632330723e-05,4.065489613571389e-06 -169.6969696969697,8.288893549622775e-05,3.679118898822562e-06 -175.75757575757575,7.497396680724273e-05,3.3358480901566368e-06 -181.8181818181818,6.794229607950978e-05,3.0300077737889366e-06 -187.87878787878788,6.167881480068012e-05,2.7567822779797833e-06 -193.93939393939394,5.608534833403942e-05,2.5120680460181913e-06 -200.0,5.107795055083118e-05,2.2923571611917473e-06 -206.06060606060606,4.65846557800101e-05,2.0946413202545637e-06 -212.12121212121212,4.254360732175196e-05,1.916332470256525e-06 -218.1818181818182,3.890149659269674e-05,1.7551970554003486e-06 -224.24242424242425,3.5612258969289844e-05,1.6093014052934462e-06 -230.3030303030303,3.2635982128792466e-05,1.4769662642712943e-06 -236.36363636363637,2.9937990598937854e-05,1.3567288374197152e-06 -242.42424242424244,2.7488076670178424e-05,1.2473110313947093e-06 -248.48484848484847,2.5259853081364453e-05,1.1475928120113306e-06 -254.54545454545453,2.323020718667963e-05,1.0565897976102666e-06 -260.6060606060606,2.1378839830268592e-05,9.734343667337976e-07 -266.6666666666667,1.9687875041238897e-05,8.973596880555494e-07 -272.72727272727275,1.814152903327972e-05,8.276861857048866e-07 -278.7878787878788,1.6725828945025757e-05,7.638100388082462e-07 -284.8484848484849,1.542837336637508e-05,7.051933839941022e-07 -290.9090909090909,1.423812802454191e-05,6.513559467851399e-07 -296.96969696969694,1.3145251102275615e-05,6.018678746455527e-07 -303.030303030303,1.2140943570554709e-05,5.563435829046495e-07 -309.09090909090907,1.1217320672700573e-05,5.144364564039707e-07 -315.1515151515151,1.0367301323625882e-05,4.758342757758577e-07 -321.2121212121212,9.584512709220247e-06,4.402552587770878e-07 -327.27272727272725,8.86320780501801e-06,4.074446248981597e-07 -333.3333333333333,8.198193895334028e-06,3.77171606217604e-07 -339.3939393939394,7.584770476356613e-06,3.4922683971635083e-07 -345.45454545454544,7.018675179428733e-06,3.234200864536059e-07 -351.5151515151515,6.4960365623174015e-06,2.995782314949668e-07 -357.57575757575756,6.01333279359243e-06,2.7754352557160733e-07 -363.6363636363636,5.567355404034167e-06,2.57172035378553e-07 -369.6969696969697,5.155177404005252e-06,2.3833227438905603e-07 -375.75757575757575,4.7741251708824256e-06,2.2090399023412122e-07 -381.8181818181818,4.4217535992120146e-06,2.047770882056355e-07 -387.8787878787879,4.095824080936925e-06,1.8985067339910022e-07 -393.93939393939394,3.7942849460982165e-06,1.7603219650906529e-07 -400.0,3.515254047718835e-06,1.6323669040266947e-07 -406.06060606060606,3.2570032196969305e-06,1.5138608638686986e-07 -412.1212121212121,3.017944374778577e-06,1.4040860060498304e-07 -418.1818181818182,2.796617042137166e-06,1.3023818229129773e-07 -424.24242424242425,2.5916771716729647e-06,1.2081401671473214e-07 -430.3030303030303,2.401887055626578e-06,1.1208007658381168e-07 -436.3636363636364,2.2261062381153046e-06,1.0398471649069433e-07 -442.42424242424244,2.0632833002897994e-06,9.648030566253671e-08 -448.4848484848485,1.91244842342151e-06,8.952289488174469e-08 -454.54545454545456,1.7727066447486697e-06,8.307191394731801e-08 -460.6060606060606,1.6432317316495343e-06,7.70898964899788e-08 -466.6666666666667,1.523260608944775e-06,7.15422293344826e-08 -472.72727272727275,1.41208828208309e-06,6.639692393224907e-08 -478.7878787878788,1.3090632058261912e-06,6.162440767362994e-08 -484.8484848484849,1.213583053982717e-06,5.719733313803325e-08 -490.9090909090909,1.1250908508816115e-06,5.309040355705979e-08 -496.96969696969694,1.0430714297394215e-06,4.9280212955282305e-08 -503.030303030303,9.67048186960448e-07,4.574509959914621e-08 -509.09090909090907,8.965801047964723e-07,4.246501152994026e-08 -515.1515151515151,8.312590177541468e-07,3.942138308466069e-08 -521.2121212121212,7.707071007327035e-07,3.659702142123486e-08 -527.2727272727273,7.145745591531544e-07,3.397600216400717e-08 -533.3333333333334,6.625375033458384e-07,3.1543573373354435e-08 -539.3939393939394,6.142959912328441e-07,2.9286067121273717e-08 -545.4545454545455,5.695722249069688e-07,2.7190818024052275e-08 +0.0,0.02337508382109321,0.004724267039082288 +6.0606060606060606,0.006015936097981887,0.00048067694795026503 +12.121212121212121,0.003763021962864569,0.00020898463399736454 +18.18181818181818,0.0028085015662013693,0.00013705018379634492 +24.242424242424242,0.002235660296023027,0.00010397508879891543 +30.303030303030305,0.0018320936118304063,8.317900549478904e-05 +36.36363636363636,0.0015252290107508318,6.821096771828152e-05 +42.42424242424242,0.0012823369288707288,5.674924468808148e-05 +48.484848484848484,0.0010856113048727037,4.767616407318368e-05 +54.54545454545455,0.0009240163266653291,4.034886306263734e-05 +60.60606060606061,0.0007900434527428792,3.435345322917524e-05 +66.66666666666667,0.0006782378749629535,2.9402266907766516e-05 +72.72727272727272,0.0005844570261519204,2.528452350447823e-05 +78.78787878787878,0.0005054618561861299,2.1840120873380387e-05 +84.84848484848484,0.00043867130927317073,1.8944461888586813e-05 +90.9090909090909,0.0003820028732363863,1.6498971334337274e-05 +96.96969696969697,0.00033376204113975624,1.4424766380649146e-05 +103.03030303030303,0.00029256172814134013,1.265820186424135e-05 +109.0909090909091,0.0002572613549580593,1.1147606287906962e-05 +115.15151515151516,0.00022691962810343373,9.850819361095947e-06 +121.21212121212122,0.00020075730903692133,8.733295428238562e-06 +127.27272727272727,0.00017812751799858707,7.76662133793789e-06 +133.33333333333334,0.00015849185742760268,6.927346148774718e-06 +139.3939393939394,0.00014140110404212047,6.196050065383577e-06 +145.45454545454544,0.00012647952790454832,5.556599458065964e-06 +151.5151515151515,0.00011341211350549784,4.995548070611506e-06 +157.57575757575756,0.00010193411596051561,4.5016539151096495e-06 +163.63636363636363,9.182250418594368e-05,4.065488225111144e-06 +169.6969696969697,8.288893409371996e-05,3.679117986695323e-06 +175.75757575757575,7.497396588695065e-05,3.335847490948986e-06 +181.8181818181818,6.794229547564194e-05,3.0300073801438227e-06 +187.87878787878788,6.16788144044428e-05,2.756782019371931e-06 +193.93939393939394,5.60853480740431e-05,2.5120678761193838e-06 +200.0,5.107795038023165e-05,2.2923570495690954e-06 +206.06060606060606,4.658465566806946e-05,2.094641246916619e-06 +212.12121212121212,4.2543607248301044e-05,1.9163324220706034e-06 +218.1818181818182,3.8901496544501255e-05,1.7551970237391737e-06 +224.24242424242425,3.561225893766594e-05,1.6093013844893199e-06 +230.3030303030303,3.263598210804217e-05,1.4769662506006922e-06 +236.36363636363637,2.9937990585322375e-05,1.356728828436299e-06 +242.42424242424244,2.748807666124451e-05,1.247311025491189e-06 +248.48484848484847,2.525985307550239e-05,1.1475928081316484e-06 +254.54545454545453,2.3230207182833192e-05,1.056589795060522e-06 +260.6060606060606,2.137883982774472e-05,9.734343650580344e-07 +266.6666666666667,1.968787503958284e-05,8.97359686954153e-07 +272.72727272727275,1.8141529032193078e-05,8.276861849809677e-07 +278.7878787878788,1.6725828944312745e-05,7.638100383324172e-07 +284.8484848484849,1.5428373365907238e-05,7.05193383681331e-07 +290.9090909090909,1.4238128024234929e-05,6.513559465795427e-07 +296.96969696969694,1.3145251102074187e-05,6.018678745104007e-07 +303.030303030303,1.2140943570422541e-05,5.563435828158028e-07 +309.09090909090907,1.121732067261385e-05,5.144364563455623e-07 +315.1515151515151,1.0367301323568977e-05,4.758342757374587e-07 +321.2121212121212,9.58451270918291e-06,4.402552587518424e-07 +327.27272727272725,8.863207804993512e-06,4.074446248815617e-07 +333.3333333333333,8.198193895317952e-06,3.77171606206691e-07 +339.3939393939394,7.5847704763460645e-06,3.4922683970917546e-07 +345.45454545454544,7.018675179421812e-06,3.2342008644888793e-07 +351.5151515151515,6.496036562312861e-06,2.9957823149186454e-07 +357.57575757575756,6.01333279358945e-06,2.775435255695674e-07 +363.6363636363636,5.567355404032211e-06,2.571720353772115e-07 +369.6969696969697,5.15517740400397e-06,2.383322743881738e-07 +375.75757575757575,4.774125170881584e-06,2.2090399023354106e-07 +381.8181818181818,4.421753599211462e-06,2.0477708820525399e-07 +387.8787878787879,4.095824080936562e-06,1.8985067339884926e-07 +393.93939393939394,3.7942849460979785e-06,1.7603219650890025e-07 +400.0,3.515254047718679e-06,1.6323669040256094e-07 +406.06060606060606,3.257003219696828e-06,1.5138608638679847e-07 +412.1212121212121,3.0179443747785103e-06,1.404086006049361e-07 +418.1818181818182,2.7966170421371217e-06,1.3023818229126684e-07 +424.24242424242425,2.591677171672936e-06,1.208140167147118e-07 +430.3030303030303,2.401887055626559e-06,1.1208007658379831e-07 +436.3636363636364,2.226106238115292e-06,1.0398471649068554e-07 +442.42424242424244,2.0632833002897913e-06,9.648030566253093e-08 +448.4848484848485,1.912448423421505e-06,8.952289488174088e-08 +454.54545454545456,1.7727066447486663e-06,8.307191394731551e-08 +460.6060606060606,1.6432317316495318e-06,7.708989648997714e-08 +466.6666666666667,1.5232606089447735e-06,7.154222933448151e-08 +472.72727272727275,1.4120882820830891e-06,6.639692393224836e-08 +478.7878787878788,1.3090632058261906e-06,6.162440767362949e-08 +484.8484848484849,1.2135830539827166e-06,5.719733313803295e-08 +490.9090909090909,1.125090850881611e-06,5.309040355705959e-08 +496.96969696969694,1.0430714297394215e-06,4.928021295528218e-08 +503.030303030303,9.670481869604478e-07,4.574509959914613e-08 +509.09090909090907,8.965801047964722e-07,4.2465011529940205e-08 +515.1515151515151,8.312590177541467e-07,3.942138308466066e-08 +521.2121212121212,7.707071007327034e-07,3.6597021421234835e-08 +527.2727272727273,7.145745591531545e-07,3.3976002164007145e-08 +533.3333333333334,6.625375033458384e-07,3.154357337335442e-08 +539.3939393939394,6.142959912328441e-07,2.928606712127371e-08 +545.4545454545455,5.695722249069688e-07,2.719081802405227e-08 551.5151515151515,5.281088880963481e-07,2.5246088144781702e-08 557.5757575757576,4.896676127367004e-07,2.3440997733463865e-08 563.6363636363636,4.5402756397112417e-07,2.1765461321594076e-08 -569.6969696969697,4.2098413387735e-07,2.0210128732097215e-08 -575.7575757575758,3.903477350990965e-07,1.876633060495577e-08 -581.8181818181818,3.619426863440573e-07,1.7426028074325982e-08 -587.8787878787879,3.3560618241714127e-07,1.6181766264861343e-08 -593.9393939393939,3.111873420931026e-07,1.5026631303744378e-08 +569.6969696969697,4.2098413387735e-07,2.021012873209721e-08 +575.7575757575758,3.903477350990964e-07,1.8766330604955765e-08 +581.8181818181818,3.6194268634405724e-07,1.7426028074325982e-08 +587.8787878787879,3.356061824171413e-07,1.6181766264861343e-08 +593.9393939393939,3.1118734209310265e-07,1.5026631303744375e-08 600.0,2.8854632770590936e-07,1.3954210570925084e-08 diff --git a/tests/integration/test-data/reference/test4/emission_probability.csv b/tests/integration/test-data/reference/test4/emission_probability.csv index 7c78015b..787e5dc2 100644 --- a/tests/integration/test-data/reference/test4/emission_probability.csv +++ b/tests/integration/test-data/reference/test4/emission_probability.csv @@ -29,7 +29,8 @@ F22,4.23,0.04,0.055,0.055 F23,2.23,0.14,0.07,0.07 F24,0.382,0.016,0.029500000000000002,0.029500000000000002 F25,0.075,0.01,0.195,0.05 -F26,0.0022,0.0001,0.021599999999999998,0.019534584715319648 +F26,0.0082,0.0009,0.135,0.04 +F26_m1,0.0022,0.0001,0.021599999999999998,0.019534584715319648 F27,0.0057,0.0008,0.8,0.2 F29,0.00267,0.00021,0.6,0.4 Ne26,0.195,0.002,0.0013,0.0003 @@ -96,7 +97,7 @@ Ca52,4.6,0.3,0.01,0.01 Ca53,0.461,0.09,0.4,0.1 Sc54,0.526,0.015,0.16,0.09 Sc55,0.096,0.002,0.17,0.07 -Sc56,0.069,0.007,0.24,0.12 +Sc56_m1,0.069,0.007,0.24,0.12 V59,0.092,0.009,0.06,0.03 V61,0.0483,0.001,0.2,0.1 V63,0.0196,0.001,0.67,0.33 @@ -106,10 +107,12 @@ Mn66,0.0639,0.0011,0.05,0.013999999999999999 Mn68,0.0352,0.002,0.15,0.09 Mn69,0.0258,0.0028,0.4,0.2 Mn70,0.0199,0.0017,0.5,0.2 -Co68,1.6,0.3,0.06,0.03 -Co70,0.508,0.007,0.03,0.015 +Co68_m1,1.6,0.3,0.06,0.03 +Co70,0.113,0.007,0.03,0.015 +Co70_m1,0.508,0.007,0.03,0.015 Co71,0.08,0.003,0.188,0.08121576201698781 -Co72,0.0478,0.0005,0.074,0.03059411708155671 +Co72,0.0515,0.0003,0.074,0.03059411708155671 +Co72_m1,0.0478,0.0005,0.074,0.03059411708155671 Co73,0.0407,0.0013,0.26,0.09848857801796104 Co74,0.0314,0.0015,0.22999999999999998,0.1522366578718805 Co75,0.0265,0.0012,0.08,0.08 @@ -132,7 +135,8 @@ Zn82,0.1779,0.0025,0.69,0.07 Zn83,0.0997,0.003,0.71,0.29 Zn84,0.0536,0.0081,0.73,0.26 Ga79,2.852,0.01,0.00084,0.00029 -Ga80,1.3,0.2,0.0045000000000000005,0.0007000000000000001 +Ga80,1.9,0.1,0.0045000000000000005,0.0007000000000000001 +Ga80_m1,1.3,0.2,0.0045000000000000005,0.0007000000000000001 Ga81,1.217,0.004,0.125,0.008 Ga82,0.601,0.002,0.22699999999999998,0.02 Ga83,0.31,0.001,0.67,0.06 @@ -173,7 +177,8 @@ Rb94,2.704,0.015,0.1039,0.0022 Rb95,0.378,0.002,0.08800000000000001,0.004 Rb96,0.2016,0.001,0.141,0.008 Rb97,0.169,0.001,0.249,0.015 -Rb98,0.096,0.003,0.07204,0.009001088823025803 +Rb98,0.115,0.006,0.07204,0.009001088823025803 +Rb98_m1,0.096,0.003,0.07204,0.009001088823025803 Rb99,0.0578,0.0009,0.191,0.023 Rb100,0.051,0.002,0.059,0.012041594578792296 Rb101,0.0315,0.0045,0.28,0.05 @@ -184,11 +189,15 @@ Sr99,0.269,0.002,0.00096,0.00016 Sr100,0.2007,0.0013,0.0111,0.0021 Sr101,0.115,0.001,0.0252,0.0025 Sr102,0.072,0.008,0.055,0.02 -Y97,1.17,0.03,0.0003972,0.0003972 -Y98,2.32,0.08,0.03096,0.009216078341680914 +Y97,3.74,0.05,0.00057594,9.93e-05 +Y97_m1,1.17,0.03,0.0003972,0.0003972 +Y98,0.548,0.002,0.0033,0.0003 +Y98_m1,2.32,0.08,0.03096,0.009216078341680914 Y99,1.478,0.007,0.0197,0.003 -Y100,0.94,0.03,0.0051,0.0006 +Y100,0.732,0.005,0.0051,0.0006 +Y100_m1,0.94,0.03,0.0051,0.0006 Y101,0.432,0.012,0.019799999999999998,0.002 +Y102_m1,0.396,0.036,0.06,0.017 Y102,0.3,0.01,0.04,0.015 Y103,0.236,0.016,0.081,0.02 Y104,0.212,0.02,0.34,0.1 @@ -198,13 +207,15 @@ Zr104,0.92,0.028,0.005,0.005 Zr105,0.666,0.028,0.01,0.01 Zr106,0.175,0.007,0.035,0.035 Zr107,0.15,0.003,0.115,0.115 -Nb104,0.98,0.07,0.0005,0.0003 +Nb104,4.9,0.4,0.0006,0.0003 +Nb104_m1,0.98,0.07,0.0005,0.0003 Nb105,2.91,0.07,0.017,0.009000000000000001 Nb106,1.084,0.021,0.045,0.003 Nb107,0.287,0.011,0.07400000000000001,0.01 Nb108,0.192,0.006,0.063,0.005 Nb109,0.113,0.011,0.31,0.05 -Nb110,0.094,0.009,0.2,0.08 +Nb110,0.075,0.001,0.2,0.08 +Nb110_m1,0.094,0.009,0.2,0.08 Mo109,0.692,0.026,0.013000000000000001,0.006 Mo110,0.287,0.01,0.02,0.006999999999999999 Mo111,0.186,0.009,0.06,0.06 @@ -213,7 +224,8 @@ Tc110,0.911,0.014,0.0004,0.0002 Tc111,0.294,0.02,0.0085,0.002 Tc112,0.305,0.01,0.017,0.004 Tc113,0.152,0.008,0.021,0.003 -Tc114,0.1,0.02,0.006500000000000001,0.004 +Tc114,0.09,0.02,0.006500000000000001,0.004 +Tc114_m1,0.1,0.02,0.006500000000000001,0.004 Tc115,0.078,0.002,0.19,0.05 Tc116,0.057,0.003,0.17,0.07 Ru116,0.203,0.006,0.004,0.004 @@ -222,7 +234,8 @@ Ru118,0.099,0.003,0.023,0.023 Ru119,0.0692,0.002,0.06,0.05 Ru120,0.045,0.002,0.06,0.03 Ru121,0.03,0.003,0.13,0.04 -Rh116,0.57,0.05,0.00525,0.00525 +Rh116,0.69,0.05,0.00525,0.00525 +Rh116_m1,0.57,0.05,0.00525,0.00525 Rh117,0.42,0.04,0.038,0.038 Rh118,0.286,0.01,0.021,0.009000000000000001 Rh119,0.189,0.006,0.034,0.009000000000000001 @@ -239,36 +252,49 @@ Pd125,0.0641,0.0017,0.037000000000000005,0.004 Pd126,0.0488,0.0008,0.049,0.009000000000000001 Pd127,0.038,0.002,0.09,0.03 Pd128,0.036,0.005,0.1,0.07 -Ag120,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 +Ag120,0.94,0.1,5e-06,5e-06 +Ag120_m1,1.52,0.07,5e-06,5e-06 +Ag120_m2,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 Ag121,0.777,0.012,0.0008,0.00013 -Ag122,0.2,0.05,0.0009299999999999999,6e-05 +Ag122,0.529,0.019,0.0009281399999999999,5.988e-05 +Ag122_m1,0.2,0.05,0.0009299999999999999,6e-05 Ag123,0.3,0.008,0.0085,0.0015 -Ag124,0.144,0.02,0.006500000000000001,0.009000000000000001 -Ag125,0.159,0.021,0.046,0.01 -Ag126,0.1026,0.0014,0.038,0.002 +Ag124,0.191,0.028,0.0115,0.011000000000000001 +Ag124_m1,0.144,0.02,0.006500000000000001,0.009000000000000001 +Ag125,0.176,0.003,0.012,0.002 +Ag125_m1,0.159,0.021,0.046,0.01 +Ag126_m1,0.1026,0.0014,0.038,0.002 Ag127,0.0891,0.0009,0.055,0.002 Ag128,0.0659,0.0024,0.09300000000000001,0.005 Ag129,0.052,0.003,0.179,0.013999999999999999 -Cd127,0.36,0.04,0.006,0.006 +Cd127_m1,0.36,0.04,0.006,0.006 Cd128,0.2461,0.0021,0.0095,0.0095 Cd129,0.151,0.004,0.0184,0.0015 Cd130,0.1287,0.0023,0.03,0.002 Cd131,0.083,0.015,0.035,0.01 Cd132,0.084,0.005,0.6,0.15 -In127,3.618,0.032,0.006999999999999999,0.0006 -In128,0.72,0.1,0.00019199999999999998,3.6e-05 -In129,1.165,0.01,0.035393499999999994,0.0061814 -In130,0.535,0.006,0.00975,0.0015 -In131,0.32,0.06,0.11879999999999999,0.0693 +In127,1.087,0.011,0.00015,0.00015 +In127_m1,3.618,0.032,0.006999999999999999,0.0006 +In128,0.84,0.06,0.00019199999999999998,3.6e-05 +In128_m1,0.72,0.1,0.00019199999999999998,3.6e-05 +In129,0.607,0.006,0.0023,0.001 +In129_m1,1.165,0.01,0.035393499999999994,0.0061814 +In130,0.275,0.008,0.012,0.0029 +In130_m1,0.535,0.006,0.00975,0.0015 +In130_m2,0.535,0.006,0.00975,0.0015 +In131,0.266,0.008,0.011049999999999999,0.0027 +In131_m1,0.33,0.015,0.011049999999999999,0.0027 +In131_m2,0.32,0.06,0.11879999999999999,0.0693 In132,0.2013,0.0012,0.12300000000000001,0.004 -In133,0.167,0.011,0.93,0.03 +In133,0.162,0.002,0.9,0.03 +In133_m1,0.167,0.011,0.93,0.03 In134,0.121,0.006,1.07,0.05 Sn133,1.42,0.06,0.000294,2.3999999999999997e-05 Sn134,0.902,0.028,0.17,0.13 Sn135,0.516,0.005,0.21,0.03 Sn136,0.361,0.005,0.27,0.04 Sn137,0.221,0.017,0.5,0.1 -Sb134,9.97,0.1,0.0008799999999999999,3.6e-05 +Sb134_m1,9.97,0.1,0.0008799999999999999,3.6e-05 Sb135,1.668,0.01,0.2,0.028999999999999998 Sb136,0.924,0.014,0.2518,0.07300246571178264 Sb137,0.506,0.025,0.49,0.08 diff --git a/tests/integration/test-data/reference/test4/group_parameters.csv b/tests/integration/test-data/reference/test4/group_parameters.csv index d735fcd7..a2ee2de4 100644 --- a/tests/integration/test-data/reference/test4/group_parameters.csv +++ b/tests/integration/test-data/reference/test4/group_parameters.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0005084852726940352,0.0,55.63931424831434,0.0 -0.002453566328566729,0.0,24.569264138913304,0.0 -0.0013773971276264043,0.0,16.373388763100763,0.0 -0.0023873595098988973,0.0,5.607077852480488,0.0 -0.006027468712831092,0.0,2.5618812848091856,0.0 -0.010846059359074862,0.0,0.9796133076042891,0.0 +0.0005084852570765399,0.0,55.63931448495001,0.0 +0.0024535591084901484,0.0,24.56927233369564,0.0 +0.001377371099639429,0.0,16.373491615853005,0.0 +0.0023955672306150803,0.0,5.604183496795593,0.0 +0.005777660031332877,0.0,2.575728332103662,0.0 +0.010862441234444095,0.0,0.9776276227180541,0.0 diff --git a/tests/integration/test-data/reference/test4/half_life.csv b/tests/integration/test-data/reference/test4/half_life.csv index 7c78015b..787e5dc2 100644 --- a/tests/integration/test-data/reference/test4/half_life.csv +++ b/tests/integration/test-data/reference/test4/half_life.csv @@ -29,7 +29,8 @@ F22,4.23,0.04,0.055,0.055 F23,2.23,0.14,0.07,0.07 F24,0.382,0.016,0.029500000000000002,0.029500000000000002 F25,0.075,0.01,0.195,0.05 -F26,0.0022,0.0001,0.021599999999999998,0.019534584715319648 +F26,0.0082,0.0009,0.135,0.04 +F26_m1,0.0022,0.0001,0.021599999999999998,0.019534584715319648 F27,0.0057,0.0008,0.8,0.2 F29,0.00267,0.00021,0.6,0.4 Ne26,0.195,0.002,0.0013,0.0003 @@ -96,7 +97,7 @@ Ca52,4.6,0.3,0.01,0.01 Ca53,0.461,0.09,0.4,0.1 Sc54,0.526,0.015,0.16,0.09 Sc55,0.096,0.002,0.17,0.07 -Sc56,0.069,0.007,0.24,0.12 +Sc56_m1,0.069,0.007,0.24,0.12 V59,0.092,0.009,0.06,0.03 V61,0.0483,0.001,0.2,0.1 V63,0.0196,0.001,0.67,0.33 @@ -106,10 +107,12 @@ Mn66,0.0639,0.0011,0.05,0.013999999999999999 Mn68,0.0352,0.002,0.15,0.09 Mn69,0.0258,0.0028,0.4,0.2 Mn70,0.0199,0.0017,0.5,0.2 -Co68,1.6,0.3,0.06,0.03 -Co70,0.508,0.007,0.03,0.015 +Co68_m1,1.6,0.3,0.06,0.03 +Co70,0.113,0.007,0.03,0.015 +Co70_m1,0.508,0.007,0.03,0.015 Co71,0.08,0.003,0.188,0.08121576201698781 -Co72,0.0478,0.0005,0.074,0.03059411708155671 +Co72,0.0515,0.0003,0.074,0.03059411708155671 +Co72_m1,0.0478,0.0005,0.074,0.03059411708155671 Co73,0.0407,0.0013,0.26,0.09848857801796104 Co74,0.0314,0.0015,0.22999999999999998,0.1522366578718805 Co75,0.0265,0.0012,0.08,0.08 @@ -132,7 +135,8 @@ Zn82,0.1779,0.0025,0.69,0.07 Zn83,0.0997,0.003,0.71,0.29 Zn84,0.0536,0.0081,0.73,0.26 Ga79,2.852,0.01,0.00084,0.00029 -Ga80,1.3,0.2,0.0045000000000000005,0.0007000000000000001 +Ga80,1.9,0.1,0.0045000000000000005,0.0007000000000000001 +Ga80_m1,1.3,0.2,0.0045000000000000005,0.0007000000000000001 Ga81,1.217,0.004,0.125,0.008 Ga82,0.601,0.002,0.22699999999999998,0.02 Ga83,0.31,0.001,0.67,0.06 @@ -173,7 +177,8 @@ Rb94,2.704,0.015,0.1039,0.0022 Rb95,0.378,0.002,0.08800000000000001,0.004 Rb96,0.2016,0.001,0.141,0.008 Rb97,0.169,0.001,0.249,0.015 -Rb98,0.096,0.003,0.07204,0.009001088823025803 +Rb98,0.115,0.006,0.07204,0.009001088823025803 +Rb98_m1,0.096,0.003,0.07204,0.009001088823025803 Rb99,0.0578,0.0009,0.191,0.023 Rb100,0.051,0.002,0.059,0.012041594578792296 Rb101,0.0315,0.0045,0.28,0.05 @@ -184,11 +189,15 @@ Sr99,0.269,0.002,0.00096,0.00016 Sr100,0.2007,0.0013,0.0111,0.0021 Sr101,0.115,0.001,0.0252,0.0025 Sr102,0.072,0.008,0.055,0.02 -Y97,1.17,0.03,0.0003972,0.0003972 -Y98,2.32,0.08,0.03096,0.009216078341680914 +Y97,3.74,0.05,0.00057594,9.93e-05 +Y97_m1,1.17,0.03,0.0003972,0.0003972 +Y98,0.548,0.002,0.0033,0.0003 +Y98_m1,2.32,0.08,0.03096,0.009216078341680914 Y99,1.478,0.007,0.0197,0.003 -Y100,0.94,0.03,0.0051,0.0006 +Y100,0.732,0.005,0.0051,0.0006 +Y100_m1,0.94,0.03,0.0051,0.0006 Y101,0.432,0.012,0.019799999999999998,0.002 +Y102_m1,0.396,0.036,0.06,0.017 Y102,0.3,0.01,0.04,0.015 Y103,0.236,0.016,0.081,0.02 Y104,0.212,0.02,0.34,0.1 @@ -198,13 +207,15 @@ Zr104,0.92,0.028,0.005,0.005 Zr105,0.666,0.028,0.01,0.01 Zr106,0.175,0.007,0.035,0.035 Zr107,0.15,0.003,0.115,0.115 -Nb104,0.98,0.07,0.0005,0.0003 +Nb104,4.9,0.4,0.0006,0.0003 +Nb104_m1,0.98,0.07,0.0005,0.0003 Nb105,2.91,0.07,0.017,0.009000000000000001 Nb106,1.084,0.021,0.045,0.003 Nb107,0.287,0.011,0.07400000000000001,0.01 Nb108,0.192,0.006,0.063,0.005 Nb109,0.113,0.011,0.31,0.05 -Nb110,0.094,0.009,0.2,0.08 +Nb110,0.075,0.001,0.2,0.08 +Nb110_m1,0.094,0.009,0.2,0.08 Mo109,0.692,0.026,0.013000000000000001,0.006 Mo110,0.287,0.01,0.02,0.006999999999999999 Mo111,0.186,0.009,0.06,0.06 @@ -213,7 +224,8 @@ Tc110,0.911,0.014,0.0004,0.0002 Tc111,0.294,0.02,0.0085,0.002 Tc112,0.305,0.01,0.017,0.004 Tc113,0.152,0.008,0.021,0.003 -Tc114,0.1,0.02,0.006500000000000001,0.004 +Tc114,0.09,0.02,0.006500000000000001,0.004 +Tc114_m1,0.1,0.02,0.006500000000000001,0.004 Tc115,0.078,0.002,0.19,0.05 Tc116,0.057,0.003,0.17,0.07 Ru116,0.203,0.006,0.004,0.004 @@ -222,7 +234,8 @@ Ru118,0.099,0.003,0.023,0.023 Ru119,0.0692,0.002,0.06,0.05 Ru120,0.045,0.002,0.06,0.03 Ru121,0.03,0.003,0.13,0.04 -Rh116,0.57,0.05,0.00525,0.00525 +Rh116,0.69,0.05,0.00525,0.00525 +Rh116_m1,0.57,0.05,0.00525,0.00525 Rh117,0.42,0.04,0.038,0.038 Rh118,0.286,0.01,0.021,0.009000000000000001 Rh119,0.189,0.006,0.034,0.009000000000000001 @@ -239,36 +252,49 @@ Pd125,0.0641,0.0017,0.037000000000000005,0.004 Pd126,0.0488,0.0008,0.049,0.009000000000000001 Pd127,0.038,0.002,0.09,0.03 Pd128,0.036,0.005,0.1,0.07 -Ag120,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 +Ag120,0.94,0.1,5e-06,5e-06 +Ag120_m1,1.52,0.07,5e-06,5e-06 +Ag120_m2,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 Ag121,0.777,0.012,0.0008,0.00013 -Ag122,0.2,0.05,0.0009299999999999999,6e-05 +Ag122,0.529,0.019,0.0009281399999999999,5.988e-05 +Ag122_m1,0.2,0.05,0.0009299999999999999,6e-05 Ag123,0.3,0.008,0.0085,0.0015 -Ag124,0.144,0.02,0.006500000000000001,0.009000000000000001 -Ag125,0.159,0.021,0.046,0.01 -Ag126,0.1026,0.0014,0.038,0.002 +Ag124,0.191,0.028,0.0115,0.011000000000000001 +Ag124_m1,0.144,0.02,0.006500000000000001,0.009000000000000001 +Ag125,0.176,0.003,0.012,0.002 +Ag125_m1,0.159,0.021,0.046,0.01 +Ag126_m1,0.1026,0.0014,0.038,0.002 Ag127,0.0891,0.0009,0.055,0.002 Ag128,0.0659,0.0024,0.09300000000000001,0.005 Ag129,0.052,0.003,0.179,0.013999999999999999 -Cd127,0.36,0.04,0.006,0.006 +Cd127_m1,0.36,0.04,0.006,0.006 Cd128,0.2461,0.0021,0.0095,0.0095 Cd129,0.151,0.004,0.0184,0.0015 Cd130,0.1287,0.0023,0.03,0.002 Cd131,0.083,0.015,0.035,0.01 Cd132,0.084,0.005,0.6,0.15 -In127,3.618,0.032,0.006999999999999999,0.0006 -In128,0.72,0.1,0.00019199999999999998,3.6e-05 -In129,1.165,0.01,0.035393499999999994,0.0061814 -In130,0.535,0.006,0.00975,0.0015 -In131,0.32,0.06,0.11879999999999999,0.0693 +In127,1.087,0.011,0.00015,0.00015 +In127_m1,3.618,0.032,0.006999999999999999,0.0006 +In128,0.84,0.06,0.00019199999999999998,3.6e-05 +In128_m1,0.72,0.1,0.00019199999999999998,3.6e-05 +In129,0.607,0.006,0.0023,0.001 +In129_m1,1.165,0.01,0.035393499999999994,0.0061814 +In130,0.275,0.008,0.012,0.0029 +In130_m1,0.535,0.006,0.00975,0.0015 +In130_m2,0.535,0.006,0.00975,0.0015 +In131,0.266,0.008,0.011049999999999999,0.0027 +In131_m1,0.33,0.015,0.011049999999999999,0.0027 +In131_m2,0.32,0.06,0.11879999999999999,0.0693 In132,0.2013,0.0012,0.12300000000000001,0.004 -In133,0.167,0.011,0.93,0.03 +In133,0.162,0.002,0.9,0.03 +In133_m1,0.167,0.011,0.93,0.03 In134,0.121,0.006,1.07,0.05 Sn133,1.42,0.06,0.000294,2.3999999999999997e-05 Sn134,0.902,0.028,0.17,0.13 Sn135,0.516,0.005,0.21,0.03 Sn136,0.361,0.005,0.27,0.04 Sn137,0.221,0.017,0.5,0.1 -Sb134,9.97,0.1,0.0008799999999999999,3.6e-05 +Sb134_m1,9.97,0.1,0.0008799999999999999,3.6e-05 Sb135,1.668,0.01,0.2,0.028999999999999998 Sb136,0.924,0.014,0.2518,0.07300246571178264 Sb137,0.506,0.025,0.49,0.08 diff --git a/tests/integration/test-data/reference/test5/concentrations.csv b/tests/integration/test-data/reference/test5/concentrations.csv index 9b299bd3..bb94e20a 100644 --- a/tests/integration/test-data/reference/test5/concentrations.csv +++ b/tests/integration/test-data/reference/test5/concentrations.csv @@ -1,206 +1,214 @@ Time,Nuclide,Concentration,sigma Concentration -0,Ru120,6.321956065607958e-12,4.055807566228364e-12 -0,Cs141,1.5149292936627432,0.030243084671351995 -0,Zn84,9.215345558846408e-10,6.060025187057695e-10 -0,Co71,4.1785186194658653e-10,2.6788428230903487e-10 -0,Br93,1.1922242997979442e-05,5.607677951950299e-06 -0,In131,0.00011538213274612227,4.4513428102614914e-05 -0,Sb138,1.1157919796704903e-06,7.145188610770758e-07 -0,Rb98,1.1111349589243446e-05,4.60401868679116e-06 -0,Y105,2.763124101479045e-07,1.7792740465621804e-07 -0,Ni77,1.9930357141235271e-10,1.2766074672988774e-10 +0,Xe147,3.2314501563586603e-09,2.1296804203363497e-09 +0,Mn70,6.387936031743079e-15,3.1367177186332335e-14 +0,Cu81,1.6580134093189317e-11,1.0821765176749329e-11 +0,Kr92,0.04576464673689404,0.00140817874136106 +0,Mo110,2.8201405889307312e-05,1.8075630147105326e-05 +0,Co75,3.983443711434402e-13,2.555777711492282e-13 +0,Ru117,6.478688702697007e-08,4.148333922735342e-08 +0,Se87,0.062451803367402935,0.0037407479198569055 +0,Ag120,5.893501891906941e-05,3.823592124263742e-05 +0,Mn69,1.1506290659448556e-13,7.469142630827825e-14 +0,In130_m2,0.0,7.718418468755954e-13 +0,Zn83,7.587942699270835e-10,4.861648669530365e-10 +0,Sb134_m1,0.05816203636207889,0.037228313980850664 +0,Ag122,4.554342579089505e-06,2.919366103086645e-06 +0,Cd131,1.567338860024903e-05,1.0423246761221736e-05 +0,Rh116,2.037705905921735e-05,1.312465419357817e-05 +0,In132,2.6577870678371435e-05,6.257979479930021e-06 +0,Cs146,6.112782943838794e-05,2.0230510044235075e-05 +0,Sr102,4.966120351552528e-07,2.906831091331771e-07 +0,Sr99,0.0006840018870407429,0.00014091802915365472 +0,Kr94,0.0003645196368625332,7.898348785454662e-05 +0,Tc113,1.1468694994298554e-06,7.364742582422146e-07 +0,In128,0.00021601533440422166,0.00013910803529059815 +0,Sn134,0.00033758172126008317,0.00021630680379158422 +0,Kr95,2.1642104434272682e-05,1.0272138585381986e-05 +0,In129_m1,0.0004612808656908789,0.00010107794611441383 +0,Sb135,0.004583013179731559,0.0004883741237386519 +0,Ga87,1.7190557841372488e-11,1.1254572026525765e-11 +0,Zr103,0.012249494448121324,0.006736348916645337 +0,Ag122_m1,1.6480012211507657e-06,1.1323349785420852e-06 0,Se89,0.00040076866182387334,0.00011468923440760976 +0,Sr101,1.1052274127136074e-05,5.73035111097771e-06 +0,Tc114,9.940684234528315e-08,6.734638461420511e-08 +0,Pd123,4.8987180778214895e-09,3.1379744042959607e-09 +0,Kr99,5.173888915053951e-10,3.651111255149778e-10 +0,As86,0.007312327422157877,0.001248226404037368 +0,Zn80,2.287123077337393e-06,1.4638078053115882e-06 +0,Ge85,2.472367262773268e-05,1.5825949552697886e-05 +0,Tc111,3.1771370825182855e-05,2.0448226309628567e-05 +0,Rb92,0.31046562120638826,0.005415298698972368 +0,Ni76,1.914336482878104e-09,1.2253719418304947e-09 +0,Kr96,4.343509840966059e-05,2.8057050158493928e-05 +0,Tc110,0.00028660053033675804,0.00018347723482393371 +0,Br89,0.07061365229886706,0.003225780945051474 +0,Rh117,6.336373360780286e-06,4.099930185585952e-06 +0,I140,0.0016204718297961255,0.00045796333619904 +0,Sr100,0.00016219761776882394,5.541832406944447e-05 0,Ru116,5.743691422482375e-07,3.679876042689996e-07 -0,Sb137,0.0005296226051203003,0.0003399669488571203 -0,Te137,0.01841686961734059,0.0024003672807921587 -0,Sr97,0.011192718346964479,0.0005137801583767754 -0,Tc115,9.544240702899129e-09,6.113200861999318e-09 -0,Br88,0.41470069266932635,0.015258378692793471 -0,Rh121,5.778561433034068e-10,3.701653668806877e-10 -0,Cu75,1.841674108763976e-06,1.1786780245538553e-06 -0,La147,0.05646805136735979,0.004083902249234997 -0,Ag120,2.7586604600415468e-05,1.7931562214081935e-05 -0,As87,0.00036726542809328237,0.00017067168386323422 -0,Y101,0.0021423491599582094,0.0002490686180773977 -0,Pd121,6.11809252628598e-07,3.915644058359829e-07 -0,Ba148,0.00029964949642038893,0.00015635557535715374 -0,Cd128,1.200596730239502e-05,7.684501989780481e-06 -0,Te138,0.0019087297014339954,0.0008040684073677114 -0,Rb101,1.6599520019262258e-09,1.0885135197405837e-09 -0,Ag121,3.9138522994617927e-05,1.3601679285832257e-05 +0,Y99,0.047229472611507894,0.0036985953470681206 +0,Y105,2.763124101479045e-07,1.7792740465621804e-07 +0,Pd125,9.571390082897755e-12,6.2187422023649836e-12 +0,In128_m1,0.00015007082899185788,9.828080965415342e-05 +0,La150,0.00015365829435237658,9.852577263400666e-05 +0,Nb104,0.033531964280982776,0.02163429837481858 +0,Cs143,0.039438108913487376,0.0018528385390435378 +0,Sb139,4.471576884286194e-08,2.8703357344779696e-08 +0,Br93,1.1922242997979442e-05,5.607677951950299e-06 +0,Ba149,1.6988892186630768e-05,1.0876743125940358e-05 +0,Co72,8.855792578628453e-11,5.667938510279351e-11 +0,Rb97,9.884404390803804e-05,1.4025081005467276e-05 +0,Ge84,0.00045104752694433245,0.0001279529210628389 +0,In131_m1,0.0,4.76089363493358e-13 +0,Ag125,2.2221634526331197e-08,1.4226934977718059e-08 +0,Ga82,5.661368461211863e-05,3.6233255062432184e-05 +0,Rh122,2.34816607056694e-11,1.504336202637936e-11 +0,Tc116,9.876290931054235e-10,6.342152243270843e-10 +0,Sn135,1.1516068067321044e-05,5.95250625340372e-06 +0,Sb136,0.00030568294518464934,0.00019569188025011738 +0,Br90,0.016766239035426535,0.001051942666338339 0,Cd130,0.00015488037773644188,9.91621278521787e-05 -0,In134,4.869767932653489e-08,3.1259928799991265e-08 -0,Kr95,2.1642104434272682e-05,1.0272138585381986e-05 -0,La148,0.007880688724128181,0.0048148686975924134 -0,Ag123,2.076755904622061e-06,1.3302804913781086e-06 +0,Zr105,0.0011597152301053239,0.0007438169969402623 +0,Nb104_m1,0.004844267933525279,0.0031195774792724617 +0,Br92,0.00017956756774146004,0.00011516952272269984 0,Rb95,0.004457915583677064,0.00030997827217864 -0,Cu73,3.628710540188767e-06,2.3259850980443915e-06 -0,Cs150,2.8325501102290097e-10,1.815865564460341e-10 -0,Sn133,0.003380168924740183,0.001527769408816989 0,Te136,0.37145249359884425,0.03684455952244577 -0,Xe141,0.033628303156581864,0.001098400502873031 -0,Nb106,0.0006991074648942952,0.00035928195465386245 -0,Pd126,0.0,7.040351799538143e-14 -0,Cu79,5.187057281392289e-09,3.3203493852175837e-09 +0,Y98,0.015928293744311314,0.0035573158450251524 +0,Ge86,0.0019138843158365434,0.0003605993570088887 +0,Rb94,0.06742443525810204,0.003187590077704834 +0,Rh123,8.024841809363674e-13,5.147283928663602e-13 +0,Y101,0.0021423491599582094,0.0002490686180773977 +0,Cs145,0.0008424761561147824,0.0002012716433636504 +0,As85,0.006653360755611069,0.00425821510283963 +0,Tc115,9.544240702899129e-09,6.113200861999318e-09 +0,Ga81,0.00014968035446120864,3.0328868995195228e-05 +0,In131,9.591139784521415e-05,3.246614676490329e-05 +0,Pd128,6.611138771852354e-16,3.0213578605393026e-15 +0,Cd132,1.1028021485746955e-08,7.088530315552657e-09 +0,Pd121,6.11809252628598e-07,3.915644058359829e-07 +0,Y97_m1,0.0,1.6879531978400872e-12 +0,Ag120_m1,2.149587963116792e-05,1.3792915082334519e-05 +0,In134,4.869767932653489e-08,3.1259928799991265e-08 +0,Rb93,0.30198094592393293,0.005821813919733452 0,Zn82,3.827828645074522e-08,2.450406398753393e-08 -0,Xe147,3.2314501563586603e-09,2.1296804203363497e-09 +0,Nb106,0.0006991074648942952,0.00035928195465386245 +0,Cu76,7.730088290947924e-07,4.94820688699058e-07 +0,Pd127,1.8366220561866707e-21,5.2081292151530687e-14 +0,Xe141,0.033628303156581864,0.001098400502873031 +0,Ga84,1.4500620138828879e-05,9.28822162704711e-06 +0,Cs150,2.8325501102290097e-10,1.815865564460341e-10 +0,Pd124,6.405471384033167e-10,4.10459827748859e-10 +0,Y97,0.2653461881665886,0.058341385823994944 +0,Rh118,1.2216540001157338e-06,7.830249322276764e-07 +0,Rh124,1.317362648019933e-14,8.485799335737544e-15 +0,Ag123,2.076755904622061e-06,1.3302804913781086e-06 +0,Mn66,1.0035518120164117e-11,6.425070793366717e-12 +0,Cd129,6.704820593435391e-09,4.294759460349018e-09 +0,As87,0.00036726542809328237,0.00017067168386323422 +0,Ru120,6.321956065607958e-12,4.055807566228364e-12 +0,La149,0.0017698988890915686,0.0010278005186328588 +0,Co70,1.1612902282163813e-09,7.46696594703663e-10 0,Ga86,2.2319718521399998e-08,1.4313386139684454e-08 -0,Tc113,1.1468694994298554e-06,7.364742582422146e-07 -0,Zr103,0.012249494448121324,0.006736348916645337 -0,Co74,3.714583466847598e-12,2.383938917381913e-12 -0,Sr99,0.0006840018870407429,0.00014091802915365472 -0,Ag122,1.7218686499393215e-06,1.1830880842667757e-06 -0,Tc111,3.1771370825182855e-05,2.0448226309628567e-05 -0,I138,0.14378183654226137,0.00738092441091746 +0,Se91,6.1292580625776354e-06,4.083649600135913e-06 +0,Xe143,0.00026780246606506467,0.00017142265490239716 +0,Cs149,3.81276581239941e-09,2.44952322266523e-09 +0,Te138,0.0019087297014339954,0.0008040684073677114 +0,Sb140,2.2277131946964026e-09,1.4286859167688342e-09 +0,Tc112,8.549686399521445e-06,5.478961418588178e-06 +0,Pd122,7.140415345845826e-08,4.573532453910508e-08 +0,Cs141,1.5149292936627432,0.030243084671351995 +0,Nb108,2.644076146886239e-06,1.6942242392122814e-06 +0,Ag121,3.9138522994617927e-05,1.3601679285832257e-05 +0,Te137,0.01841686961734059,0.0024003672807921587 +0,Kr98,9.703877356272816e-07,6.275780409707926e-07 +0,In130,0.00038133754260743277,0.00012727776011205709 +0,In127,0.0007012338209429614,0.00012542909821947797 +0,Cs142,0.06751075815845875,0.002570603237750841 0,Cu77,3.2883768321162164e-07,2.1046103474122743e-07 -0,Br87,1.613172028625597,0.03500257170613949 -0,Sb136,0.00030568294518464934,0.00019569188025011738 -0,Y100,0.010053745359492567,0.005545365975430271 -0,Sn136,4.469327600809717e-07,2.8610385621492065e-07 -0,Rb94,0.06742443525810204,0.003187590077704834 -0,Br92,0.00017956756774146004,0.00011516952272269984 -0,Nb109,8.739227151016486e-07,5.657429551890969e-07 +0,As84,0.007818287034828862,0.0050050756355145285 +0,Ru119,2.492105711517945e-10,1.5965735342914224e-10 +0,Zr104,0.0017338363448713078,0.0004261530227089933 +0,In127_m1,0.0006027046705470523,0.00017574934844632762 +0,Sb138,1.1157919796704903e-06,7.145188610770758e-07 0,Xe146,1.1968117223384662e-07,6.998197933511106e-08 -0,Ga84,1.4500620138828879e-05,9.28822162704711e-06 -0,Rb102,1.3968121838393133e-10,9.136707632230562e-11 -0,Ru117,6.478688702697007e-08,4.148333922735342e-08 -0,Rb93,0.30198094592393293,0.005821813919733452 +0,Ga80,0.00033265951513173416,8.711255569939079e-05 +0,Xe142,0.008734404596595503,0.0007717214662392944 +0,Mo111,2.924221701893955e-06,1.8768458562140055e-06 +0,Cu80,3.119951022960229e-10,2.004528254841781e-10 0,Cu78,6.869117893047866e-08,4.396440071032322e-08 -0,Zn80,2.287123077337393e-06,1.4638078053115882e-06 -0,Ga79,0.000776637547547752,0.0001091030347801554 -0,Rb96,0.0007447792770115062,0.00013146288975341948 -0,Mo109,0.00023657536119163253,0.00015166918583668084 -0,In132,2.6577870678371435e-05,6.257979479930021e-06 -0,Y102,0.0012168645038974585,0.0007581592424983709 -0,Ga85,7.137762224471928e-09,4.569118997639451e-09 -0,Co68,2.993155938864235e-08,1.9961406983167857e-08 -0,Zr104,0.0017338363448713078,0.0004261530227089933 -0,Sb140,2.2277131946964026e-09,1.4286859167688342e-09 -0,Xe144,6.650431295523878e-05,7.413204019139573e-06 -0,Cs146,6.112782943838794e-05,2.0230510044235075e-05 -0,Cs145,0.0008424761561147824,0.0002012716433636504 -0,Rh116,1.6833222701092596e-05,1.0873991390751045e-05 -0,Ag126,1.3665559995999743e-12,8.747957868181175e-13 -0,Co70,5.220667574636474e-09,3.341990015635059e-09 -0,Sb139,4.471576884286194e-08,2.8703357344779696e-08 -0,Sr100,0.00016219761776882394,5.541832406944447e-05 -0,Pd127,1.8366220561866707e-21,5.2081292151530687e-14 -0,Rb97,9.884404390803804e-05,1.4025081005467276e-05 -0,Tc114,1.1045204705031464e-07,7.406052033789203e-08 -0,Cs144,0.007066471910833082,0.0006504975058304286 -0,Y97,0.08300936902537666,0.018341329943598304 -0,Ba147,0.003557587610769557,0.00072776498354934 -0,Rh117,6.336373360780286e-06,4.099930185585952e-06 -0,Cu76,7.730088290947924e-07,4.94820688699058e-07 -0,I139,0.027862206731330403,0.0027668873242739913 -0,Ru119,2.492105711517945e-10,1.5965735342914224e-10 -0,Nb108,2.644076146886239e-06,1.6942242392122814e-06 -0,Kr96,4.343509840966059e-05,2.8057050158493928e-05 -0,As86,0.007312327422157877,0.001248226404037368 +0,Ba148,0.00029964949642038893,0.00015635557535715374 0,Ru118,6.521136950883246e-09,4.178204491630281e-09 -0,Cu80,3.119951022960229e-10,2.004528254841781e-10 -0,La150,0.00015365829435237658,9.852577263400666e-05 -0,Sn135,1.1516068067321044e-05,5.95250625340372e-06 -0,Se88,0.008725670102436401,0.0016103097989740584 -0,In133,1.2825697946023977e-06,8.251795873235754e-07 -0,Se87,0.062451803367402935,0.0037407479198569055 -0,Cs143,0.039438108913487376,0.0018528385390435378 -0,Co75,3.983443711434402e-13,2.555777711492282e-13 -0,Br91,0.0019750917992539508,0.0003224796187942117 -0,Sr101,1.1052274127136074e-05,5.73035111097771e-06 -0,Tc109,0.0005203764432953729,0.00016049112601211824 -0,Pd125,9.571390082897755e-12,6.2187422023649836e-12 -0,Rb92,0.31046562120638826,0.005415298698972368 -0,Rh120,1.8075694537022572e-08,1.158837951994366e-08 -0,Nb110,2.72365887498078e-08,1.7625407623285278e-08 -0,Br90,0.016766239035426535,0.001051942666338339 -0,Ni76,1.914336482878104e-09,1.2253719418304947e-09 +0,Y103,3.096588292065301e-05,1.9929011791787224e-05 +0,Nb109,8.739227151016486e-07,5.657429551890969e-07 +0,Rb98,1.3310470862114545e-05,5.543196498594369e-06 +0,I139,0.027862206731330403,0.0027668873242739913 +0,Zn84,9.215345558846408e-10,6.060025187057695e-10 +0,Zn81,7.268557156836453e-08,4.7335143212675794e-08 0,Rb99,7.433374824143002e-07,4.758741360333016e-07 -0,Y98,0.06743365234817927,0.015236638135122315 -0,Zn83,7.587942699270835e-10,4.861648669530365e-10 +0,Rb102,1.3968121838393133e-10,9.136707632230562e-11 +0,Sb137,0.0005296226051203003,0.0003399669488571203 +0,Cu79,5.187057281392289e-09,3.3203493852175837e-09 +0,Tc109,0.0005203764432953729,0.00016049112601211824 +0,Br94,5.582562850322886e-07,3.453630888004618e-07 +0,Cs148,2.9493153810400625e-07,1.8877038232218619e-07 +0,I138,0.14378183654226137,0.00738092441091746 +0,Br87,1.613172028625597,0.03500257170613949 +0,Mn68,1.3118638780084598e-12,8.428952643773895e-13 +0,Y100,0.007829086811860168,0.004311403091541925 +0,Rh119,1.5792294141133458e-07,1.0119476469782427e-07 +0,Co73,3.5403084363953135e-11,2.2686182130984923e-11 +0,Ag128,1.4664314181857866e-14,9.400348352416019e-15 +0,Ga85,7.137762224471928e-09,4.569118997639451e-09 +0,Sr97,0.011192718346964479,0.0005137801583767754 +0,Mo109,0.00023657536119163253,0.00015166918583668084 +0,Ag129,8.146975127905937e-17,5.235192892339521e-17 +0,Co74,3.714583466847598e-12,2.383938917381913e-12 +0,Nb110,2.1731320811016862e-08,1.3911070045878708e-08 +0,Nb105,0.014313971012599316,0.004215123848896034 +0,Rh121,5.778561433034068e-10,3.701653668806877e-10 +0,Kr97,6.120277560781505e-08,3.9367684925001434e-08 +0,Rb101,1.6599520019262258e-09,1.0885135197405837e-09 +0,Xe144,6.650431295523878e-05,7.413204019139573e-06 +0,La147,0.05646805136735979,0.004083902249234997 +0,In129,0.0002586471979949641,9.225562787847963e-05 +0,Br88,0.41470069266932635,0.015258378692793471 +0,Y104,4.139597073282549e-06,2.677971741982095e-06 0,Sn137,6.64255242484076e-08,4.281840831088093e-08 0,I137,1.124883996671712,0.036511612596349136 -0,Kr98,9.703877356272816e-07,6.275780409707926e-07 -0,Cd132,1.1028021485746955e-08,7.088530315552657e-09 -0,Pd123,4.8987180778214895e-09,3.1379744042959607e-09 -0,I140,0.0016204718297961255,0.00045796333619904 -0,As84,0.007818287034828862,0.0050050756355145285 -0,Cd129,6.704820593435391e-09,4.294759460349018e-09 -0,Br94,5.582562850322886e-07,3.453630888004618e-07 -0,Sb135,0.004583013179731559,0.0004883741237386519 -0,Rh122,2.34816607056694e-11,1.504336202637936e-11 -0,Rh118,1.2216540001157338e-06,7.830249322276764e-07 -0,Pd124,6.405471384033167e-10,4.10459827748859e-10 +0,Cd128,1.200596730239502e-05,7.684501989780481e-06 +0,Xe145,1.9493607264022407e-06,1.1892804191937006e-06 +0,Cs144,0.007066471910833082,0.0006504975058304286 +0,Ga83,1.6983238957259143e-06,1.0869411087348493e-06 +0,In133,1.2441695013508289e-06,7.964156723252753e-07 +0,Zn79,1.8556571217110535e-05,8.755041494952658e-06 +0,Ag124,1.5865435514166304e-06,1.0416842971397075e-06 +0,Ni77,1.9930357141235271e-10,1.2766074672988774e-10 +0,Cs147,9.42927671179463e-06,6.034877089425987e-06 +0,Sn136,4.469327600809717e-07,2.8610385621492065e-07 +0,Ru121,2.648135217281255e-13,1.7153741900402487e-13 +0,Cu75,1.841674108763976e-06,1.1786780245538553e-06 +0,Rh120,1.8075694537022572e-08,1.158837951994366e-08 +0,Rb96,0.0007447792770115062,0.00013146288975341948 +0,La148,0.007880688724128181,0.0048148686975924134 0,Zr106,9.605570053132736e-08,6.15955680804897e-08 -0,Ba149,1.6988892186630768e-05,1.0876743125940358e-05 +0,Cu73,3.628710540188767e-06,2.3259850980443915e-06 +0,Br91,0.0019750917992539508,0.0003224796187942117 0,Rb100,2.434429436958616e-05,1.5609569662173555e-05 -0,Tc116,9.876290931054235e-10,6.342152243270843e-10 -0,In127,0.002334005486818431,0.00041732380401367995 -0,Nb107,3.912493986932497e-05,2.508481617918656e-05 -0,Ag125,2.0075226645946934e-08,1.311891965347068e-08 -0,Y104,4.139597073282549e-06,2.677971741982095e-06 -0,Pd122,7.140415345845826e-08,4.573532453910508e-08 -0,In129,0.0004964151328898405,0.00017704721098212668 -0,Cs147,9.42927671179463e-06,6.034877089425987e-06 +0,Co71,4.1785186194658653e-10,2.6788428230903487e-10 +0,Sn133,0.003380168924740183,0.001527769408816989 +0,Pd126,0.0,7.040351799538143e-14 0,I141,0.0003122330510313359,0.00010391235434038751 -0,Br89,0.07061365229886706,0.003225780945051474 -0,Ni75,8.551238569868773e-09,5.473421461079408e-09 -0,Ga83,1.6983238957259143e-06,1.0869411087348493e-06 -0,Ag129,8.146975127905937e-17,5.235192892339521e-17 -0,In130,0.0007418748556180965,0.0002468110512361579 -0,Tc110,0.00028660053033675804,0.00018347723482393371 -0,Kr92,0.04576464673689404,0.00140817874136106 -0,Ru121,2.648135217281255e-13,1.7153741900402487e-13 -0,As85,0.006653360755611069,0.00425821510283963 -0,Se91,6.1292580625776354e-06,4.083649600135913e-06 -0,Cs148,2.9493153810400625e-07,1.8877038232218619e-07 -0,Ge85,2.472367262773268e-05,1.5825949552697886e-05 -0,Rh123,8.024841809363674e-13,5.147283928663602e-13 -0,Ag127,2.6941570244741086e-13,1.7244748256361564e-13 -0,Ga87,1.7190557841372488e-11,1.1254572026525765e-11 -0,Nb105,0.014313971012599316,0.004215123848896034 -0,Mn70,6.387936031743079e-15,3.1367177186332335e-14 -0,Tc112,8.549686399521445e-06,5.478961418588178e-06 -0,Ga80,0.00022760914193223916,6.808249119945713e-05 -0,Y99,0.047229472611507894,0.0036985953470681206 -0,Kr94,0.0003645196368625332,7.898348785454662e-05 -0,Kr97,6.120277560781505e-08,3.9367684925001434e-08 -0,Rh124,1.317362648019933e-14,8.485799335737544e-15 -0,Cs142,0.06751075815845875,0.002570603237750841 -0,Ag124,1.1961375466177736e-06,7.83346609221635e-07 -0,Ga82,5.661368461211863e-05,3.6233255062432184e-05 -0,Pd128,6.611138771852354e-16,3.0213578605393026e-15 -0,Ga81,0.00014968035446120864,3.0328868995195228e-05 -0,Kr99,5.173888915053951e-10,3.651111255149778e-10 -0,Mn66,1.0035518120164117e-11,6.425070793366717e-12 -0,Cu81,1.6580134093189317e-11,1.0821765176749329e-11 -0,Mo110,2.8201405889307312e-05,1.8075630147105326e-05 -0,Mn69,1.1506290659448556e-13,7.469142630827825e-14 -0,Ag128,1.4664314181857866e-14,9.400348352416019e-15 -0,Xe143,0.00026780246606506467,0.00017142265490239716 -0,Cd127,4.034103827330181e-05,1.8718396672143557e-05 0,Cu74,1.7729931107953449e-06,1.1348210676803998e-06 -0,Zn79,1.8556571217110535e-05,8.755041494952658e-06 +0,Y102,0.0012168645038974585,0.0007581592424983709 +0,Nb107,3.912493986932497e-05,2.508481617918656e-05 +0,Y98_m1,0.03771676309623113,0.011912545747929304 +0,Ag127,2.6941570244741086e-13,1.7244748256361564e-13 +0,Ba147,0.003557587610769557,0.00072776498354934 +0,Ga79,0.000776637547547752,0.0001091030347801554 +0,Ni75,8.551238569868773e-09,5.473421461079408e-09 +0,Kr93,0.009954561927852018,0.00046187957585652837 +0,In130_m1,0.0,7.718418468755954e-13 +0,Se88,0.008725670102436401,0.0016103097989740584 0,Zr107,2.4251071376241803e-09,1.5528276718413908e-09 -0,Sb134,0.06121052567179954,0.03917957608041593 0,Sr98,0.008366125138553443,0.0006899417912009069 -0,La149,0.0017698988890915686,0.0010278005186328588 -0,Zn81,7.268557156836453e-08,4.7335143212675794e-08 -0,Xe142,0.008734404596595503,0.0007717214662392944 -0,Ge84,0.00045104752694433245,0.0001279529210628389 -0,Kr93,0.009954561927852018,0.00046187957585652837 -0,Xe145,1.9493607264022407e-06,1.1892804191937006e-06 -0,Zr105,0.0011597152301053239,0.0007438169969402623 -0,Rh119,1.5792294141133458e-07,1.0119476469782427e-07 -0,Co73,3.5403084363953135e-11,2.2686182130984923e-11 -0,Y103,3.096588292065301e-05,1.9929011791787224e-05 -0,In128,0.00018515600091790428,0.00012125799377666578 -0,Mn68,1.3118638780084598e-12,8.428952643773895e-13 -0,Cs149,3.81276581239941e-09,2.44952322266523e-09 -0,Mo111,2.924221701893955e-06,1.8768458562140055e-06 -0,Co72,8.219551170066798e-11,5.2612120703889907e-11 -0,Nb104,0.006706392856196554,0.0043187346962282784 -0,Sr102,4.966120351552528e-07,2.906831091331771e-07 -0,Ge86,0.0019138843158365434,0.0003605993570088887 -0,Sn134,0.00033758172126008317,0.00021630680379158422 -0,Cd131,1.567338860024903e-05,1.0423246761221736e-05 diff --git a/tests/integration/test-data/reference/test5/count_rate.csv b/tests/integration/test-data/reference/test5/count_rate.csv index ee75dc7e..458157e6 100644 --- a/tests/integration/test-data/reference/test5/count_rate.csv +++ b/tests/integration/test-data/reference/test5/count_rate.csv @@ -1,101 +1,101 @@ times,counts,sigma counts -0.0,0.023600336170557675,0.004821949019405516 -6.0606060606060606,0.006052130164756722,0.0004914918070086183 -12.121212121212121,0.0037671873720970094,0.00021011061459441736 -18.18181818181818,0.002808635818335229,0.00013704160484092443 -24.242424242424242,0.0022355046134618288,0.00010390518503035688 -30.303030303030305,0.0018320132373954193,8.314454514680999e-05 -36.36363636363636,0.0015252012195614416,6.819885300493276e-05 -42.42424242424242,0.0012823302948729357,5.674641986032975e-05 -48.484848484848484,0.0010856115342113308,4.7676503422048116e-05 -54.54545454545455,0.000924018200589788,4.034999000967562e-05 -60.60606060606061,0.0007900453236002866,3.435456380235737e-05 -66.66666666666667,0.000678239342344227,2.940314910138605e-05 -72.72727272727272,0.0005844580797254178,2.5285166606397216e-05 -78.78787878787878,0.0005054625823293824,2.1840570088377947e-05 -84.84848484848484,0.0004386717993085389,1.8944768337236062e-05 -90.9090909090909,0.0003820032001388876,1.6499177491873584e-05 -96.96969696969697,0.0003337622577850221,1.4424903884799959e-05 -103.03030303030303,0.00029256187116298446,1.2658293082564343e-05 -109.0909090909091,0.0002572614491574266,1.1147666590970573e-05 -115.15151515151516,0.00022691969005906107,9.850859136746231e-06 -121.21212121212122,0.0002007573497500732,8.733321625499768e-06 -127.27272727272727,0.00017812754473803174,7.766638575531547e-06 -133.33333333333334,0.00015849187498343583,6.9273574838698994e-06 -139.3939393939394,0.00014140111556594083,6.19605751609786e-06 -145.45454545454544,0.00012647953546785515,5.55660435426401e-06 -151.5151515151515,0.00011341211846900665,4.995551287612026e-06 -157.57575757575756,0.0001019341192176932,4.501656028612948e-06 -163.63636363636363,9.182250632330723e-05,4.065489613571388e-06 -169.6969696969697,8.288893549622775e-05,3.6791188988225624e-06 -175.75757575757575,7.497396680724273e-05,3.3358480901566368e-06 -181.8181818181818,6.794229607950978e-05,3.030007773788936e-06 -187.87878787878788,6.167881480068012e-05,2.7567822779797833e-06 -193.93939393939394,5.608534833403941e-05,2.5120680460181913e-06 -200.0,5.107795055083118e-05,2.2923571611917473e-06 -206.06060606060606,4.6584655780010095e-05,2.0946413202545633e-06 -212.12121212121212,4.254360732175196e-05,1.916332470256525e-06 -218.1818181818182,3.890149659269674e-05,1.7551970554003484e-06 -224.24242424242425,3.561225896928984e-05,1.6093014052934462e-06 -230.3030303030303,3.2635982128792466e-05,1.4769662642712943e-06 -236.36363636363637,2.993799059893785e-05,1.356728837419715e-06 -242.42424242424244,2.7488076670178424e-05,1.2473110313947093e-06 -248.48484848484847,2.5259853081364453e-05,1.1475928120113306e-06 -254.54545454545453,2.3230207186679633e-05,1.0565897976102666e-06 -260.6060606060606,2.1378839830268592e-05,9.734343667337976e-07 -266.6666666666667,1.9687875041238897e-05,8.973596880555494e-07 -272.72727272727275,1.814152903327972e-05,8.276861857048865e-07 -278.7878787878788,1.6725828945025753e-05,7.638100388082462e-07 -284.8484848484849,1.542837336637508e-05,7.051933839941022e-07 -290.9090909090909,1.4238128024541909e-05,6.513559467851399e-07 -296.96969696969694,1.3145251102275614e-05,6.018678746455527e-07 -303.030303030303,1.2140943570554709e-05,5.563435829046496e-07 -309.09090909090907,1.1217320672700575e-05,5.144364564039708e-07 -315.1515151515151,1.0367301323625882e-05,4.7583427577585776e-07 -321.2121212121212,9.584512709220245e-06,4.402552587770878e-07 -327.27272727272725,8.863207805018012e-06,4.074446248981597e-07 -333.3333333333333,8.198193895334027e-06,3.7717160621760397e-07 -339.3939393939394,7.584770476356613e-06,3.4922683971635083e-07 -345.45454545454544,7.0186751794287334e-06,3.2342008645360596e-07 -351.5151515151515,6.496036562317402e-06,2.995782314949668e-07 -357.57575757575756,6.01333279359243e-06,2.775435255716074e-07 -363.6363636363636,5.567355404034167e-06,2.57172035378553e-07 -369.6969696969697,5.155177404005252e-06,2.38332274389056e-07 -375.75757575757575,4.7741251708824256e-06,2.209039902341212e-07 -381.8181818181818,4.4217535992120146e-06,2.047770882056355e-07 -387.8787878787879,4.095824080936925e-06,1.898506733991002e-07 -393.93939393939394,3.7942849460982165e-06,1.7603219650906529e-07 -400.0,3.5152540477188352e-06,1.6323669040266947e-07 -406.06060606060606,3.2570032196969305e-06,1.5138608638686988e-07 -412.1212121212121,3.0179443747785776e-06,1.4040860060498304e-07 -418.1818181818182,2.796617042137166e-06,1.3023818229129776e-07 -424.24242424242425,2.5916771716729647e-06,1.2081401671473214e-07 -430.3030303030303,2.401887055626578e-06,1.1208007658381168e-07 -436.3636363636364,2.2261062381153046e-06,1.0398471649069433e-07 -442.42424242424244,2.0632833002897994e-06,9.648030566253671e-08 -448.4848484848485,1.91244842342151e-06,8.952289488174467e-08 -454.54545454545456,1.77270664474867e-06,8.307191394731801e-08 -460.6060606060606,1.643231731649534e-06,7.70898964899788e-08 -466.6666666666667,1.523260608944775e-06,7.154222933448258e-08 -472.72727272727275,1.41208828208309e-06,6.639692393224907e-08 -478.7878787878788,1.3090632058261912e-06,6.162440767362994e-08 -484.8484848484849,1.213583053982717e-06,5.719733313803325e-08 -490.9090909090909,1.1250908508816117e-06,5.3090403557059794e-08 -496.96969696969694,1.0430714297394215e-06,4.928021295528231e-08 -503.030303030303,9.670481869604478e-07,4.574509959914621e-08 -509.09090909090907,8.965801047964723e-07,4.2465011529940264e-08 -515.1515151515151,8.312590177541469e-07,3.942138308466069e-08 -521.2121212121212,7.707071007327035e-07,3.659702142123486e-08 -527.2727272727273,7.145745591531545e-07,3.397600216400717e-08 -533.3333333333334,6.625375033458384e-07,3.154357337335444e-08 -539.3939393939394,6.142959912328441e-07,2.9286067121273717e-08 -545.4545454545455,5.69572224906969e-07,2.7190818024052275e-08 -551.5151515151515,5.28108888096348e-07,2.5246088144781705e-08 +0.0,0.023375083821093202,0.004724267039082286 +6.0606060606060606,0.006015936097981885,0.00048067694795026503 +12.121212121212121,0.0037630219628645677,0.00020898463399736449 +18.18181818181818,0.00280850156620137,0.0001370501837963449 +24.242424242424242,0.002235660296023027,0.00010397508879891541 +30.303030303030305,0.001832093611830407,8.317900549478907e-05 +36.36363636363636,0.0015252290107508322,6.821096771828152e-05 +42.42424242424242,0.0012823369288707286,5.674924468808148e-05 +48.484848484848484,0.0010856113048727043,4.767616407318368e-05 +54.54545454545455,0.0009240163266653293,4.034886306263733e-05 +60.60606060606061,0.0007900434527428794,3.435345322917524e-05 +66.66666666666667,0.0006782378749629537,2.940226690776652e-05 +72.72727272727272,0.0005844570261519203,2.528452350447823e-05 +78.78787878787878,0.0005054618561861301,2.1840120873380384e-05 +84.84848484848484,0.00043867130927317084,1.8944461888586813e-05 +90.9090909090909,0.0003820028732363863,1.6498971334337277e-05 +96.96969696969697,0.0003337620411397563,1.4424766380649144e-05 +103.03030303030303,0.0002925617281413402,1.2658201864241353e-05 +109.0909090909091,0.0002572613549580594,1.1147606287906962e-05 +115.15151515151516,0.0002269196281034337,9.85081936109595e-06 +121.21212121212122,0.00020075730903692135,8.73329542823856e-06 +127.27272727272727,0.0001781275179985871,7.766621337937887e-06 +133.33333333333334,0.00015849185742760268,6.927346148774717e-06 +139.3939393939394,0.0001414011040421205,6.196050065383577e-06 +145.45454545454544,0.0001264795279045483,5.556599458065964e-06 +151.5151515151515,0.00011341211350549784,4.995548070611506e-06 +157.57575757575756,0.00010193411596051562,4.50165391510965e-06 +163.63636363636363,9.182250418594368e-05,4.065488225111144e-06 +169.6969696969697,8.288893409371997e-05,3.6791179866953224e-06 +175.75757575757575,7.497396588695066e-05,3.3358474909489856e-06 +181.8181818181818,6.794229547564195e-05,3.030007380143822e-06 +187.87878787878788,6.167881440444278e-05,2.756782019371931e-06 +193.93939393939394,5.60853480740431e-05,2.5120678761193838e-06 +200.0,5.107795038023165e-05,2.292357049569096e-06 +206.06060606060606,4.6584655668069466e-05,2.0946412469166185e-06 +212.12121212121212,4.2543607248301044e-05,1.916332422070603e-06 +218.1818181818182,3.890149654450125e-05,1.7551970237391737e-06 +224.24242424242425,3.561225893766594e-05,1.6093013844893196e-06 +230.3030303030303,3.263598210804217e-05,1.476966250600692e-06 +236.36363636363637,2.9937990585322375e-05,1.3567288284362993e-06 +242.42424242424244,2.748807666124451e-05,1.247311025491189e-06 +248.48484848484847,2.5259853075502393e-05,1.1475928081316484e-06 +254.54545454545453,2.3230207182833192e-05,1.0565897950605219e-06 +260.6060606060606,2.137883982774472e-05,9.734343650580346e-07 +266.6666666666667,1.9687875039582836e-05,8.973596869541529e-07 +272.72727272727275,1.814152903219308e-05,8.276861849809678e-07 +278.7878787878788,1.6725828944312748e-05,7.638100383324172e-07 +284.8484848484849,1.5428373365907238e-05,7.05193383681331e-07 +290.9090909090909,1.423812802423493e-05,6.513559465795427e-07 +296.96969696969694,1.3145251102074187e-05,6.018678745104007e-07 +303.030303030303,1.214094357042254e-05,5.563435828158028e-07 +309.09090909090907,1.1217320672613849e-05,5.144364563455623e-07 +315.1515151515151,1.0367301323568979e-05,4.7583427573745864e-07 +321.2121212121212,9.58451270918291e-06,4.402552587518424e-07 +327.27272727272725,8.86320780499351e-06,4.0744462488156166e-07 +333.3333333333333,8.198193895317953e-06,3.77171606206691e-07 +339.3939393939394,7.584770476346065e-06,3.4922683970917546e-07 +345.45454545454544,7.018675179421812e-06,3.2342008644888793e-07 +351.5151515151515,6.4960365623128605e-06,2.995782314918645e-07 +357.57575757575756,6.01333279358945e-06,2.775435255695674e-07 +363.6363636363636,5.567355404032211e-06,2.5717203537721155e-07 +369.6969696969697,5.155177404003969e-06,2.3833227438817385e-07 +375.75757575757575,4.7741251708815845e-06,2.2090399023354109e-07 +381.8181818181818,4.421753599211463e-06,2.0477708820525399e-07 +387.8787878787879,4.0958240809365626e-06,1.8985067339884931e-07 +393.93939393939394,3.7942849460979785e-06,1.7603219650890025e-07 +400.0,3.5152540477186785e-06,1.6323669040256097e-07 +406.06060606060606,3.257003219696828e-06,1.5138608638679847e-07 +412.1212121212121,3.0179443747785103e-06,1.404086006049361e-07 +418.1818181818182,2.7966170421371217e-06,1.3023818229126684e-07 +424.24242424242425,2.591677171672936e-06,1.208140167147118e-07 +430.3030303030303,2.401887055626559e-06,1.1208007658379831e-07 +436.3636363636364,2.2261062381152923e-06,1.0398471649068554e-07 +442.42424242424244,2.0632833002897913e-06,9.648030566253093e-08 +448.4848484848485,1.9124484234215045e-06,8.952289488174088e-08 +454.54545454545456,1.7727066447486661e-06,8.307191394731551e-08 +460.6060606060606,1.6432317316495318e-06,7.708989648997714e-08 +466.6666666666667,1.5232606089447735e-06,7.154222933448151e-08 +472.72727272727275,1.412088282083089e-06,6.639692393224836e-08 +478.7878787878788,1.3090632058261906e-06,6.162440767362948e-08 +484.8484848484849,1.2135830539827166e-06,5.719733313803295e-08 +490.9090909090909,1.125090850881611e-06,5.309040355705959e-08 +496.96969696969694,1.0430714297394213e-06,4.928021295528217e-08 +503.030303030303,9.67048186960448e-07,4.574509959914613e-08 +509.09090909090907,8.965801047964722e-07,4.24650115299402e-08 +515.1515151515151,8.312590177541467e-07,3.942138308466066e-08 +521.2121212121212,7.707071007327035e-07,3.6597021421234835e-08 +527.2727272727273,7.145745591531545e-07,3.397600216400715e-08 +533.3333333333334,6.625375033458384e-07,3.154357337335442e-08 +539.3939393939394,6.142959912328441e-07,2.928606712127371e-08 +545.4545454545455,5.695722249069688e-07,2.719081802405227e-08 +551.5151515151515,5.281088880963481e-07,2.5246088144781702e-08 557.5757575757576,4.896676127367004e-07,2.3440997733463865e-08 -563.6363636363636,4.5402756397112417e-07,2.1765461321594076e-08 -569.6969696969697,4.2098413387735e-07,2.0210128732097215e-08 +563.6363636363636,4.540275639711241e-07,2.1765461321594072e-08 +569.6969696969697,4.2098413387735e-07,2.0210128732097212e-08 575.7575757575758,3.9034773509909644e-07,1.876633060495577e-08 581.8181818181818,3.619426863440573e-07,1.7426028074325982e-08 -587.8787878787879,3.3560618241714127e-07,1.6181766264861343e-08 -593.9393939393939,3.111873420931026e-07,1.5026631303744378e-08 +587.8787878787879,3.356061824171413e-07,1.6181766264861343e-08 +593.9393939393939,3.111873420931026e-07,1.5026631303744375e-08 600.0,2.8854632770590936e-07,1.3954210570925084e-08 diff --git a/tests/integration/test-data/reference/test5/emission_probability.csv b/tests/integration/test-data/reference/test5/emission_probability.csv index 7c78015b..787e5dc2 100644 --- a/tests/integration/test-data/reference/test5/emission_probability.csv +++ b/tests/integration/test-data/reference/test5/emission_probability.csv @@ -29,7 +29,8 @@ F22,4.23,0.04,0.055,0.055 F23,2.23,0.14,0.07,0.07 F24,0.382,0.016,0.029500000000000002,0.029500000000000002 F25,0.075,0.01,0.195,0.05 -F26,0.0022,0.0001,0.021599999999999998,0.019534584715319648 +F26,0.0082,0.0009,0.135,0.04 +F26_m1,0.0022,0.0001,0.021599999999999998,0.019534584715319648 F27,0.0057,0.0008,0.8,0.2 F29,0.00267,0.00021,0.6,0.4 Ne26,0.195,0.002,0.0013,0.0003 @@ -96,7 +97,7 @@ Ca52,4.6,0.3,0.01,0.01 Ca53,0.461,0.09,0.4,0.1 Sc54,0.526,0.015,0.16,0.09 Sc55,0.096,0.002,0.17,0.07 -Sc56,0.069,0.007,0.24,0.12 +Sc56_m1,0.069,0.007,0.24,0.12 V59,0.092,0.009,0.06,0.03 V61,0.0483,0.001,0.2,0.1 V63,0.0196,0.001,0.67,0.33 @@ -106,10 +107,12 @@ Mn66,0.0639,0.0011,0.05,0.013999999999999999 Mn68,0.0352,0.002,0.15,0.09 Mn69,0.0258,0.0028,0.4,0.2 Mn70,0.0199,0.0017,0.5,0.2 -Co68,1.6,0.3,0.06,0.03 -Co70,0.508,0.007,0.03,0.015 +Co68_m1,1.6,0.3,0.06,0.03 +Co70,0.113,0.007,0.03,0.015 +Co70_m1,0.508,0.007,0.03,0.015 Co71,0.08,0.003,0.188,0.08121576201698781 -Co72,0.0478,0.0005,0.074,0.03059411708155671 +Co72,0.0515,0.0003,0.074,0.03059411708155671 +Co72_m1,0.0478,0.0005,0.074,0.03059411708155671 Co73,0.0407,0.0013,0.26,0.09848857801796104 Co74,0.0314,0.0015,0.22999999999999998,0.1522366578718805 Co75,0.0265,0.0012,0.08,0.08 @@ -132,7 +135,8 @@ Zn82,0.1779,0.0025,0.69,0.07 Zn83,0.0997,0.003,0.71,0.29 Zn84,0.0536,0.0081,0.73,0.26 Ga79,2.852,0.01,0.00084,0.00029 -Ga80,1.3,0.2,0.0045000000000000005,0.0007000000000000001 +Ga80,1.9,0.1,0.0045000000000000005,0.0007000000000000001 +Ga80_m1,1.3,0.2,0.0045000000000000005,0.0007000000000000001 Ga81,1.217,0.004,0.125,0.008 Ga82,0.601,0.002,0.22699999999999998,0.02 Ga83,0.31,0.001,0.67,0.06 @@ -173,7 +177,8 @@ Rb94,2.704,0.015,0.1039,0.0022 Rb95,0.378,0.002,0.08800000000000001,0.004 Rb96,0.2016,0.001,0.141,0.008 Rb97,0.169,0.001,0.249,0.015 -Rb98,0.096,0.003,0.07204,0.009001088823025803 +Rb98,0.115,0.006,0.07204,0.009001088823025803 +Rb98_m1,0.096,0.003,0.07204,0.009001088823025803 Rb99,0.0578,0.0009,0.191,0.023 Rb100,0.051,0.002,0.059,0.012041594578792296 Rb101,0.0315,0.0045,0.28,0.05 @@ -184,11 +189,15 @@ Sr99,0.269,0.002,0.00096,0.00016 Sr100,0.2007,0.0013,0.0111,0.0021 Sr101,0.115,0.001,0.0252,0.0025 Sr102,0.072,0.008,0.055,0.02 -Y97,1.17,0.03,0.0003972,0.0003972 -Y98,2.32,0.08,0.03096,0.009216078341680914 +Y97,3.74,0.05,0.00057594,9.93e-05 +Y97_m1,1.17,0.03,0.0003972,0.0003972 +Y98,0.548,0.002,0.0033,0.0003 +Y98_m1,2.32,0.08,0.03096,0.009216078341680914 Y99,1.478,0.007,0.0197,0.003 -Y100,0.94,0.03,0.0051,0.0006 +Y100,0.732,0.005,0.0051,0.0006 +Y100_m1,0.94,0.03,0.0051,0.0006 Y101,0.432,0.012,0.019799999999999998,0.002 +Y102_m1,0.396,0.036,0.06,0.017 Y102,0.3,0.01,0.04,0.015 Y103,0.236,0.016,0.081,0.02 Y104,0.212,0.02,0.34,0.1 @@ -198,13 +207,15 @@ Zr104,0.92,0.028,0.005,0.005 Zr105,0.666,0.028,0.01,0.01 Zr106,0.175,0.007,0.035,0.035 Zr107,0.15,0.003,0.115,0.115 -Nb104,0.98,0.07,0.0005,0.0003 +Nb104,4.9,0.4,0.0006,0.0003 +Nb104_m1,0.98,0.07,0.0005,0.0003 Nb105,2.91,0.07,0.017,0.009000000000000001 Nb106,1.084,0.021,0.045,0.003 Nb107,0.287,0.011,0.07400000000000001,0.01 Nb108,0.192,0.006,0.063,0.005 Nb109,0.113,0.011,0.31,0.05 -Nb110,0.094,0.009,0.2,0.08 +Nb110,0.075,0.001,0.2,0.08 +Nb110_m1,0.094,0.009,0.2,0.08 Mo109,0.692,0.026,0.013000000000000001,0.006 Mo110,0.287,0.01,0.02,0.006999999999999999 Mo111,0.186,0.009,0.06,0.06 @@ -213,7 +224,8 @@ Tc110,0.911,0.014,0.0004,0.0002 Tc111,0.294,0.02,0.0085,0.002 Tc112,0.305,0.01,0.017,0.004 Tc113,0.152,0.008,0.021,0.003 -Tc114,0.1,0.02,0.006500000000000001,0.004 +Tc114,0.09,0.02,0.006500000000000001,0.004 +Tc114_m1,0.1,0.02,0.006500000000000001,0.004 Tc115,0.078,0.002,0.19,0.05 Tc116,0.057,0.003,0.17,0.07 Ru116,0.203,0.006,0.004,0.004 @@ -222,7 +234,8 @@ Ru118,0.099,0.003,0.023,0.023 Ru119,0.0692,0.002,0.06,0.05 Ru120,0.045,0.002,0.06,0.03 Ru121,0.03,0.003,0.13,0.04 -Rh116,0.57,0.05,0.00525,0.00525 +Rh116,0.69,0.05,0.00525,0.00525 +Rh116_m1,0.57,0.05,0.00525,0.00525 Rh117,0.42,0.04,0.038,0.038 Rh118,0.286,0.01,0.021,0.009000000000000001 Rh119,0.189,0.006,0.034,0.009000000000000001 @@ -239,36 +252,49 @@ Pd125,0.0641,0.0017,0.037000000000000005,0.004 Pd126,0.0488,0.0008,0.049,0.009000000000000001 Pd127,0.038,0.002,0.09,0.03 Pd128,0.036,0.005,0.1,0.07 -Ag120,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 +Ag120,0.94,0.1,5e-06,5e-06 +Ag120_m1,1.52,0.07,5e-06,5e-06 +Ag120_m2,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 Ag121,0.777,0.012,0.0008,0.00013 -Ag122,0.2,0.05,0.0009299999999999999,6e-05 +Ag122,0.529,0.019,0.0009281399999999999,5.988e-05 +Ag122_m1,0.2,0.05,0.0009299999999999999,6e-05 Ag123,0.3,0.008,0.0085,0.0015 -Ag124,0.144,0.02,0.006500000000000001,0.009000000000000001 -Ag125,0.159,0.021,0.046,0.01 -Ag126,0.1026,0.0014,0.038,0.002 +Ag124,0.191,0.028,0.0115,0.011000000000000001 +Ag124_m1,0.144,0.02,0.006500000000000001,0.009000000000000001 +Ag125,0.176,0.003,0.012,0.002 +Ag125_m1,0.159,0.021,0.046,0.01 +Ag126_m1,0.1026,0.0014,0.038,0.002 Ag127,0.0891,0.0009,0.055,0.002 Ag128,0.0659,0.0024,0.09300000000000001,0.005 Ag129,0.052,0.003,0.179,0.013999999999999999 -Cd127,0.36,0.04,0.006,0.006 +Cd127_m1,0.36,0.04,0.006,0.006 Cd128,0.2461,0.0021,0.0095,0.0095 Cd129,0.151,0.004,0.0184,0.0015 Cd130,0.1287,0.0023,0.03,0.002 Cd131,0.083,0.015,0.035,0.01 Cd132,0.084,0.005,0.6,0.15 -In127,3.618,0.032,0.006999999999999999,0.0006 -In128,0.72,0.1,0.00019199999999999998,3.6e-05 -In129,1.165,0.01,0.035393499999999994,0.0061814 -In130,0.535,0.006,0.00975,0.0015 -In131,0.32,0.06,0.11879999999999999,0.0693 +In127,1.087,0.011,0.00015,0.00015 +In127_m1,3.618,0.032,0.006999999999999999,0.0006 +In128,0.84,0.06,0.00019199999999999998,3.6e-05 +In128_m1,0.72,0.1,0.00019199999999999998,3.6e-05 +In129,0.607,0.006,0.0023,0.001 +In129_m1,1.165,0.01,0.035393499999999994,0.0061814 +In130,0.275,0.008,0.012,0.0029 +In130_m1,0.535,0.006,0.00975,0.0015 +In130_m2,0.535,0.006,0.00975,0.0015 +In131,0.266,0.008,0.011049999999999999,0.0027 +In131_m1,0.33,0.015,0.011049999999999999,0.0027 +In131_m2,0.32,0.06,0.11879999999999999,0.0693 In132,0.2013,0.0012,0.12300000000000001,0.004 -In133,0.167,0.011,0.93,0.03 +In133,0.162,0.002,0.9,0.03 +In133_m1,0.167,0.011,0.93,0.03 In134,0.121,0.006,1.07,0.05 Sn133,1.42,0.06,0.000294,2.3999999999999997e-05 Sn134,0.902,0.028,0.17,0.13 Sn135,0.516,0.005,0.21,0.03 Sn136,0.361,0.005,0.27,0.04 Sn137,0.221,0.017,0.5,0.1 -Sb134,9.97,0.1,0.0008799999999999999,3.6e-05 +Sb134_m1,9.97,0.1,0.0008799999999999999,3.6e-05 Sb135,1.668,0.01,0.2,0.028999999999999998 Sb136,0.924,0.014,0.2518,0.07300246571178264 Sb137,0.506,0.025,0.49,0.08 diff --git a/tests/integration/test-data/reference/test5/fission_yield.csv b/tests/integration/test-data/reference/test5/fission_yield.csv index 637e45d6..e793c12e 100644 --- a/tests/integration/test-data/reference/test5/fission_yield.csv +++ b/tests/integration/test-data/reference/test5/fission_yield.csv @@ -1,16 +1,16 @@ Nuclide,CFY,sigma CFY V66,7.094747804e-16,4.54063659e-16 Cr66,8.778983850000001e-13,5.61856755e-13 -Cr67,3.37002e-13,2.156815e-13 -Cr68,2.2400150000000003e-14,1.43361e-14 +Cr67,3.37002e-13,1.1656815e-12 +Cr68,2.2400150000000003e-14,9.643361e-13 Cr69,3.4480727805e-15,2.206766778e-15 -Cr70,0.0,0.0 +Cr70,0.0,1e-12 Mn66,1.088590155e-10,6.96699465e-11 Mn67,1.3911163900000002e-10,8.9031312e-11 Mn68,2.5832805350000002e-11,1.65329995e-11 Mn69,3.0912995850000002e-12,1.97842898e-12 -Mn70,2.2250150000000002e-13,1.42401e-13 -Mn71,1.1100050000000002e-14,7.104050000000001e-15 +Mn70,2.2250150000000002e-13,1.092401e-12 +Mn71,1.1100050000000002e-14,9.5710405e-13 Mn72,1.0302374550000001e-16,6.59353975e-17 Mn73,2.017736745e-17,1.29135217e-17 Fe66,1.5538343500000001e-09,9.944528499999999e-10 @@ -21,9 +21,9 @@ Fe70,2.0577881500000003e-10,1.3169827500000001e-10 Fe71,2.95738175e-11,1.8927251e-11 Fe72,3.25921655e-12,2.0858996e-12 Fe73,5.31629295e-13,3.40242825e-13 -Fe74,2.215015e-14,1.41761e-14 +Fe74,2.215015e-14,9.641761e-13 Fe75,4.4827265e-16,2.8689453000000004e-16 -Fe76,0.0,0.0 +Fe76,0.0,1e-12 Co66,2.4457653499999997e-09,1.10059505e-09 Co67,1.2314869500000001e-08,7.881536000000002e-09 Co68,1.296686e-08,8.2988065e-09 @@ -51,7 +51,7 @@ Ni76,5.6536724999999995e-09,3.6183464999999997e-09 Ni77,8.707639999999999e-10,5.572888e-10 Ni78,1.2628208000000001e-10,8.0820715e-11 Ni80,2.82820455e-13,1.810051255e-13 -Ni82,0.0,0.0 +Ni82,0.0,1e-12 Cu66,2.54086155e-09,8.130778e-10 Cu67,1.4179303000000001e-08,4.537384e-09 Cu68,2.0763625000000003e-08,9.343631499999999e-09 @@ -67,9 +67,9 @@ Cu75,1.0429339999999999e-06,6.674766e-07 Cu76,8.411442549999999e-07,5.383320999999999e-07 Cu77,4.851701e-07,3.1050925e-07 Cu78,1.4354265e-07,9.1867495e-08 -Cu79,1.49001e-08,9.536050000000001e-09 +Cu79,1.49001e-08,9.537000000000001e-09 Cu80,1.90872485e-09,1.2215822000000001e-09 -Cu81,1.57001e-10,1.004805e-10 +Cu81,1.57001e-10,1.014305e-10 Cu82,1.3856004999999999e-11,8.86782635e-12 Cu83,1.97933135e-13,1.2667698450000002e-13 Zn66,2.54086155e-09,8.130778e-10 @@ -89,15 +89,15 @@ Zn77,3.117782e-05,1.9953874999999997e-05 Zn78,3.5637134999999994e-05,1.6353559999999996e-05 Zn79,1.724187e-05,8.076636e-06 Zn80,2.8213435e-06,1.8056575e-06 -Zn81,1.68501e-07,1.078405e-07 +Zn81,1.68501e-07,1.0784145000000001e-07 Zn82,1.4914270000000002e-07,9.5451545e-08 Zn83,5.27538725e-09,3.3762484499999997e-09 Zn84,1.1917146999999999e-08,7.626998999999999e-09 Zn85,2.6531493500000003e-12,1.69801867e-12 Zn86,2.349349e-12,1.5035859999999998e-12 -Ga66,0.0,0.0 -Ga67,0.0,0.0 -Ga68,0.0,0.0 +Ga66,0.0,1e-12 +Ga67,0.0,1e-12 +Ga68,0.0,1e-12 Ga69,3.2814055e-08,1.0500508000000001e-08 Ga70,1.5974064999999998e-13,1.0223383e-13 Ga71,1.04354545e-07,3.3393445e-08 @@ -120,13 +120,13 @@ Ga85,5.3835905999999996e-08,3.44549835e-08 Ga86,3.1444817e-07,2.0124655999999997e-07 Ga87,4.108823e-10,2.6296485e-10 Ga88,4.984829000000001e-12,3.1902945e-12 -Ge66,0.0,0.0 -Ge67,0.0,0.0 -Ge68,0.0,0.0 -Ge69,0.0,0.0 +Ge66,0.0,1e-12 +Ge67,0.0,1e-12 +Ge68,0.0,1e-12 +Ge69,0.0,1e-12 Ge70,1.5974064999999998e-13,1.0223383e-13 -Ge71,0.0,0.0 -Ge71_m1,0.0,0.0 +Ge71,0.0,1e-12 +Ge71_m1,0.0,1e-12 Ge72,2.8198214999999995e-07,3.7370555e-08 Ge73,1.071934e-06,2.46544e-07 Ge73_m1,1.071934e-06,3.3374829999999996e-07 @@ -151,10 +151,10 @@ Ge88,5.14715e-07,3.294173e-07 Ge89,2.0191844500000002e-09,1.2922770100000001e-09 Ge90,3.5967790000000006e-12,2.3019369999999997e-12 Ge91,4.9772373e-13,3.1854305e-13 -As69,0.0,0.0 -As71,0.0,0.0 -As72,0.0,0.0 -As73,0.0,0.0 +As69,0.0,1e-12 +As71,0.0,1e-12 +As72,0.0,1e-12 +As73,0.0,1e-12 As74,1.5873860499999998e-13,1.0159240499999999e-13 As74_m1,1.1095740500000001e-13,7.101266299999999e-14 As75,1.03667415e-05,1.1888595e-06 @@ -178,11 +178,11 @@ As90,7.5271585e-08,4.8173719999999995e-08 As91,1.0679494e-08,6.834869000000001e-09 As92,8.246402580000001e-10,5.277719655000001e-10 As93,1.43946465e-12,9.212579e-13 -Se72,0.0,0.0 -Se73,0.0,0.0 -Se73_m1,0.0,0.0 -Se74,5.167639e-14,2.3254384999999998e-14 -Se75,0.0,0.0 +Se72,0.0,1e-12 +Se73,0.0,1e-12 +Se73_m1,0.0,1e-12 +Se74,5.167639e-14,7.3254385e-14 +Se75,0.0,1e-12 Se76,1.57018602e-09,1.00492551e-09 Se77,7.727469e-05,6.231488499999999e-06 Se77_m1,2.3198388e-07,3.711744e-08 @@ -209,10 +209,10 @@ Se93,5.196585500000001e-08,3.325818e-08 Se94,3.3674586e-09,2.1551753999999998e-09 Se95,3.58530125e-12,2.2945905999999998e-12 Se96,1.35660145e-12,8.6822349e-13 -Br75,0.0,0.0 -Br77,0.0,0.0 -Br77_m1,0.0,0.0 -Br78,4.6926675e-14,3.003311e-14 +Br75,0.0,1e-12 +Br77,0.0,1e-12 +Br77_m1,0.0,1e-12 +Br78,4.6926675e-14,8.003311e-14 Br79,0.0004412602,2.9252855e-05 Br79_m1,9.90488515e-12,6.339105599999999e-12 Br80,1.4077800100000001e-09,9.009763599999999e-10 @@ -238,10 +238,10 @@ Br95,8.087413e-08,5.1759465e-08 Br96,3.5743865000000006e-08,2.2875995e-08 Br97,3.6378995050000005e-10,2.3282557250000004e-10 Br98,1.3688154499999998e-10,8.7604265e-11 -Kr77,0.0,0.0 -Kr78,0.0,0.0 -Kr79_m1,0.0,0.0 -Kr79,0.0,0.0 +Kr77,0.0,1e-12 +Kr78,0.0,1e-12 +Kr79_m1,0.0,1e-12 +Kr79,0.0,1e-12 Kr80,1.4077800100000001e-09,9.009763599999999e-10 Kr81,1.026554005e-11,6.5699665250000005e-12 Kr81_m1,1.340160005e-12,8.577024029999999e-13 @@ -267,8 +267,8 @@ Kr98,1.5642360999999998e-05,1.0011175499999998e-05 Kr99,9.692612200000002e-09,6.203263789000001e-09 Kr100,1.1107240999999999e-08,7.1086269999999995e-09 Kr101,1.5130150500000003e-12,9.683264500000001e-13 -Rb79,0.0,0.0 -Rb81,0.0,0.0 +Rb79,0.0,1e-12 +Rb81,0.0,1e-12 Rb83,2.18660801e-12,1.3994314049999999e-12 Rb84,2.0804576999999998e-11,1.3314891e-11 Rb85,0.012898418,4.75593e-05 @@ -292,10 +292,10 @@ Rb100,0.00033086625500000004,0.0002117544025 Rb101,3.6526700000000004e-08,2.3377085000000002e-08 Rb102,2.6167471e-09,1.6747185725000002e-09 Rb103,3.3262716500000003e-12,2.1288145500000003e-12 -Sr83,0.0,0.0 +Sr83,0.0,1e-12 Sr84,6.279563499999999e-13,4.0189249999999995e-13 -Sr85_m1,3.7284839999999996e-13,2.3862289999999995e-13 -Sr85,6.9834595e-13,4.4694079999999997e-13 +Sr85_m1,3.7284839999999996e-13,2.8862289999999994e-13 +Sr85,6.9834595e-13,4.969408e-13 Sr86,6.286064e-08,4.0230849999999997e-08 Sr87,0.0251339,0.0001297333 Sr87_m1,2.3856940099999997e-09,1.526849105e-09 @@ -316,12 +316,12 @@ Sr101,6.661611e-05,3.453407e-05 Sr102,4.780906e-06,2.7475377500000003e-06 Sr103,9.543153500000001e-08,6.107614e-08 Sr104,1.13444645e-08,7.26047395e-09 -Sr105,2.0749450000000002e-09,1.327965e-09 -Sr106,0.0,0.0 -Sr107,0.0,0.0 -Sr108,0.0,0.0 -Y85,0.0,0.0 -Y87,9.4993255e-14,6.0795725e-14 +Sr105,2.0749450000000002e-09,1.328915e-09 +Sr106,0.0,1e-12 +Sr107,0.0,1e-12 +Sr108,0.0,1e-12 +Y85,0.0,1e-12 +Y87,9.4993255e-14,1.10795725e-13 Y88,1.6159310050000003e-11,1.034192805e-11 Y89,0.046341565,0.00046893775 Y89_m1,4.6311875e-06,4.686387499999999e-08 @@ -336,7 +336,7 @@ Y94,0.06360567,0.000705207 Y95,0.06313677499999999,0.003705975 Y96,0.05999511,0.009359267 Y96_m1,0.019553943,0.008799284 -Y97_m1,0.0,0.0 +Y97_m1,0.0,1e-12 Y97,0.04917752999999999,0.010792605 Y98,0.020147175,0.004498931 Y98_m1,0.01126865,0.0035378399999999996 @@ -351,10 +351,10 @@ Y106,1.4937951545e-14,9.560272985e-15 Y107,4.366354145e-16,2.7944668300000005e-16 Y108,1.8024578267500003e-17,1.1535736085500001e-17 Y109,4.2357241770000005e-14,2.7108680335e-14 -Y110,7.508325e-16,4.805327999999999e-16 -Zr87,0.0,0.0 -Zr88,0.0,0.0 -Zr89,1.9663575000000002e-14,1.2584745e-14 +Y110,7.508325e-16,5.04805328e-14 +Zr87,0.0,1e-12 +Zr88,0.0,1e-12 +Zr89,1.9663575000000002e-14,6.2584745e-14 Zr90_m1,1.990982505e-12,1.274234505e-12 Zr90,0.056551905,0.036193205 Zr91,0.05738412999999999,0.00042794544999999993 @@ -379,10 +379,10 @@ Zr109,3.762118999999999e-09,2.4077564999999997e-09 Zr110,8.832823049999999e-11,5.6530090499999995e-11 Zr111,1.7008046016500002e-10,1.0885127455500001e-10 Zr112,5.3204384399999996e-14,3.405072575e-14 -Nb89,0.0,0.0 -Nb90,0.0,0.0 -Nb91,0.0,0.0 -Nb92,2.1563479999999998e-13,1.3800649999999998e-13 +Nb89,0.0,1e-12 +Nb90,0.0,1e-12 +Nb91,0.0,1e-12 +Nb92,2.1563479999999998e-13,1.8800649999999997e-13 Nb93,0.062746405,0.00047116195 Nb93_m1,0.059609125,0.00044760384999999994 Nb94,2.34819351e-09,1.50284271e-09 @@ -414,11 +414,11 @@ Nb111,1.4954872230000002e-07,9.571104155e-08 Nb112,9.536033250000001e-10,6.103062900000001e-10 Nb113,7.562225082000001e-11,4.8398340502000004e-11 Nb114,3.4264656154000002e-12,2.1929375933999998e-12 -Mo90,0.0,0.0 -Mo91,0.0,0.0 -Mo92,0.0,0.0 -Mo93_m1,0.0,0.0 -Mo93,0.0,0.0 +Mo90,0.0,1e-12 +Mo91,0.0,1e-12 +Mo92,0.0,1e-12 +Mo93_m1,0.0,1e-12 +Mo93,0.0,1e-12 Mo94,2.34819851e-09,1.50284591e-09 Mo95,0.06434751,0.0004581434 Mo96,5.17283905e-06,3.31061052e-06 @@ -441,13 +441,13 @@ Mo112,1.21267354e-06,7.761128200000001e-07 Mo113,8.51576135e-08,5.450101150000001e-08 Mo114,4.171822055e-09,2.6699651e-09 Mo115,9.598399894500001e-11,6.142989934e-11 -Mo116,6.10005e-12,3.904025e-12 +Mo116,6.10005e-12,4.854025e-12 Mo117,1.2900862800000001e-14,8.25654185e-15 -Tc93,0.0,0.0 -Tc95,0.0,0.0 -Tc95_m1,0.0,0.0 -Tc97_m1,8.359410999999999e-14,5.35002e-14 -Tc97,1.671886e-13,1.070004e-13 +Tc93,0.0,1e-12 +Tc95,0.0,1e-12 +Tc95_m1,0.0,1e-12 +Tc97_m1,8.359410999999999e-14,1.035002e-13 +Tc97,1.671886e-13,1.5700040000000002e-13 Tc98,8.444912950049998e-09,5.404747328049999e-09 Tc99,0.061117059999999994,0.0006235070999999998 Tc99_m1,0.053783085,0.0007529626 @@ -472,9 +472,9 @@ Tc116,1.2010040725000001e-08,7.686412045e-09 Tc117,2.5249895550000003e-10,1.6159907e-10 Tc118,3.7336092859e-11,2.3895079429e-11 Tc119,1.0179450477500001e-13,6.514858307500001e-14 -Ru95,0.0,0.0 -Ru96,0.0,0.0 -Ru97,0.0,0.0 +Ru95,0.0,1e-12 +Ru96,0.0,1e-12 +Ru97,0.0,1e-12 Ru98,8.444912950049998e-09,3.800216328049999e-09 Ru99,0.061117059999999994,0.0006235070999999998 Ru100,5.3179200499999995e-08,3.40347453e-08 @@ -500,13 +500,13 @@ Ru118,4.565765345e-08,2.922090655e-08 Ru119,2.4962370630000002e-09,1.597592115e-09 Ru120,9.737880050000002e-11,6.2322607e-11 Ru121,6.118491532e-12,3.915843582e-12 -Ru122,3.15002e-14,2.016015e-14 -Ru124,0.0,0.0 -Rh99,0.0,0.0 -Rh101,3.0967814999999994e-13,1.393555e-13 -Rh101_m1,0.0,0.0 -Rh102,5.614101e-12,3.5930234999999996e-12 -Rh102_m1,4.4931865e-12,2.8756404999999995e-12 +Ru122,3.15002e-14,9.7016015e-13 +Ru124,0.0,1e-12 +Rh99,0.0,1e-12 +Rh101,3.0967814999999994e-13,1.893555e-13 +Rh101_m1,0.0,1e-12 +Rh102,5.614101e-12,3.6430234999999996e-12 +Rh102_m1,4.4931865e-12,2.9256404999999995e-12 Rh103,0.031931495,0.00033186559999999997 Rh103_m1,0.03161227,0.00044257154999999997 Rh104,1.856092025e-10,1.1878985149999998e-10 @@ -514,10 +514,10 @@ Rh104_m1,1.39931502e-10,8.955597099999999e-11 Rh105,0.011185164999999999,0.00022370325 Rh105_m1,0.0030200030000000003,0.0002131599 Rh106,0.005059576,7.0834015e-05 -Rh106_m1,0.0,0.0 +Rh106_m1,0.0,1e-12 Rh107,0.002111764,0.00016285224999999998 Rh108,0.0008149014,0.000100014845 -Rh108_m1,9.05005e-16,5.79205e-16 +Rh108_m1,9.05005e-16,9.50579205e-13 Rh109,0.00042266004999999996,0.00027050215 Rh109_m1,0.00020724165,0.00013263494499999998 Rh110,0.00031154939999999997,4.18153e-05 @@ -536,18 +536,18 @@ Rh121,5.486840500000001e-09,3.511565825e-09 Rh122,3.1120931000000003e-10,1.991741765e-10 Rh123,1.31810343e-11,8.435847895e-12 Rh124,2.89881335e-13,1.855237535e-13 -Pd99,0.0,0.0 -Pd101,0.0,0.0 -Pd102,8.986363499999999e-13,4.0438649999999996e-13 -Pd103,0.0,0.0 +Pd99,0.0,1e-12 +Pd101,0.0,1e-12 +Pd102,8.986363499999999e-13,4.5438649999999994e-13 +Pd103,0.0,1e-12 Pd104,1.856082025e-10,1.18718626e-10 Pd105,0.011185164999999999,0.00015659190000000001 Pd106,0.005059576,5.557521e-05 Pd107,0.002111764,9.672201500000001e-05 -Pd107_m1,0.0,0.0 +Pd107_m1,0.0,1e-12 Pd108,0.0008149014,6.8681495e-05 Pd109,0.00042266004999999996,0.00027050215 -Pd109_m1,5.1866295e-12,3.3194424999999997e-12 +Pd109_m1,5.1866295e-12,3.3694424999999997e-12 Pd110,0.0003120909,2.0929285000000002e-05 Pd111,0.00020093735,4.6215554999999995e-05 Pd111_m1,9.100977999999999e-07,2.912312e-07 @@ -564,25 +564,25 @@ Pd121,1.46232365e-06,9.358890500000001e-07 Pd122,2.5381327e-07,1.6244051000000001e-07 Pd123,3.0590384e-08,1.9577849e-08 Pd124,4.7233345e-09,3.022936e-09 -Pd125,1.0350050000000001e-10,6.624050000000001e-11 -Pd126,0.0,0.0 -Pd127,3.3501300000000004e-20,2.1440850000000002e-20 -Pd128,1.2729144999999999e-14,8.1466205e-15 -Pd129,0.0,0.0 -Pd130,6.450044e-13,4.1280255e-13 -Ag103,0.0,0.0 -Ag105,0.0,0.0 -Ag105_m1,0.0,0.0 -Ag106,0.0,0.0 -Ag106_m1,0.0,0.0 +Pd125,1.0350050000000001e-10,6.719050000000001e-11 +Pd126,0.0,1e-12 +Pd127,3.3501300000000004e-20,9.5000002144085e-13 +Pd128,1.2729144999999999e-14,5.81466205e-14 +Pd129,0.0,1e-12 +Pd130,6.450044e-13,4.6280255e-13 +Ag103,0.0,1e-12 +Ag105,0.0,1e-12 +Ag105_m1,0.0,1e-12 +Ag106,0.0,1e-12 +Ag106_m1,0.0,1e-12 Ag107,0.002111764,9.672201500000001e-05 -Ag107_m1,0.0,0.0 -Ag108_m1,0.0,0.0 -Ag108,0.0,0.0 +Ag107_m1,0.0,1e-12 +Ag108_m1,0.0,1e-12 +Ag108,0.0,1e-12 Ag109_m1,0.00042245705,0.0002703729 Ag109,0.0004226686,0.00027050785 -Ag110,9.594335e-15,6.140363e-15 -Ag110_m1,2.165848e-14,1.386145e-14 +Ag110,9.594335e-15,5.6140363e-14 +Ag110_m1,2.165848e-14,6.386145e-14 Ag111,0.00020059985,7.3139595e-06 Ag111_m1,0.00019973385,2.0910310000000003e-05 Ag112,0.00015185064999999998,8.552012499999998e-06 @@ -610,16 +610,16 @@ Ag126,9.232207000000001e-12,5.9086205e-12 Ag127,2.0959005e-12,1.3413759999999998e-12 Ag128,1.5424169999999998e-13,9.8714735e-14 Ag129,1.0859717e-15,6.950201450000001e-16 -Ag130,6.3265535e-08,4.048995e-08 +Ag130,6.3265535e-08,4.049e-08 Ag131,1.5147370064645999e-09,9.69437004137345e-10 -Cd105,0.0,0.0 -Cd106,0.0,0.0 -Cd107,0.0,0.0 -Cd108,0.0,0.0 -Cd109,0.0,0.0 -Cd110,3.0967814999999995e-14,1.9819375e-14 +Cd105,0.0,1e-12 +Cd106,0.0,1e-12 +Cd107,0.0,1e-12 +Cd108,0.0,1e-12 +Cd109,0.0,1e-12 +Cd110,3.0967814999999995e-14,6.9819375e-14 Cd111,0.00020119985,5.348734e-06 -Cd111_m1,0.0,0.0 +Cd111_m1,0.0,1e-12 Cd112,0.00015185064999999998,6.0740135e-06 Cd113,0.00015614715,7.840914999999999e-06 Cd113_m1,1.8463875e-06,1.6927175e-07 @@ -645,19 +645,19 @@ Cd128,3.38151255e-05,2.164168025e-05 Cd129,3.0777665500000004e-08,1.96977065e-08 Cd130,0.00083414838502,0.00053385523241 Cd131,0.000130891146001,8.377052344049999e-05 -Cd132,9.100050000000001e-08,5.82405e-08 +Cd132,9.100050000000001e-08,5.8241449999999996e-08 Cd133,4.270509395000001e-09,2.73312559e-09 Cd134,4.7736587300000006e-11,3.05514241e-11 -Cd136,1.6850100000000001e-15,1.0784050000000002e-15 -In107,0.0,0.0 -In109,0.0,0.0 -In111,0.0,0.0 -In112,0.0,0.0 -In112_m1,0.0,0.0 +Cd136,1.6850100000000001e-15,9.51078405e-13 +In107,0.0,1e-12 +In109,0.0,1e-12 +In111,0.0,1e-12 +In112,0.0,1e-12 +In112_m1,0.0,1e-12 In113,0.00015799364999999997,7.93364e-06 -In113_m1,0.0,0.0 -In114,1.035424e-14,6.6267344999999995e-15 -In114_m1,0.0,0.0 +In113_m1,0.0,1e-12 +In114,1.035424e-14,5.66267345e-14 +In114_m1,0.0,1e-12 In115,0.00013361005,4.9816895e-06 In115_m1,0.000127212,6.9439465e-06 In116_m2,2.44054885e-11,1.5619478449999998e-11 @@ -670,12 +670,12 @@ In118,0.00012934855,2.2206914999999997e-05 In118_m1,1.5963170949999996e-08,1.02163876e-08 In119,7.579239499999999e-05,1.9726344999999998e-05 In119_m1,6.9850275e-05,2.3642845e-05 -In120_m2,0.0,0.0 +In120_m2,0.0,1e-12 In120,6.9552275e-05,1.8126235e-05 In120_m1,6.9552275e-05,1.8126235e-05 In121,6.316207000000001e-05,4.0423664999999995e-05 In121_m1,7.648848000000001e-05,4.895256e-05 -In122_m2,0.0,0.0 +In122_m2,0.0,1e-12 In122,0.00015123565,8.8772885e-05 In122_m1,1.2894649999999999e-05,8.2525835e-06 In123,0.000130376,3.7089330000000006e-05 @@ -692,10 +692,10 @@ In128_m1,0.00014447385,9.246313499999999e-05 In128,0.0001782505,0.00011408019999999999 In129,0.00029535514999999996,0.00010530835 In129_m1,0.00027445109999999997,6.0092805e-05 -In130_m2,0.0,0.0 -In130_m1,0.0,0.0 +In130_m2,0.0,1e-12 +In130_m1,0.0,1e-12 In130,0.0009611747,0.0003195872 -In131_m1,0.0,0.0 +In131_m1,0.0,1e-12 In131,0.00024992749999999995,8.426624e-05 In132,9.151702e-05,2.1541532100000003e-05 In133,5.323411e-06,3.4069790000000002e-06 @@ -703,11 +703,11 @@ In134,2.78964125e-07,1.7853708e-07 In135,8.622176775e-09,5.518213155e-09 In136,1.36596886e-10,8.7421864e-11 In137,3.3376935e-12,2.1361255e-12 -Sn111,0.0,0.0 -Sn112,0.0,0.0 -Sn113_m1,0.0,0.0 -Sn113,0.0,0.0 -Sn114,1.016424e-14,6.505143999999999e-15 +Sn111,0.0,1e-12 +Sn112,0.0,1e-12 +Sn113_m1,0.0,1e-12 +Sn113,0.0,1e-12 +Sn114,1.016424e-14,5.6505144e-14 Sn115,0.00013831354999999999,3.7225889999999996e-06 Sn116,7.331137049999999e-11,4.69056502e-11 Sn117_m1,2.8748874999999995e-07,1.8399235e-07 @@ -743,19 +743,19 @@ Sn136,8.5814455e-07,5.492123500000001e-07 Sn137,2.0833785e-07,1.3333655e-07 Sn138,1.1362578150000003e-09,7.27206775e-10 Sn139,8.505026300000001e-12,5.4432232500000006e-12 -Sb113,0.0,0.0 -Sb115,0.0,0.0 -Sb117,0.0,0.0 -Sb118,0.0,0.0 -Sb118_m1,0.0,0.0 -Sb119,3.6952434999999994e-14,2.364949e-14 +Sb113,0.0,1e-12 +Sb115,0.0,1e-12 +Sb117,0.0,1e-12 +Sb118,0.0,1e-12 +Sb118_m1,0.0,1e-12 +Sb119,3.6952434999999994e-14,7.364949e-14 Sb120,8.586192049999999e-13,5.49516255e-13 Sb120_m1,1.23632951e-12,7.912495549999999e-13 Sb121,0.00014240155000000003,8.913357499999999e-06 Sb122,3.7357341e-09,2.39086905e-09 Sb122_m1,1.9827075499999997e-09,1.2689385299999998e-09 Sb123,0.0001710077,7.727478500000001e-06 -Sb124_m2,1.1494145e-08,7.3562775e-09 +Sb124_m2,1.1494145e-08,7.3563275e-09 Sb124,9.939449499999999e-08,6.361249e-08 Sb124_m1,1.4834165e-08,9.4938925e-09 Sb125,0.00034744835,1.0990185499999999e-05 @@ -782,13 +782,13 @@ Sb139,1.7030005e-07,1.0899190150000001e-07 Sb140,9.083136e-09,5.81321385e-09 Sb141,2.49517788e-09,1.5969152469999998e-09 Sb142,1.9143207000000003e-12,1.2251626e-12 -Te115,0.0,0.0 -Te117,0.0,0.0 -Te118,0.0,0.0 -Te119,0.0,0.0 -Te120,0.0,0.0 -Te121_m1,0.0,0.0 -Te121,0.0,0.0 +Te115,0.0,1e-12 +Te117,0.0,1e-12 +Te118,0.0,1e-12 +Te119,0.0,1e-12 +Te120,0.0,1e-12 +Te121_m1,0.0,1e-12 +Te121,0.0,1e-12 Te122,3.6308935499999995e-09,2.32377455e-09 Te123,2.12185302e-11,1.357988215e-11 Te123_m1,1.63665602e-11,1.04745681e-11 @@ -818,12 +818,12 @@ Te141,3.07923505e-06,1.9707095e-06 Te142,6.6013875e-08,4.2248945e-08 Te143,4.279046893e-09,2.73859261e-09 Te144,3.39420175e-12,2.1722907e-12 -I121,0.0,0.0 -I123,0.0,0.0 -I125,4.99003e-15,3.19362e-15 -I126,1.614886e-12,1.0335240000000001e-12 +I121,0.0,1e-12 +I123,0.0,1e-12 +I125,4.99003e-15,9.5319362e-13 +I126,1.614886e-12,1.083524e-12 I127,0.0015592245,4.4475725e-05 -I128,9.879335e-09,6.3227535e-09 +I128,9.879335e-09,6.3228035e-09 I129,0.005667475999999999,9.207181000000001e-05 I130,2.0138575020300147e-06,1.28886500129921e-06 I130_m1,6.32655350570005e-07,4.0489950036480244e-07 @@ -848,14 +848,14 @@ I144,6.570931999999999e-08,4.20539095e-08 I145,5.8580710635e-09,3.7491774795e-09 I146,3.8867920904999996e-10,2.487547944e-10 I147,5.3216795e-13,3.405871e-13 -Xe124,0.0,0.0 -Xe125_m1,0.0,0.0 -Xe125,0.0,0.0 -Xe126,7.1244965e-13,4.559677e-13 -Xe127_m1,0.0,0.0 -Xe127,0.0,0.0 -Xe128,9.2238445e-09,5.903262e-09 -Xe129_m1,0.0,0.0 +Xe124,0.0,1e-12 +Xe125_m1,0.0,1e-12 +Xe125,0.0,1e-12 +Xe126,7.1244965e-13,5.059677e-13 +Xe127_m1,0.0,1e-12 +Xe127,0.0,1e-12 +Xe128,9.2238445e-09,5.903312e-09 +Xe129_m1,0.0,1e-12 Xe129,0.005667475999999999,0.003627179 Xe130,2.108848002120015e-06,3.3741625135680995e-07 Xe131,0.029106965,0.00015376235 @@ -882,10 +882,10 @@ Xe146,5.6819635e-07,3.3142372000000003e-07 Xe147,2.5167085e-08,1.610693e-08 Xe148,9.2045424e-10,5.890925250000001e-10 Xe149,1.1945736350000002e-12,7.64527515e-13 -Xe150,1.44501e-13,9.24805e-14 -Cs127,0.0,0.0 -Cs129,0.0,0.0 -Cs131,2.412829e-14,1.5442155000000002e-14 +Xe150,1.44501e-13,1.0424805e-12 +Cs127,0.0,1e-12 +Cs129,0.0,1e-12 +Cs131,2.412829e-14,6.544215500000001e-14 Cs132,7.010648501e-10,4.4868177005e-10 Cs133,0.06702187,0.0002396472 Cs134_m1,3.6781436e-08,2.35401455e-08 @@ -911,10 +911,10 @@ Cs149,2.4699139000000003e-08,1.580748e-08 Cs150,2.42391867e-09,1.5513083449999999e-09 Cs151,4.34470455785e-10,2.7806107171e-10 Cs152,2.83893239e-13,1.8169171505e-13 -Ba129,0.0,0.0 -Ba131,0.0,0.0 -Ba132,1.5388955e-11,6.925006e-12 -Ba133,9.879335e-15,6.3227535e-15 +Ba129,0.0,1e-12 +Ba131,0.0,1e-12 +Ba132,1.5388955e-11,6.975006e-12 +Ba133,9.879335e-15,5.63227535e-14 Ba134,7.3562872e-08,4.601108000000001e-09 Ba135_m1,3.63439355e-10,2.3260145249999996e-10 Ba135,0.065604215,0.04198666499999999 @@ -938,9 +938,9 @@ Ba150,3.19538175e-06,2.0450441499999998e-06 Ba151,4.909232420000001e-07,3.1419087450000003e-07 Ba152,7.64158955e-09,4.890615635000001e-09 Ba153,3.7182066475000004e-10,2.3796516524999996e-10 -Ba154,3.555025e-12,2.275215e-12 -La133,0.0,0.0 -La135,0.0,0.0 +Ba154,3.555025e-12,3.2252150000000002e-12 +La133,0.0,1e-12 +La135,0.0,1e-12 La137,6.595284599999999e-11,4.220985549999999e-11 La138,3.0208790004999996e-07,1.2088777049999999e-08 La139,0.063762675,0.00045484389999999995 @@ -963,8 +963,8 @@ La154,1.4288790499999999e-08,9.144811730000001e-09 La155,3.810343241e-10,2.438619075e-10 La156,2.2610331078999998e-11,1.4470613895500002e-11 La157,4.4783958300000003e-14,2.8661743350000004e-14 -Ce135,0.0,0.0 -Ce137,0.0,0.0 +Ce135,0.0,1e-12 +Ce137,0.0,1e-12 Ce138,9.072128001499999e-08,3.6304363099999996e-09 Ce139,9.42073505e-12,6.029268529999999e-12 Ce139_m1,6.68312505e-12,4.27720002e-12 @@ -988,9 +988,9 @@ Ce156,2.7794462000000006e-08,1.7788459300000003e-08 Ce157,1.099365196e-09,7.035955205e-10 Ce158,2.4936912435e-11,1.595962789e-11 Ce159,1.24596171305e-12,7.974178962950001e-13 -Ce160,3.0300200000000003e-15,1.9392100000000002e-15 -Pr139,0.0,0.0 -Pr140,0.0,0.0 +Ce160,3.0300200000000003e-15,9.5193921e-13 +Pr139,0.0,1e-12 +Pr140,0.0,1e-12 Pr141,0.058214674999999994,0.0006088295499999999 Pr142_m1,2.2009630099999997e-11,1.4086186099999999e-11 Pr142,4.4019165249999995e-11,2.817227715e-11 @@ -1016,8 +1016,8 @@ Pr159,1.094640677e-09,7.005718310000001e-10 Pr160,2.8826988100000002e-11,1.8449244365000003e-11 Pr161,7.822527175200001e-13,5.006433391900001e-13 Pr162,8.351562589e-16,5.345000059999999e-16 -Nd140,0.0,0.0 -Nd141,0.0,0.0 +Nd140,0.0,1e-12 +Nd141,0.0,1e-12 Nd142,4.4019165249999995e-11,2.817227715e-11 Nd143,0.058890765,0.00021420669999999998 Nd144,0.054519899999999996,0.00019877865 @@ -1039,13 +1039,13 @@ Nd159,2.3631526500000002e-07,1.5124184e-07 Nd160,1.9329815800000003e-08,1.2371118150000001e-08 Nd161,8.758565820000001e-10,5.60550014e-10 Nd162,2.2183207625e-11,1.419725688e-11 -Nd163,7.80005e-13,4.99203e-13 -Nd164,1.9400100000000002e-14,1.24161e-14 -Pm141,0.0,0.0 -Pm143,0.0,0.0 -Pm144,0.0,0.0 -Pm145,0.0,0.0 -Pm146,4.274696e-12,2.73581e-12 +Nd163,7.80005e-13,1.449203e-12 +Nd164,1.9400100000000002e-14,9.624161e-13 +Pm141,0.0,1e-12 +Pm143,0.0,1e-12 +Pm144,0.0,1e-12 +Pm145,0.0,1e-12 +Pm146,4.274696e-12,2.78581e-12 Pm147,0.022640305,0.00022640304999999998 Pm148,4.6131272000000004e-11,2.95239915e-11 Pm148_m1,7.777459e-11,4.977569e-11 @@ -1068,13 +1068,13 @@ Pm161,6.91897055e-08,4.428134e-08 Pm162,4.67462544e-09,2.9917610550000003e-09 Pm163,5.317338765e-10,3.4030848400000007e-10 Pm164,3.7916018860000004e-11,2.426624204e-11 -Pm165,1.77001e-12,1.132805e-12 +Pm165,1.77001e-12,2.082805e-12 Pm166,7.258751968325001e-14,4.64560825969e-14 -Sm143,0.0,0.0 -Sm143_m1,0.0,0.0 -Sm144,0.0,0.0 -Sm145,0.0,0.0 -Sm146,1.5008955e-12,6.754025e-13 +Sm143,0.0,1e-12 +Sm143_m1,0.0,1e-12 +Sm144,0.0,1e-12 +Sm145,0.0,1e-12 +Sm146,1.5008955e-12,7.254024999999999e-13 Sm147,0.022640305,0.000158482 Sm148,1.20826455e-10,7.711334e-11 Sm149,0.01108813,0.00011088129999999999 @@ -1095,11 +1095,11 @@ Sm163,2.6161055000000003e-08,1.67430811e-08 Sm164,5.557425915e-09,3.556745635e-09 Sm165,7.27427329e-10,4.65553286e-10 Sm166,8.756158072500001e-11,5.6039591645e-11 -Sm167,6.60005e-12,4.2240250000000005e-12 -Sm168,3.18002e-13,2.0352149999999998e-13 -Sm170,0.0,0.0 -Eu147,0.0,0.0 -Eu149,0.0,0.0 +Sm167,6.60005e-12,5.174025e-12 +Sm168,3.18002e-13,1.1535215e-12 +Sm170,0.0,1e-12 +Eu147,0.0,1e-12 +Eu149,0.0,1e-12 Eu151,0.0043779875,4.3779875e-05 Eu152_m2,8.620028549999999e-13,5.516819029999999e-13 Eu152,1.293000005e-12,8.275219049999999e-13 @@ -1121,13 +1121,13 @@ Eu165,1.40705734e-08,9.005152900000001e-09 Eu166,4.1938682900000006e-09,2.684074755e-09 Eu167,1.017132848e-09,6.509668250000001e-10 Eu168,1.355280731e-10,8.6737826765e-11 -Eu169,1.18001e-11,7.552050000000002e-12 -Eu170,5.80005e-13,3.7120250000000005e-13 -Gd147,0.0,0.0 -Gd149,0.0,0.0 -Gd151,0.0,0.0 +Eu169,1.18001e-11,8.502050000000002e-12 +Eu170,5.80005e-13,1.3212025e-12 +Gd147,0.0,1e-12 +Gd149,0.0,1e-12 +Gd151,0.0,1e-12 Gd152,1.359555005e-12,8.70114255e-13 -Gd153,0.0,0.0 +Gd153,0.0,1e-12 Gd154,1.8469920249999999e-09,1.182074515e-09 Gd155,0.00037604714999999996,1.9994935e-05 Gd156,0.00017912024999999998,4.7112235e-06 @@ -1145,16 +1145,16 @@ Gd167,1.30515753e-08,8.35299385e-09 Gd168,4.8157385750000005e-09,3.08207345e-09 Gd169,1.086135424e-09,6.951284687e-10 Gd170,1.74526458195e-10,1.1169679326000001e-10 -Gd171,1.71001e-11,1.0944050000000002e-11 -Gd172,4.065025e-12,2.6016150000000003e-12 -Tb151,0.0,0.0 -Tb153,0.0,0.0 -Tb155,0.0,0.0 -Tb156,0.0,0.0 -Tb156_m1,0.0,0.0 -Tb157,4.6831674999999996e-14,2.997231e-14 +Gd171,1.71001e-11,1.1894050000000002e-11 +Gd172,4.065025e-12,3.551615e-12 +Tb151,0.0,1e-12 +Tb153,0.0,1e-12 +Tb155,0.0,1e-12 +Tb156,0.0,1e-12 +Tb156_m1,0.0,1e-12 +Tb157,4.6831674999999996e-14,7.997231e-14 Tb158,1.265819515e-12,8.1012221e-13 -Tb158_m1,1.2634145e-13,8.08583e-14 +Tb158_m1,1.2634145e-13,1.308583e-13 Tb159,1.3894365e-05,1.26461415e-06 Tb160,2.70726005e-10,1.73264455e-10 Tb161,1.417798e-06,4.942182e-08 @@ -1170,11 +1170,11 @@ Tb169,6.08985215e-09,3.897498395e-09 Tb170,2.202161848e-09,1.409383985e-09 Tb171,6.1528238005e-10,3.9378002365000005e-10 Tb172,3.84012474335e-10,2.457678835535e-10 -Dy155,0.0,0.0 -Dy156,0.0,0.0 -Dy157,0.0,0.0 -Dy158,2.0233575e-13,1.2949449999999998e-13 -Dy159,0.0,0.0 +Dy155,0.0,1e-12 +Dy156,0.0,1e-12 +Dy157,0.0,1e-12 +Dy158,2.0233575e-13,1.794945e-13 +Dy159,0.0,1e-12 Dy160,2.70726005e-10,1.73264455e-10 Dy161,1.417798e-06,4.942182e-08 Dy162,3.2104055e-07,1.0273308e-07 @@ -1189,16 +1189,16 @@ Dy169,8.65523575e-09,3.9338435000000004e-09 Dy170,4.9475523400000004e-09,3.1664342900000005e-09 Dy171,2.4856542400000003e-09,1.5908191155000003e-09 Dy172,3.6917158765e-09,2.362697164e-09 -Ho159,0.0,0.0 -Ho159_m1,0.0,0.0 -Ho161,0.0,0.0 -Ho161_m1,0.0,0.0 -Ho162,0.0,0.0 -Ho162_m1,0.0,0.0 -Ho163,0.0,0.0 -Ho163_m1,0.0,0.0 -Ho164,1.092424e-14,6.991506e-15 -Ho164_m1,0.0,0.0 +Ho159,0.0,1e-12 +Ho159_m1,0.0,1e-12 +Ho161,0.0,1e-12 +Ho161_m1,0.0,1e-12 +Ho162,0.0,1e-12 +Ho162_m1,0.0,1e-12 +Ho163,0.0,1e-12 +Ho163_m1,0.0,1e-12 +Ho164,1.092424e-14,5.6991506e-14 +Ho164_m1,0.0,1e-12 Ho165,4.73436135e-08,1.1702921e-08 Ho166,3.1798453e-08,1.3861044e-08 Ho166_m1,9.8238685e-13,6.287276499999999e-13 @@ -1209,11 +1209,11 @@ Ho170,5.042322055000001e-09,2.26903742e-09 Ho170_m1,1.0018366750000001e-10,6.4117731e-11 Ho171,2.8708235750000005e-09,1.2958242499999999e-09 Ho172,5.2552461295e-09,2.3658405225000004e-09 -Er161,0.0,0.0 -Er162,0.0,0.0 -Er163,0.0,0.0 -Er164,0.0,0.0 -Er165,0.0,0.0 +Er161,0.0,1e-12 +Er162,0.0,1e-12 +Er163,0.0,1e-12 +Er164,0.0,1e-12 +Er165,0.0,1e-12 Er166,3.1798453e-08,1.0175493999999999e-08 Er167,2.40964885e-08,4.2308468e-09 Er167_m1,2.4096488500000003e-09,6.058399e-10 @@ -1222,30 +1222,30 @@ Er169,8.726133849999999e-09,3.9267624e-09 Er170,5.147641675e-09,1.6472393550000001e-09 Er171,2.8823433850000003e-09,9.252505849999999e-10 Er172,5.357345487000001e-09,1.715292972e-09 -Tm165,0.0,0.0 -Tm166,0.0,0.0 -Tm167,0.0,0.0 -Tm168,0.0,0.0 +Tm165,0.0,1e-12 +Tm166,0.0,1e-12 +Tm167,0.0,1e-12 +Tm168,0.0,1e-12 Tm169,8.726133849999999e-09,2.7923618700000003e-09 -Tm170,0.0,0.0 +Tm170,0.0,1e-12 Tm171,2.8823433850000003e-09,9.252505849999999e-10 Tm172,5.357354987000001e-09,1.715297247e-09 -Yb166,0.0,0.0 -Yb167,0.0,0.0 -Yb168,0.0,0.0 -Yb169,0.0,0.0 -Yb169_m1,0.0,0.0 -Yb170,0.0,0.0 +Yb166,0.0,1e-12 +Yb167,0.0,1e-12 +Yb168,0.0,1e-12 +Yb169,0.0,1e-12 +Yb169_m1,0.0,1e-12 +Yb170,0.0,1e-12 Yb171,2.8823433850000003e-09,9.223484965e-10 Yb172,5.357354987000001e-09,1.7143475985e-09 -Lu169,0.0,0.0 -Lu169_m1,0.0,0.0 -Lu171,0.0,0.0 -Lu171_m1,0.0,0.0 -Lu172,0.0,0.0 -Lu172_m1,0.0,0.0 -Hf171,0.0,0.0 -Hf172,0.0,0.0 +Lu169,0.0,1e-12 +Lu169_m1,0.0,1e-12 +Lu171,0.0,1e-12 +Lu171_m1,0.0,1e-12 +Lu172,0.0,1e-12 +Lu172_m1,0.0,1e-12 +Hf171,0.0,1e-12 +Hf172,0.0,1e-12 Ti66,3.9935100000000005e-20,2.5558450000000004e-20 V67,1.37673e-17,8.81105e-18 V68,8.443000000000001e-19,5.4035e-19 @@ -1267,7 +1267,7 @@ Br100,6.897600000000001e-15,4.414475e-15 Kr102,1.4654550000000002e-13,9.3789e-14 Rb104,3.8068799999999997e-13,2.436405e-13 Rb105,8.476600000000001e-14,5.425050000000001e-14 -Sr109,0.0,0.0 +Sr109,0.0,5e-14 Y111,6.9473499999999996e-15,4.4463e-15 Zr113,3.92778e-15,2.51378e-15 Zr114,1.9290300000000002e-16,1.23458e-16 @@ -1278,8 +1278,8 @@ Tc120,3.561885e-15,2.279605e-15 Tc121,2.4980800000000003e-16,1.59877e-16 Ru123,6.805200000000001e-16,4.35533e-16 Rh125,4.2282349999999996e-15,2.7060700000000002e-15 -Rh127,0.0,0.0 -Pd131,0.0,0.0 +Rh127,0.0,5e-14 +Pd131,0.0,5e-14 Ag132,3.4299600000000005e-12,2.1951750000000003e-12 Ag133,1.7271750000000002e-13,1.1053950000000002e-13 Cd135,4.44323e-13,2.8436650000000003e-13 diff --git a/tests/integration/test-data/reference/test5/group_parameters.csv b/tests/integration/test-data/reference/test5/group_parameters.csv index 39b6ddb7..f63270bf 100644 --- a/tests/integration/test-data/reference/test5/group_parameters.csv +++ b/tests/integration/test-data/reference/test5/group_parameters.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0005094944668938952,2.335413144236929e-05,55.636293260623944,0.14090363894702096 -0.002524804042662093,0.0001752310679797657,24.478359133593315,0.23907065400608057 -0.0013912695155729915,8.320146837680298e-05,15.688089235513093,1.363619521479378 -0.003461425878871525,0.0017452870402273127,5.056098044378577,0.7297870122325777 -0.007400120450016365,0.0012983398187285018,1.9378344238129352,0.7389130468837333 -0.008370766512769943,0.001275681868878413,0.027906714637617423,2.6767239500030275e-05 +0.0005104407652184309,2.3758094644940694e-05,55.64057421591335,0.14180028468080186 +0.0024601911130200187,8.855109511061982e-05,24.557193990666274,0.0953915723633562 +0.0013774883631744637,6.731152459336245e-05,16.382607338259344,0.07040892694674532 +0.0023903122696216795,0.0001010722796706357,5.6001146511530875,0.03538848690892755 +0.005886946586627317,0.0006924416149521448,2.573520432122342,0.05179238164600114 +0.011098484175465722,0.001288243714968465,0.9763591354276622,0.03440441581274391 diff --git a/tests/integration/test-data/reference/test5/half_life.csv b/tests/integration/test-data/reference/test5/half_life.csv index 7c78015b..787e5dc2 100644 --- a/tests/integration/test-data/reference/test5/half_life.csv +++ b/tests/integration/test-data/reference/test5/half_life.csv @@ -29,7 +29,8 @@ F22,4.23,0.04,0.055,0.055 F23,2.23,0.14,0.07,0.07 F24,0.382,0.016,0.029500000000000002,0.029500000000000002 F25,0.075,0.01,0.195,0.05 -F26,0.0022,0.0001,0.021599999999999998,0.019534584715319648 +F26,0.0082,0.0009,0.135,0.04 +F26_m1,0.0022,0.0001,0.021599999999999998,0.019534584715319648 F27,0.0057,0.0008,0.8,0.2 F29,0.00267,0.00021,0.6,0.4 Ne26,0.195,0.002,0.0013,0.0003 @@ -96,7 +97,7 @@ Ca52,4.6,0.3,0.01,0.01 Ca53,0.461,0.09,0.4,0.1 Sc54,0.526,0.015,0.16,0.09 Sc55,0.096,0.002,0.17,0.07 -Sc56,0.069,0.007,0.24,0.12 +Sc56_m1,0.069,0.007,0.24,0.12 V59,0.092,0.009,0.06,0.03 V61,0.0483,0.001,0.2,0.1 V63,0.0196,0.001,0.67,0.33 @@ -106,10 +107,12 @@ Mn66,0.0639,0.0011,0.05,0.013999999999999999 Mn68,0.0352,0.002,0.15,0.09 Mn69,0.0258,0.0028,0.4,0.2 Mn70,0.0199,0.0017,0.5,0.2 -Co68,1.6,0.3,0.06,0.03 -Co70,0.508,0.007,0.03,0.015 +Co68_m1,1.6,0.3,0.06,0.03 +Co70,0.113,0.007,0.03,0.015 +Co70_m1,0.508,0.007,0.03,0.015 Co71,0.08,0.003,0.188,0.08121576201698781 -Co72,0.0478,0.0005,0.074,0.03059411708155671 +Co72,0.0515,0.0003,0.074,0.03059411708155671 +Co72_m1,0.0478,0.0005,0.074,0.03059411708155671 Co73,0.0407,0.0013,0.26,0.09848857801796104 Co74,0.0314,0.0015,0.22999999999999998,0.1522366578718805 Co75,0.0265,0.0012,0.08,0.08 @@ -132,7 +135,8 @@ Zn82,0.1779,0.0025,0.69,0.07 Zn83,0.0997,0.003,0.71,0.29 Zn84,0.0536,0.0081,0.73,0.26 Ga79,2.852,0.01,0.00084,0.00029 -Ga80,1.3,0.2,0.0045000000000000005,0.0007000000000000001 +Ga80,1.9,0.1,0.0045000000000000005,0.0007000000000000001 +Ga80_m1,1.3,0.2,0.0045000000000000005,0.0007000000000000001 Ga81,1.217,0.004,0.125,0.008 Ga82,0.601,0.002,0.22699999999999998,0.02 Ga83,0.31,0.001,0.67,0.06 @@ -173,7 +177,8 @@ Rb94,2.704,0.015,0.1039,0.0022 Rb95,0.378,0.002,0.08800000000000001,0.004 Rb96,0.2016,0.001,0.141,0.008 Rb97,0.169,0.001,0.249,0.015 -Rb98,0.096,0.003,0.07204,0.009001088823025803 +Rb98,0.115,0.006,0.07204,0.009001088823025803 +Rb98_m1,0.096,0.003,0.07204,0.009001088823025803 Rb99,0.0578,0.0009,0.191,0.023 Rb100,0.051,0.002,0.059,0.012041594578792296 Rb101,0.0315,0.0045,0.28,0.05 @@ -184,11 +189,15 @@ Sr99,0.269,0.002,0.00096,0.00016 Sr100,0.2007,0.0013,0.0111,0.0021 Sr101,0.115,0.001,0.0252,0.0025 Sr102,0.072,0.008,0.055,0.02 -Y97,1.17,0.03,0.0003972,0.0003972 -Y98,2.32,0.08,0.03096,0.009216078341680914 +Y97,3.74,0.05,0.00057594,9.93e-05 +Y97_m1,1.17,0.03,0.0003972,0.0003972 +Y98,0.548,0.002,0.0033,0.0003 +Y98_m1,2.32,0.08,0.03096,0.009216078341680914 Y99,1.478,0.007,0.0197,0.003 -Y100,0.94,0.03,0.0051,0.0006 +Y100,0.732,0.005,0.0051,0.0006 +Y100_m1,0.94,0.03,0.0051,0.0006 Y101,0.432,0.012,0.019799999999999998,0.002 +Y102_m1,0.396,0.036,0.06,0.017 Y102,0.3,0.01,0.04,0.015 Y103,0.236,0.016,0.081,0.02 Y104,0.212,0.02,0.34,0.1 @@ -198,13 +207,15 @@ Zr104,0.92,0.028,0.005,0.005 Zr105,0.666,0.028,0.01,0.01 Zr106,0.175,0.007,0.035,0.035 Zr107,0.15,0.003,0.115,0.115 -Nb104,0.98,0.07,0.0005,0.0003 +Nb104,4.9,0.4,0.0006,0.0003 +Nb104_m1,0.98,0.07,0.0005,0.0003 Nb105,2.91,0.07,0.017,0.009000000000000001 Nb106,1.084,0.021,0.045,0.003 Nb107,0.287,0.011,0.07400000000000001,0.01 Nb108,0.192,0.006,0.063,0.005 Nb109,0.113,0.011,0.31,0.05 -Nb110,0.094,0.009,0.2,0.08 +Nb110,0.075,0.001,0.2,0.08 +Nb110_m1,0.094,0.009,0.2,0.08 Mo109,0.692,0.026,0.013000000000000001,0.006 Mo110,0.287,0.01,0.02,0.006999999999999999 Mo111,0.186,0.009,0.06,0.06 @@ -213,7 +224,8 @@ Tc110,0.911,0.014,0.0004,0.0002 Tc111,0.294,0.02,0.0085,0.002 Tc112,0.305,0.01,0.017,0.004 Tc113,0.152,0.008,0.021,0.003 -Tc114,0.1,0.02,0.006500000000000001,0.004 +Tc114,0.09,0.02,0.006500000000000001,0.004 +Tc114_m1,0.1,0.02,0.006500000000000001,0.004 Tc115,0.078,0.002,0.19,0.05 Tc116,0.057,0.003,0.17,0.07 Ru116,0.203,0.006,0.004,0.004 @@ -222,7 +234,8 @@ Ru118,0.099,0.003,0.023,0.023 Ru119,0.0692,0.002,0.06,0.05 Ru120,0.045,0.002,0.06,0.03 Ru121,0.03,0.003,0.13,0.04 -Rh116,0.57,0.05,0.00525,0.00525 +Rh116,0.69,0.05,0.00525,0.00525 +Rh116_m1,0.57,0.05,0.00525,0.00525 Rh117,0.42,0.04,0.038,0.038 Rh118,0.286,0.01,0.021,0.009000000000000001 Rh119,0.189,0.006,0.034,0.009000000000000001 @@ -239,36 +252,49 @@ Pd125,0.0641,0.0017,0.037000000000000005,0.004 Pd126,0.0488,0.0008,0.049,0.009000000000000001 Pd127,0.038,0.002,0.09,0.03 Pd128,0.036,0.005,0.1,0.07 -Ag120,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 +Ag120,0.94,0.1,5e-06,5e-06 +Ag120_m1,1.52,0.07,5e-06,5e-06 +Ag120_m2,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 Ag121,0.777,0.012,0.0008,0.00013 -Ag122,0.2,0.05,0.0009299999999999999,6e-05 +Ag122,0.529,0.019,0.0009281399999999999,5.988e-05 +Ag122_m1,0.2,0.05,0.0009299999999999999,6e-05 Ag123,0.3,0.008,0.0085,0.0015 -Ag124,0.144,0.02,0.006500000000000001,0.009000000000000001 -Ag125,0.159,0.021,0.046,0.01 -Ag126,0.1026,0.0014,0.038,0.002 +Ag124,0.191,0.028,0.0115,0.011000000000000001 +Ag124_m1,0.144,0.02,0.006500000000000001,0.009000000000000001 +Ag125,0.176,0.003,0.012,0.002 +Ag125_m1,0.159,0.021,0.046,0.01 +Ag126_m1,0.1026,0.0014,0.038,0.002 Ag127,0.0891,0.0009,0.055,0.002 Ag128,0.0659,0.0024,0.09300000000000001,0.005 Ag129,0.052,0.003,0.179,0.013999999999999999 -Cd127,0.36,0.04,0.006,0.006 +Cd127_m1,0.36,0.04,0.006,0.006 Cd128,0.2461,0.0021,0.0095,0.0095 Cd129,0.151,0.004,0.0184,0.0015 Cd130,0.1287,0.0023,0.03,0.002 Cd131,0.083,0.015,0.035,0.01 Cd132,0.084,0.005,0.6,0.15 -In127,3.618,0.032,0.006999999999999999,0.0006 -In128,0.72,0.1,0.00019199999999999998,3.6e-05 -In129,1.165,0.01,0.035393499999999994,0.0061814 -In130,0.535,0.006,0.00975,0.0015 -In131,0.32,0.06,0.11879999999999999,0.0693 +In127,1.087,0.011,0.00015,0.00015 +In127_m1,3.618,0.032,0.006999999999999999,0.0006 +In128,0.84,0.06,0.00019199999999999998,3.6e-05 +In128_m1,0.72,0.1,0.00019199999999999998,3.6e-05 +In129,0.607,0.006,0.0023,0.001 +In129_m1,1.165,0.01,0.035393499999999994,0.0061814 +In130,0.275,0.008,0.012,0.0029 +In130_m1,0.535,0.006,0.00975,0.0015 +In130_m2,0.535,0.006,0.00975,0.0015 +In131,0.266,0.008,0.011049999999999999,0.0027 +In131_m1,0.33,0.015,0.011049999999999999,0.0027 +In131_m2,0.32,0.06,0.11879999999999999,0.0693 In132,0.2013,0.0012,0.12300000000000001,0.004 -In133,0.167,0.011,0.93,0.03 +In133,0.162,0.002,0.9,0.03 +In133_m1,0.167,0.011,0.93,0.03 In134,0.121,0.006,1.07,0.05 Sn133,1.42,0.06,0.000294,2.3999999999999997e-05 Sn134,0.902,0.028,0.17,0.13 Sn135,0.516,0.005,0.21,0.03 Sn136,0.361,0.005,0.27,0.04 Sn137,0.221,0.017,0.5,0.1 -Sb134,9.97,0.1,0.0008799999999999999,3.6e-05 +Sb134_m1,9.97,0.1,0.0008799999999999999,3.6e-05 Sb135,1.668,0.01,0.2,0.028999999999999998 Sb136,0.924,0.014,0.2518,0.07300246571178264 Sb137,0.506,0.025,0.49,0.08 diff --git a/tests/integration/test-data/reference/test6/concentrations.csv b/tests/integration/test-data/reference/test6/concentrations.csv index 54ed3e2b..94d4f14d 100644 --- a/tests/integration/test-data/reference/test6/concentrations.csv +++ b/tests/integration/test-data/reference/test6/concentrations.csv @@ -1,206 +1,214 @@ Time,Nuclide,Concentration,sigma Concentration -0,Rb96,0.0005998289709035946,9.60190357301698e-05 +0,Ru118,9.882915334757776e-11,6.332156997131108e-11 +0,Rh120,4.585568533125004e-09,2.9398203427116496e-09 +0,In129,0.0002411642746133097,7.720927188606783e-05 +0,Zn80,1.9616360206523397e-06,1.2554897647675713e-06 +0,Pd122,1.3418271416016584e-08,8.594576388683844e-09 +0,Ba149,5.245514519820738e-06,3.3583085939943576e-06 +0,Rb98,6.621000746612865e-06,1.1142595672689705e-06 0,Nb106,0.00024613773349287284,0.00015760036403363796 -0,Rh122,2.1502581872957674e-13,1.3775448856729138e-13 +0,Tc116,5.188571202287346e-12,3.33189373879173e-12 +0,Sr97,0.010825338990686512,0.0003283204528299923 +0,Rh123,5.186758167429462e-15,3.3268857670945786e-15 +0,Rb97,9.25701478698446e-05,7.425855902497594e-06 +0,Br92,0.00012920164217887197,8.286628407432986e-05 +0,Y103,8.80069250959384e-06,5.663941391674421e-06 +0,Br90,0.015556537893278584,0.0006275631584751316 0,Nb108,2.4927997522895045e-07,1.597292453833168e-07 -0,Mn70,0.0,2.870963131369037e-14 -0,Zn79,1.7638454202646298e-05,7.999205611027386e-06 -0,Ge85,1.527860863755489e-05,9.78002035436031e-06 -0,Kr92,0.044467575090041615,0.001259998817673887 -0,La147,0.05224684551229745,0.0031486626661039892 -0,Mo110,1.6155207312470014e-05,1.0354640857644093e-05 -0,Zn82,2.771673511602564e-08,1.7743042631341e-08 -0,As87,0.00036818294751460675,0.00016780772408679878 -0,Y104,1.7371133198973867e-06,1.1237647247038152e-06 -0,Ge86,0.002013586463516308,0.0003789648516608505 -0,Sr99,0.0005169485789591427,5.6993893381608066e-05 -0,Zr103,0.00998354374666829,0.0064106532710834965 -0,Pd124,3.7019863485949556e-10,2.372217458008428e-10 -0,Nb107,9.580534966088189e-06,6.1425376124136135e-06 -0,Sb136,0.0001533567631540081,9.817572253638816e-05 -0,Sn137,5.9299277487929266e-08,3.822478353005186e-08 -0,Rh116,7.342943955839729e-06,4.743423204284631e-06 -0,Mn68,3.3819001587892504e-14,2.172929302971174e-14 -0,Te138,0.0013948422602238168,0.0005410098079239355 -0,I138,0.13404600986033238,0.003811708516476155 -0,I141,0.00024669366737070913,5.693382583511221e-05 -0,Xe147,2.289407999493061e-09,1.5088309069326803e-09 -0,Ag126,7.030471012034299e-13,4.500535249185536e-13 -0,Sb134,0.05360879946158333,0.0343138678378911 -0,Zr107,3.370950738214721e-10,2.1584586093241427e-10 -0,Tc113,3.069835757365499e-07,1.9713293914484466e-07 -0,In129,0.0004628605929563522,0.00014816846519357025 -0,Pd127,0.0,5.482241155378061e-14 +0,Kr93,0.009051352289901457,0.0003718046752566228 +0,Ru116,7.204032621132696e-08,4.615491475404942e-08 0,Br93,6.768988941439157e-06,2.1951797327269033e-06 -0,Ba147,0.0031712591230974472,0.0005080076448353924 -0,Kr98,1.012971587697711e-06,6.551183033331164e-07 -0,Rh117,2.8295020956669455e-06,1.830822599340433e-06 -0,Pd126,0.0,7.040351799538143e-14 -0,Ru121,1.6362585491349538e-16,1.0599123408046919e-16 -0,Se91,2.5940711445258455e-06,1.7283089409662936e-06 -0,Ag123,1.1944649321536084e-06,7.651243199062325e-07 -0,Cd129,1.5771008245563515e-09,1.0102079748368665e-09 -0,Ga86,2.328000293814147e-08,1.4929205834025092e-08 -0,Nb109,7.88983343419521e-07,5.107565439201369e-07 -0,Tc109,0.0003779180199339289,9.186295043159631e-05 -0,Ag125,3.807574024708529e-12,2.4881890661534225e-12 -0,Rb101,7.15847966948613e-10,4.694182463942883e-10 -0,As85,0.006385923241329832,0.004087052942348632 -0,Rb92,0.31261087987828934,0.004591801077109555 -0,Co70,1.5609438086813782e-09,9.99232630474435e-10 -0,Tc114,1.0112570889111191e-08,6.7807031241818635e-09 -0,Se87,0.06198078879191884,0.0028070515574276046 -0,Sb135,0.0035076872390015163,0.00021150877058781378 -0,Cs142,0.06613169119864251,0.0019313045989540058 -0,Mn66,6.655518826857629e-13,4.2610692861297763e-13 -0,Sr101,7.445506733261071e-06,3.351110148160393e-06 +0,Pd127,0.0,5.482241155378061e-14 +0,In131_m1,0.0,4.76089363493358e-13 +0,Ni77,1.2908117714295773e-10,8.268083626174672e-11 +0,Rb99,3.898828698714275e-08,2.4959924310476514e-08 +0,Zn81,0.0,4.3136581722580003e-13 0,Mn69,2.988676861278588e-15,1.940060866943332e-15 -0,Co74,1.3589235972064074e-12,8.721279555371717e-13 -0,Rb100,2.557736004304032e-05,1.640021183690587e-05 -0,Rh124,4.725950839695729e-16,3.0442189859384615e-16 -0,Ag121,2.9423438877042655e-05,6.782638152263887e-06 -0,I140,0.0013079556917011714,0.0003029140120803763 -0,Rh121,1.5164557102444936e-11,9.714194661189905e-12 -0,Cs148,2.8554887987874132e-08,1.8276504773916464e-08 -0,Rh118,1.501795966563806e-07,9.625853820899038e-08 -0,Y98,0.06419211568321742,0.0149291923282918 -0,Ga79,0.0007705636248401479,8.480476119112005e-05 -0,Kr99,6.552893999122579e-13,4.624243150718014e-13 -0,Xe144,3.3869014054179956e-05,3.775369310902681e-06 -0,Sr100,0.00012425701267431091,2.859041499022604e-05 -0,Sn133,0.0028248721987417244,0.0012767870447695595 -0,Zr106,4.2412204542549655e-09,2.7196693857483876e-09 -0,Cd130,0.00016303143224028022,0.00010438083870996553 -0,Ag120,2.1018647133831962e-05,1.3662336929607712e-05 +0,Te138,0.0013948422602238168,0.0005410098079239355 +0,Ba148,0.00019758856681687895,8.910159835759076e-05 +0,Sb139,3.675724393687637e-09,2.359478012807112e-09 +0,Cu74,1.678233042887488e-06,1.074168946877656e-06 +0,Ru121,1.6362585491349538e-16,1.0599123408046919e-16 +0,Zn84,9.433375455293384e-10,6.203402346027477e-10 +0,Te137,0.016350387504778824,0.001828029250813492 +0,Sb136,0.0001533567631540081,9.817572253638816e-05 0,Br87,1.6331327541223424,0.032958134523881084 0,Cu79,0.0,3.4812231336650684e-13 -0,Ag124,1.1466884123483229e-06,7.509627574847691e-07 -0,Ga82,5.4386841146127635e-05,3.4808062741337526e-05 -0,Zn80,1.9616360206523397e-06,1.2554897647675713e-06 -0,Xe143,0.00019529177611405312,0.0001250080938850028 -0,Pd125,0.0,9.247675212098255e-14 -0,Ag129,2.189537868096035e-18,1.4069906858119795e-18 -0,Cs147,7.416507336648418e-06,4.746672053405954e-06 -0,Pd123,6.389103676974422e-10,4.092669531901521e-10 -0,Tc115,1.0150427784062133e-10,6.501479533916107e-11 -0,As84,0.007415485980694222,0.0047472147850452905 -0,Br94,1.6762904511295412e-07,7.191125971061841e-08 +0,I139,0.02557676017044232,0.002049857621947831 +0,In131,9.554471814557506e-05,3.0709108139557144e-05 0,Cu75,1.8010522945379495e-06,1.1526798021694858e-06 -0,La150,7.70083634429264e-05,4.93776268968215e-05 -0,Rb94,0.06431500790926845,0.0018358230135221282 -0,Y97,0.08253230281307128,0.019099980682559855 -0,Rb95,0.004200951430903458,0.00016950163109824418 -0,Pd121,1.978806721671978e-07,1.2664551859840523e-07 -0,Cd127,4.235162866317281e-05,1.9630598446159934e-05 0,Pd128,6.959093444055111e-16,4.557472389983377e-16 -0,Co71,1.719565531576046e-10,1.102413410025453e-10 -0,Br90,0.015556537893278584,0.0006275631584751316 -0,Kr95,1.1824355389253705e-05,3.7965721162070583e-06 -0,Te137,0.016350387504778824,0.001828029250813492 -0,Ga84,1.5201571463491998e-05,9.737208773645019e-06 -0,Mo109,0.0001598440145287702,0.00010247654411355591 -0,In133,4.119615112180419e-07,2.6504728748060725e-07 +0,Xe144,3.3869014054179956e-05,3.775369310902681e-06 +0,Cs147,7.416507336648418e-06,4.746672053405954e-06 +0,Mn68,3.3819001587892504e-14,2.172929302971174e-14 +0,Sr100,0.00012425701267431091,2.859041499022604e-05 +0,Sn136,8.176189789045641e-08,5.2339887724948564e-08 +0,Y99,0.044402230382207114,0.0026724292968112414 +0,Nb105,0.010629530360417892,0.0034110466375031484 0,Ag128,1.1883344736894085e-14,7.617649842678533e-15 +0,Tc109,0.0003779180199339289,9.186295043159631e-05 +0,Cd128,1.2613941158841451e-05,8.073639866420827e-06 +0,Co70,3.4721781571062156e-10,2.2325727949701488e-10 +0,Ru119,6.538700303647901e-13,4.189027501084252e-13 +0,Ga84,1.5201571463491998e-05,9.737208773645019e-06 0,Xe145,1.9418446150392954e-07,6.227631601427726e-08 -0,Zr104,0.0011063551025057934,0.00012627129570491643 -0,Zn84,9.433375455293384e-10,6.203402346027477e-10 -0,Cu80,8.580905984779687e-11,5.5131237394039296e-11 -0,Y101,0.0017606027034751245,0.0001490972190826355 -0,Sb139,3.675724393687637e-09,2.359478012807112e-09 +0,Ni75,7.323372528038435e-09,4.687497256084892e-09 +0,Ga82,5.4386841146127635e-05,3.4808062741337526e-05 +0,Ag120_m1,9.59324222400834e-06,6.155546140776539e-06 +0,In127_m1,0.0005393120313899491,0.00012413297991479915 +0,Kr94,0.0002647804306896804,2.9793987783497966e-05 0,Mo111,6.117751783357747e-07,3.9265418991206275e-07 -0,Cs150,2.3253165347912836e-12,1.4906920128710036e-12 -0,Ag127,2.0308558261217075e-13,1.2999101148150208e-13 -0,Ga81,0.00014357585833300998,2.2977032942259093e-05 -0,Y105,7.107896400905744e-13,4.577030395959752e-13 -0,Ni77,1.2908117714295773e-10,8.268083626174672e-11 -0,Ru118,9.882915334757776e-11,6.332156997131108e-11 -0,Rh123,5.186758167429462e-15,3.3268857670945786e-15 +0,In128,0.00020233036205486124,0.00013029527392071437 +0,Ag125,4.21467313426856e-12,2.6983392036687725e-12 +0,As84,0.007415485980694222,0.0047472147850452905 +0,Mn70,0.0,2.870963131369037e-14 +0,In130_m2,0.0,7.718418468755954e-13 0,Sb138,1.8208973150267984e-07,1.1660460112931494e-07 -0,Xe146,2.232567401846581e-08,7.202855715920332e-09 -0,Sb137,0.0005427555540168058,0.00034839703725773376 -0,Pd122,1.3418271416016584e-08,8.594576388683844e-09 -0,Cu76,7.654700644838209e-07,4.89994935053447e-07 -0,Br91,0.0017596350590572997,0.0001962442049170239 -0,Cs143,0.03766809161498418,0.0010714815354650887 -0,Ba149,5.245514519820738e-06,3.3583085939943576e-06 -0,Kr93,0.009051352289901457,0.0003718046752566228 +0,As86,0.007530853109411963,0.0012075744991579226 +0,Ga80,0.0003275145688634407,7.727529244304402e-05 +0,Ga87,1.0631661220993284e-11,6.960492428554583e-12 0,Zn83,9.0898318953129e-11,5.823915799112472e-11 -0,Tc112,3.057937202150519e-06,1.9596478498852118e-06 -0,Cs144,0.0060419349417490924,0.00036380099713599243 +0,Pd123,6.389103676974422e-10,4.092669531901521e-10 +0,Ag122,2.587016279214196e-06,1.658298376457878e-06 +0,Pd125,0.0,9.247675212098255e-14 +0,Te136,0.34132057899864665,0.02736098317676223 +0,Cs150,2.3253165347912836e-12,1.4906920128710036e-12 +0,In127,0.0007095646203201498,0.00011375721836032524 +0,Co74,1.3589235972064074e-12,8.721279555371717e-13 +0,Cd130,0.00016303143224028022,0.00010438083870996553 +0,Ni76,1.6996561308209975e-09,1.087953610902291e-09 0,Xe141,0.0312115738284086,0.000904920600997788 -0,Ag122,9.780779883607547e-07,6.720337910535373e-07 -0,Ge84,0.00041289760100993265,9.508611509510198e-05 -0,Cu81,0.0,1.0560527699307212e-13 -0,Sr97,0.010825338990686512,0.0003283204528299923 -0,Rb99,3.898828698714275e-08,2.4959924310476514e-08 -0,Cu73,3.2839207369511107e-06,2.1049750159570336e-06 -0,Y99,0.044402230382207114,0.0026724292968112414 -0,Ru117,5.525704363257898e-09,3.5381434304186313e-09 -0,Cd128,1.2613941158841451e-05,8.073639866420827e-06 -0,Cd132,0.0,1.2118638343467292e-13 -0,Co72,4.006341074281898e-11,2.564402389220645e-11 -0,In134,6.057007252930621e-09,3.888102593770287e-09 -0,Cs141,1.498027332609485,0.021280522601805508 -0,Rh119,5.0712956765695156e-09,3.249628389303291e-09 -0,Cs145,0.0006355274411476929,5.126256105963185e-05 -0,Sr102,1.7968962940797598e-07,8.328864542350935e-08 -0,Y103,8.80069250959384e-06,5.663941391674421e-06 -0,Ga80,0.00022408891553814367,6.200763732222771e-05 -0,Tc111,2.0014349317259084e-05,1.2881345102134617e-05 +0,Ga86,2.328000293814147e-08,1.4929205834025092e-08 +0,Y97_m1,0.0,1.6879531978400872e-12 +0,Tc114,9.101313800200071e-09,6.165982023904878e-09 +0,Br91,0.0017596350590572997,0.0001962442049170239 +0,Pd121,1.978806721671978e-07,1.2664551859840523e-07 +0,Br88,0.4182350835876028,0.011889346056616085 0,Kr97,2.660675310704095e-08,1.7114385893024584e-08 -0,In130,0.0007504240074666446,0.00024028286640694947 -0,As86,0.007530853109411963,0.0012075744991579226 +0,Nb109,7.88983343419521e-07,5.107565439201369e-07 +0,Mn66,6.655518826857629e-13,4.2610692861297763e-13 +0,Rh117,2.8295020956669455e-06,1.830822599340433e-06 +0,Zn82,2.771673511602564e-08,1.7743042631341e-08 +0,Br94,1.6762904511295412e-07,7.191125971061841e-08 +0,Ag121,2.9423438877042655e-05,6.782638152263887e-06 +0,Rb95,0.004200951430903458,0.00016950163109824418 +0,In130,0.0003857319664548173,0.000123943112120239 +0,Cs145,0.0006355274411476929,5.126256105963185e-05 +0,Sb137,0.0005427555540168058,0.00034839703725773376 +0,Cu76,7.654700644838209e-07,4.89994935053447e-07 +0,Cs142,0.06613169119864251,0.0019313045989540058 0,Cd131,1.6498285386895556e-05,1.0971826457656248e-05 -0,Co68,6.601310844694813e-09,4.402412939441261e-09 -0,Cu78,5.215724367629224e-08,3.3382222599188465e-08 -0,Y100,0.008276549571139545,0.005303570994417014 -0,Y102,0.001160584681813372,0.0007437797558208365 -0,Kr96,4.364244831171731e-05,2.8190989520563313e-05 -0,Rb93,0.2996834306275237,0.003367920311208731 -0,Ga87,1.0631661220993284e-11,6.960492428554583e-12 -0,Xe142,0.007743331503800041,0.00048157458817324694 -0,Rb98,5.527096275433348e-06,9.01044628678096e-07 -0,Co73,1.2975669601273333e-11,8.314778500833574e-12 -0,Se88,0.008544502042431373,0.001408648123210138 -0,Se89,0.0003091571977929548,5.416431830684488e-05 -0,Zn81,0.0,4.3136581722580003e-13 +0,Cu81,0.0,1.0560527699307212e-13 +0,Rb92,0.31261087987828934,0.004591801077109555 +0,Ga85,7.795363194920626e-10,4.990069129717847e-10 +0,Rh121,1.5164557102444936e-11,9.714194661189905e-12 0,Co75,1.4565138232033663e-13,9.345003274674601e-14 -0,Tc116,5.188571202287346e-12,3.33189373879173e-12 -0,Te136,0.34132057899864665,0.02736098317676223 -0,Sr98,0.007645467959227587,0.00045932516366720957 -0,Ni75,7.323372528038435e-09,4.687497256084892e-09 +0,Xe143,0.00019529177611405312,0.0001250080938850028 +0,Rh124,4.725950839695729e-16,3.0442189859384615e-16 +0,Tc111,2.0014349317259084e-05,1.2881345102134617e-05 +0,Ag123,1.1944649321536084e-06,7.651243199062325e-07 +0,Pd124,3.7019863485949556e-10,2.372217458008428e-10 +0,As87,0.00036818294751460675,0.00016780772408679878 0,Br89,0.06792754226016515,0.001932914778071556 -0,Rh120,4.585568533125004e-09,2.9398203427116496e-09 -0,In128,0.00017342602461845248,0.00011357606710445822 -0,Br92,0.00012920164217887197,8.286628407432986e-05 -0,In131,0.00011494101431046622,4.263004964864242e-05 -0,Nb110,2.0747348331392792e-08,1.3426086905162823e-08 -0,Sn134,0.00023028909079749946,0.00014755843921916248 -0,Rb97,9.25701478698446e-05,7.425855902497594e-06 -0,Kr94,0.0002647804306896804,2.9793987783497966e-05 -0,Ni76,1.6996561308209975e-09,1.087953610902291e-09 -0,Ba148,0.00019758856681687895,8.910159835759076e-05 -0,Ru119,6.538700303647901e-13,4.189027501084252e-13 -0,In127,0.0023617339432551077,0.00037845445094628576 -0,Sb140,3.5289705687383303e-10,2.2632103593149006e-10 -0,Ga85,7.795363194920626e-10,4.990069129717847e-10 -0,Ru116,7.204032621132696e-08,4.615491475404942e-08 -0,Cs146,3.551157316995138e-05,2.8430705796940017e-06 -0,I139,0.02557676017044232,0.002049857621947831 -0,Ru120,1.9669783535707376e-13,1.2618943289982543e-13 +0,As85,0.006385923241329832,0.004087052942348632 +0,Ge85,1.527860863755489e-05,9.78002035436031e-06 +0,Sn133,0.0028248721987417244,0.0012767870447695595 +0,I140,0.0013079556917011714,0.0003029140120803763 +0,Kr92,0.044467575090041615,0.001259998817673887 +0,Rb96,0.0005998289709035946,9.60190357301698e-05 +0,Rb100,2.557736004304032e-05,1.640021183690587e-05 +0,Rh116,8.88882689391125e-06,5.725201259232004e-06 +0,Cu77,3.0226735717333054e-07,1.9345571358880752e-07 +0,Co71,1.719565531576046e-10,1.102413410025453e-10 +0,Y105,7.107896400905744e-13,4.577030395959752e-13 +0,Rh118,1.501795966563806e-07,9.625853820899038e-08 +0,In134,6.057007252930621e-09,3.888102593770287e-09 0,La149,0.0012734964344613099,0.0008160025931179187 +0,Tc110,0.00020425329997826626,0.00013075984497201834 +0,Se89,0.0003091571977929548,5.416431830684488e-05 +0,Tc112,3.057937202150519e-06,1.9596478498852118e-06 +0,Tc115,1.0150427784062133e-10,6.501479533916107e-11 +0,In130_m1,0.0,7.718418468755954e-13 +0,Sb140,3.5289705687383303e-10,2.2632103593149006e-10 +0,Y102,0.001160584681813372,0.0007437797558208365 +0,Cu80,8.580905984779687e-11,5.5131237394039296e-11 +0,Co72,4.316455341538029e-11,2.7626476307438762e-11 +0,Zr105,0.0011130023199066896,0.0007138559918715706 +0,Sn137,5.9299277487929266e-08,3.822478353005186e-08 +0,Tc113,3.069835757365499e-07,1.9713293914484466e-07 +0,Nb107,9.580534966088189e-06,6.1425376124136135e-06 0,I137,1.0883961763943952,0.030794800061745477 -0,Sn136,8.176189789045641e-08,5.2339887724948564e-08 0,La148,0.006930350053677465,0.004450175420208555 -0,Zr105,0.0011130023199066896,0.0007138559918715706 -0,Br88,0.4182350835876028,0.011889346056616085 -0,Cs149,5.596810473738193e-10,3.5956861632494106e-10 -0,Cu74,1.678233042887488e-06,1.074168946877656e-06 -0,Cu77,3.0226735717333054e-07,1.9345571358880752e-07 +0,Sb135,0.0035076872390015163,0.00021150877058781378 +0,Ag122_m1,9.63651037951865e-07,6.621211007227925e-07 +0,Pd126,0.0,7.040351799538143e-14 +0,Cs144,0.0060419349417490924,0.00036380099713599243 +0,Mo109,0.0001598440145287702,0.00010247654411355591 +0,Nb110,1.6553735370792122e-08,1.0596704662813744e-08 +0,Sn134,0.00023028909079749946,0.00014755843921916248 +0,Sr99,0.0005169485789591427,5.6993893381608066e-05 +0,Zn79,1.7638454202646298e-05,7.999205611027386e-06 +0,Kr95,1.1824355389253705e-05,3.7965721162070583e-06 +0,I141,0.00024669366737070913,5.693382583511221e-05 +0,Ge84,0.00041289760100993265,9.508611509510198e-05 +0,Xe142,0.007743331503800041,0.00048157458817324694 +0,Co73,1.2975669601273333e-11,8.314778500833574e-12 +0,Zr106,4.2412204542549655e-09,2.7196693857483876e-09 +0,Rh122,2.1502581872957674e-13,1.3775448856729138e-13 0,Sn135,4.667252570206798e-06,1.4942059949110188e-06 -0,Nb104,0.005226687926615153,0.0033658464057414695 -0,Nb105,0.010629530360417892,0.0034110466375031484 +0,Y100,0.006445142857525688,0.0041251242411941775 +0,Ga83,8.586294753723365e-07,5.495296655754905e-07 +0,Sr102,1.7968962940797598e-07,8.328864542350935e-08 +0,Cs149,5.596810473738193e-10,3.5956861632494106e-10 +0,Nb104,0.026133439633075774,0.016860893393301664 0,In132,1.8082833821634538e-05,2.751541559633057e-07 +0,Cu73,3.2839207369511107e-06,2.1049750159570336e-06 +0,Xe147,2.289407999493061e-09,1.5088309069326803e-09 +0,Zr104,0.0011063551025057934,0.00012627129570491643 +0,Cs143,0.03766809161498418,0.0010714815354650887 +0,Mo110,1.6155207312470014e-05,1.0354640857644093e-05 +0,Sr101,7.445506733261071e-06,3.351110148160393e-06 +0,Kr99,6.552893999122579e-13,4.624243150718014e-13 +0,Y104,1.7371133198973867e-06,1.1237647247038152e-06 +0,Y98,0.015162620428622047,0.0034878409317906484 +0,Zr107,3.370950738214721e-10,2.1584586093241427e-10 +0,Cs141,1.498027332609485,0.021280522601805508 +0,In133,3.996273342354658e-07,2.55808327290117e-07 +0,Rb93,0.2996834306275237,0.003367920311208731 +0,In129_m1,0.00042591961459254344,6.824510196692711e-05 +0,Ru120,1.9669783535707376e-13,1.2618943289982543e-13 +0,Ga79,0.0007705636248401479,8.480476119112005e-05 +0,Cu78,5.215724367629224e-08,3.3382222599188465e-08 +0,Ag129,2.189537868096035e-18,1.4069906858119795e-18 +0,Cd132,0.0,1.2118638343467292e-13 +0,La150,7.70083634429264e-05,4.93776268968215e-05 +0,Ge86,0.002013586463516308,0.0003789648516608505 +0,Xe146,2.232567401846581e-08,7.202855715920332e-09 +0,Rb101,7.15847966948613e-10,4.694182463942883e-10 +0,In128_m1,0.0001365642429989133,8.943537539905445e-05 +0,Rb94,0.06431500790926845,0.0018358230135221282 +0,Cs146,3.551157316995138e-05,2.8430705796940017e-06 +0,Nb104_m1,0.004032501146065428,0.0025968210433858605 +0,Ag120,4.4903473422277374e-05,2.9132544850971433e-05 +0,Ba147,0.0031712591230974472,0.0005080076448353924 +0,Cs148,2.8554887987874132e-08,1.8276504773916464e-08 +0,Ag124,1.5209547691564562e-06,9.98620663951776e-07 +0,Rh119,5.0712956765695156e-09,3.249628389303291e-09 +0,Y97,0.26382120728280906,0.06078115165654257 +0,La147,0.05224684551229745,0.0031486626661039892 +0,I138,0.13404600986033238,0.003811708516476155 +0,Se87,0.06198078879191884,0.0028070515574276046 +0,Kr98,1.012971587697711e-06,6.551183033331164e-07 +0,Ag127,2.0308558261217075e-13,1.2999101148150208e-13 +0,Ga81,0.00014357585833300998,2.2977032942259093e-05 +0,Y98_m1,0.03703480115040292,0.011919751654747068 +0,Se88,0.008544502042431373,0.001408648123210138 +0,Y101,0.0017606027034751245,0.0001490972190826355 +0,Se91,2.5940711445258455e-06,1.7283089409662936e-06 +0,Sb134_m1,0.05152920851693642,0.032982783454381125 0,Rb102,7.856426676367393e-13,5.138992606363527e-13 -0,Ga83,8.586294753723365e-07,5.495296655754905e-07 -0,Tc110,0.00020425329997826626,0.00013075984497201834 +0,Kr96,4.364244831171731e-05,2.8190989520563313e-05 +0,Zr103,0.00998354374666829,0.0064106532710834965 +0,Ru117,5.525704363257898e-09,3.5381434304186313e-09 +0,Sr98,0.007645467959227587,0.00045932516366720957 +0,Cd129,1.5771008245563515e-09,1.0102079748368665e-09 diff --git a/tests/integration/test-data/reference/test6/count_rate.csv b/tests/integration/test-data/reference/test6/count_rate.csv index 733b1a87..088d657d 100644 --- a/tests/integration/test-data/reference/test6/count_rate.csv +++ b/tests/integration/test-data/reference/test6/count_rate.csv @@ -1,801 +1,801 @@ times,counts,sigma counts -0.0,0.0225414565904688,0.004333535826663143 -0.01,0.0223443445099348,0.004267692187793066 -0.010147636193407446,0.022341471864793565,0.0042667365291869505 -0.010297452031375274,0.022338557906992185,0.004265767241661991 -0.010449479693346081,0.022335602058569715,0.004264784137902113 -0.010603751833847482,0.022332603733952548,0.00426378702822236 -0.01076030158950613,0.022329562339868173,0.004262775720544984 -0.010919162586165206,0.02232647727525817,0.004261750020375489 -0.011080368946107054,0.022323347931190774,0.004260709730778628 -0.011243955295382385,0.022320173690772962,0.004259654652354352 -0.011409956771247759,0.02231695392906179,0.004258584583213727 -0.011578409029712812,0.022313688012975546,0.004257499318954844 -0.011749348253198937,0.02231037530120402,0.004256398652638671 -0.011922811158311009,0.02230701514411873,0.004255282374764945 -0.012098835003723893,0.022303606883682225,0.00425415027324801 -0.012277457598185349,0.022300149853357248,0.004253002133392709 -0.012458717308637094,0.022296643378015416,0.004251837737870268 -0.012642653068455759,0.02229308677384532,0.004250656866694202 -0.012829304385815535,0.02228947934826048,0.004249459297196276 -0.01301871135217426,0.022285820399806526,0.004248244804002499 -0.013210914650884798,0.02228210921806851,0.004247013159009174 -0.013405955565933525,0.02227834508357746,0.004245764131359018 -0.013603875990807904,0.022274527267716813,0.004244497487417363 -0.013804718437494885,0.022270655032628484,0.004243212990748451 -0.014008526045612224,0.02226672763111871,0.004241910402091819 -0.014215342591674549,0.022262744306563546,0.0042405894793388025 -0.014425212498496305,0.022258704292814235,0.004239249977509175 -0.014638180844733454,0.022254606814102268,0.00423789164872792 -0.014854293374566077,0.022250451084944355,0.004236514242202166 -0.015073596507523922,0.02224623631004727,0.0042351175041982795 -0.015296137348456982,0.022241961684212427,0.0042337011780191345 -0.015521963697653346,0.022237626392240518,0.004232265003981614 -0.015751124061106365,0.022233229608835975,0.004230808719394274 -0.01598366766093338,0.02222877049851161,0.004229332058535301 -0.01621964444594837,0.022224248215492997,0.004227834752630633 -0.016459105102390573,0.022219661903622977,0.004226316529832435 -0.016702101064811573,0.022215010696266517,0.004224777115197774 -0.016948684527123104,0.022210293716215235,0.00422321623066764 -0.017198908453807917,0.02220551007559238,0.004221633595046273 -0.01745282659129625,0.02220065887575802,0.004220028923980813 -0.01771049347951018,0.022195739207214207,0.004218401929941311 -0.01797196446357841,0.022190750149510854,0.004216752322201136 -0.018237295705724067,0.022185690771151432,0.004215079806817727 -0.018506544197327973,0.02218056012949952,0.004213384086613818 -0.01877976777116999,0.022175357270685377,0.004211664861159067 -0.01905702511385113,0.02217008122951327,0.004209921826752136 -0.01933837577839904,0.02216473102936922,0.004208154676403292 -0.019623880197059598,0.02215930568212918,0.00420636309981749 -0.01991359969427737,0.02215380418806822,0.004204546783377976 -0.02020759649986765,0.022148225535769964,0.00420270541013047 -0.020505933762383056,0.022142568702036958,0.004200838659767912 -0.0208086755626774,0.02213683265180197,0.0041989462086158245 -0.021115886927669823,0.022131016338039853,0.004197027729618292 -0.021427633844312143,0.022125118701680734,0.004195082892324633 -0.021743983273762434,0.022119138671523673,0.004193111362876707 -0.022065003165767778,0.02211307516415186,0.004191112803997004 -0.022390762473259496,0.022106927083848697,0.004189086874977413 -0.02272133116716374,0.022100693322515116,0.00418703323166882 -0.02305678025143074,0.0220943727595881,0.00418495152647148 -0.02339718177828606,0.02208796426196071,0.0041828414083262405 -0.02374260886370688,0.022081466683903397,0.004180702522706619 -0.024093135703126836,0.0220748788669868,0.004178534511611808 -0.024448837587372714,0.02206819964000628,0.004176337013560588 -0.02480979091883637,0.022061427818907898,0.00417410966358623 -0.025176073227885534,0.022054562206716297,0.004171852093232389 -0.025547763189516758,0.022047601593464337,0.004169563930550047 -0.025924940640254267,0.022040544756124787,0.004167244800095521 -0.02630768659529838,0.022033390458543807,0.004164894322929599 -0.026696083265926974,0.022026137451376753,0.004162512116617812 -0.027090214077153937,0.02201878447202607,0.004160097795231898 -0.02749016368564833,0.022011330244581545,0.004157650969352518 -0.027896017997918004,0.022003773479762925,0.0041551712460731905 -0.028307864188761824,0.021996112874865085,0.0041526582290055845 -0.02872579071999421,0.021988347113705845,0.004150111518286147 -0.029149887359446097,0.02198047486657645,0.004147530710584103 -0.02958024520024654,0.021972494790194877,0.004144915399110931 -0.030016956680388868,0.021964405527662184,0.004142265173631277 -0.030460115602585748,0.021956205708421942,0.0041395796204754184 -0.030909817154417412,0.021947893948222635,0.004136858322553297 -0.03136615792877725,0.021939468849083738,0.004134100859370152 -0.03182923594461939,0.021930928999264812,0.00413130680704383 -0.03229915066801251,0.02192227297323864,0.004128475738323787 -0.0327760030335044,0.021913499331667637,0.004125607222611883 -0.03325989546580215,0.021904606621384305,0.0041227008259849245 -0.0337509319017722,0.021895593375375638,0.004119756111219125 -0.03424921781276536,0.02188645811277156,0.004116772637816436 -0.03475486022727128,0.021877199338837704,0.004113749962032838 -0.03526796775390751,0.02186781554497246,0.004110687636908643 -0.035788650604747854,0.021858305208708746,0.004107585212300873 -0.03631702061899528,0.021848666793720165,0.004104442234917713 -0.036853191287004095,0.021838898749832414,0.0041012582483551914 -0.03739727777465707,0.021828999513039238,0.004098032793136009 -0.03794939694810219,0.021818967505523913,0.0040947654067507 -0.03850966739885478,0.021808801135685833,0.004091455623701105 -0.03907820946927015,0.021798498798172576,0.004088102975546227 -0.039655145278392354,0.02178805887391775,0.004084706990950523 -0.04024059874818446,0.021777479730184526,0.004081267195734726 -0.0408346956301463,0.021766759720615227,0.004077783112929186 -0.041437563532324966,0.021755897185287,0.004074254262829847 -0.04204933194672413,0.021744890450773904,0.004070680163056891 -0.042670132277118175,0.021733737830215427,0.004067060328616126 -0.04330009786727676,0.02172243762339188,0.004063394271963125 -0.04393936402960622,0.021710988116806496,0.004059681503070265 -0.044588068074213734,0.021699387583774647,0.0040559215294966415 -0.04524634933840065,0.02168763428452034,0.004052113856460949 -0.04591434921659115,0.021675726466280236,0.00404825798691741 -0.046592211190702934,0.02166366236341513,0.0040443534216347745 -0.04728008086096605,0.02165144019752966,0.004040399659278469 -0.047978105977196976,0.021639058177599556,0.004036396196495949 -0.04868643647053421,0.021626514500107476,0.004032342528005335 -0.04940522448564252,0.0216138073491874,0.004028238146687363 -0.05013462441339257,0.02160093489677731,0.004024082543680709 -0.05087479292402313,0.021587895302781008,0.0040198752084807795 -0.05162588900079261,0.021574686715238975,0.0040156156290420165 -0.05238807397412787,0.021561307270508586,0.004011303291883715 -0.05316151155627666,0.021547755093453642,0.004006937682199539 -0.05394636787647212,0.021534028297643736,0.004002518283970655 -0.05474281151661612,0.021520124985563695,0.003998044580082624 -0.05555101354748957,0.021506043248832877,0.003993516052446109 -0.05637114756549725,0.021491781168435153,0.003988932182121407 -0.057203389729955215,0.021477336814959308,0.003984292449446902 -0.05804791880092853,0.02146270824885028,0.003979596334171487 -0.058904916177627914,0.021447893520671488,0.003974843315590972 -0.05977456593737288,0.021432890671378386,0.0039700328726885985 -0.06065705487513049,0.021417697732603522,0.003965164484279651 -0.061552572543637565,0.021402312726953303,0.003960237629160246 -0.0624613112941154,0.021386733668316615,0.003955251786260331 -0.06338346631758546,0.02137095856218577,0.003950206434800976 -0.06431923568679523,0.021354985405989593,0.003945101054455941 -0.06526882039876271,0.02133881218943931,0.0039399351255176305 -0.06623242441794946,0.02132243689488705,0.00393470812906745 -0.06721025472007074,0.021305857497697703,0.003929419547150564 -0.06820252133655234,0.021289071966633526,0.003924068862955178 -0.0692094373996442,0.021272078264252665,0.003918655560996322 -0.07023121918819963,0.021254874347321186,0.00391317912730417 -0.07126808617413061,0.02123745816723887,0.003907639049616955 -0.07232026106954885,0.021219827670479204,0.0039020348175784927 -0.07338796987460298,0.021201980799043885,0.003896365922940348 -0.07447144192602165,0.021183915490931297,0.003890631859768644 -0.07557090994637383,0.021165629680620215,0.0038848321246555636 -0.07668661009405578,0.02114712129956801,0.0038789662169355717 -0.07781878201401651,0.021128388276724176,0.0038730336389062986 -0.07896766888923183,0.021109428539058905,0.0038670338960542045 -0.08013351749293841,0.021090240012107294,0.003860966497284931 -0.08131657824163904,0.021070820620528983,0.003854830955158412 -0.08251710524889051,0.02105116828868359,0.0038486267861287016 -0.08373535637988529,0.021031280941222162,0.0038423535107885414 -0.08497159330683954,0.02101115650369462,0.0038360106541186346 -0.08622608156519827,0.02099079290317335,0.003829597745741637 -0.08749909061067085,0.02097018806889325,0.0038231143201808023 -0.08879089387710812,0.02094933993290821,0.0038165599171233423 -0.09010176883523419,0.020928246430764245,0.0038099340816883627 -0.09143199705224533,0.02090690550218901,0.003803236364699425 -0.0927818642522888,0.020885315091798556,0.003796466322961661 -0.09415166037783423,0.020863473149820545,0.0037896235195433946 -0.09554167965195169,0.020841377632834612,0.0037827075240622144 -0.09695222064150846,0.020819026504529662,0.003775717912975472 -0.09838358632129957,0.020796417736478116,0.0037686542698750778 -0.09983608413912452,0.020773549308927396,0.0037615161857865917 -0.1013100260818251,0.020750419211608216,0.0037543032594724857 -0.10280572874229811,0.02072702544456015,0.003747015097739495 -0.10432351338749725,0.020703366018974247,0.0037396513157499935 -0.10586370602743932,0.020679438958052358,0.0037322115373372576 -0.10742663748522892,0.020655242297884013,0.003724695395324535 -0.109012643468117,0.020630774088339358,0.003717102531847773 -0.11062206463960864,0.020606032393979696,0.0037094325986819143 -0.11225524669263505,0.020581015294984132,0.0037016852575706164 -0.11391254042380648,0.020555720888093074,0.0036938601805592084 -0.11559430180876074,0.020530147287567864,0.0036859570503307904 -0.11730089207862449,0.020504292626166824,0.0036779755605452938 -0.11903267779760304,0.02047815505613711,0.003669915416181319 -0.12079003094171635,0.020451732750222565,0.0036617763338805463 -0.1225733289786966,0.020425023902686697,0.00365355804229461 -0.124382954949066,0.020398026730351244,0.0036452602824341165 -0.126219297548411,0.020370739473649393,0.0036368828080196943 -0.1280827512108719,0.02034316039769362,0.003628425385834775 -0.1299737161938645,0.020315287793357787,0.0036198877960799264 -0.13189259866405273,0.02028711997837286,0.003611269832728437 -0.1338398107845904,0.020258655298436075,0.0036025713038829337 -0.13581577080365137,0.020229892128332937,0.003593792032132725 -0.1378209031442663,0.020200828873071536,0.003584931854911612 -0.13985563849548593,0.020171463969028785,0.003575990624855841 -0.14192041390489007,0.02014179588510765,0.0035669682101619297 -0.14401567287246278,0.02011182312390538,0.00355786449494397 -0.146141865445853,0.020081544222891243,0.0035486793795901483 -0.14829944831704195,0.020050957755593995,0.003539412781118086 -0.1504888849204372,0.020020062332797392,0.0035300646335286305 -0.15271064553241562,0.01998885660374393,0.0035206348881577643 -0.15496520737233557,0.019957339257345146,0.003511123514026161 -0.15725305470504036,0.019925509023398173,0.0035015304981860763 -0.15957467894487484,0.01989336467380733,0.0034918558460650525 -0.1619305787612385,0.01986090502381009,0.003482099581806095 -0.1643212601856959,0.01982812893320602,0.0034722617486037874 -0.16674723672066893,0.019795035307588034,0.0034623424090359403 -0.169209029449734,0.01976162309957462,0.003452341645390272 -0.1717071671495467,0.019727891310041896,0.0034422595599856156 -0.1742421864034202,0.019693838989354607,0.0034320962754871617 -0.17681463171657935,0.019659465238594277,0.003421851935215212 -0.17942505563311698,0.01962476921078375,0.0034115267034469125 -0.18207401885467622,0.01958975011210641,0.0034011207657103906 -0.1847620903608862,0.019554407203118893,0.0033906343290707715 -0.18748984753157458,0.019518739799955637,0.003380067622407466 -0.19025787627078505,0.019482747275524126,0.0033694208966821523 -0.1930667711326254,0.019446429060688622,0.0033586944251968683 -0.19591713544897413,0.019409784645441745,0.003347888503841558 -0.19880958145907188,0.01937281358006111,0.0033370034513304915 -0.20174473044102645,0.019335515476250273,0.003326039609426895 -0.2047232128452589,0.019297890008261664,0.003314997343155167 -0.2077456684299205,0.019259936913999846,0.0033038770409999983 -0.21081274639830838,0.01922165599610334,0.003292679115091758 -0.21392510553831004,0.019183047123003033,0.00328140400137749 -0.21708341436390624,0.019144110229954873,0.003270052159776756 -0.2202883512587641,0.019104845320045655,0.003258624074321776 -0.2235406046219487,0.019065252465168887,0.0032471202532810836 -0.22684087301578715,0.019025331806969453,0.0032355412292660157 -0.2301898653159144,0.01898508355775413,0.0032238875593193933 -0.2335883008635358,0.01894450800136683,0.0032121598249856545 -0.23703690961993634,0.018903605494025127,0.0032003586323617753 -0.24053643232327168,0.01886237646511689,0.0031884846121282826 -0.24408762064767323,0.018820821417953864,0.003176538419559689 -0.24769123736470353,0.018778940930480825,0.003164520734513634 -0.251348056507194,0.018736735655936792,0.003152432261398134 -0.25505886353550233,0.018694206323467154,0.0031402737291162165 -0.25882445550622335,0.018651353738683343,0.003128045890987334 -0.26264564124339274,0.01860817878416839,0.0031157495246449058 -0.2665232415122159,0.018564682419925208,0.0031033854319093956 -0.2704580891953636,0.018520865683765965,0.0030909544386363026 -0.2744510294718692,0.018476729691639684,0.003078457394538556 -0.2785029199986674,0.018432275637895637,0.0030658951729826277 -0.2826146310948135,0.018387504795480132,0.0030532686707580594 -0.2867870459284223,0.018342418516064683,0.0030405788078196627 -0.2910210607063663,0.018297018230102772,0.0030278265270021584 -0.2953175848667748,0.018251305446812867,0.003015012793706645 -0.29967754127437585,0.01820528175408568,0.0030021385955586676 -0.304101866418721,0.01815894881831326,0.002989204942037404 -0.30859151061533713,0.01811230838413744,0.0029762128640757647 -0.31314743820984725,0.01806536227411606,0.002963163413631109 -0.3177706277851068,0.018018112388304253,0.0029500576632263565 -0.3224620723713955,0.017970560703749233,0.0029368967054613877 -0.3272227796597146,0.01792270927389623,0.002923681652494585 -0.33205377221823096,0.017874560227904197,0.0029104136354945066 -0.3369560877119192,0.0178261157698691,0.0028970938040617064 -0.3419307791254445,0.017777378177953253,0.0028837233256207772 -0.3469789149893369,0.017728349803419443,0.0028703033847828144 -0.35210157960950406,0.01767903306956805,0.0028568351826784282 -0.35729987330013363,0.01762943047057597,0.002843319936261722 -0.36257491262003305,0.017579544570236617,0.002829758877585527 -0.36792783061245915,0.017529378000599203,0.002816153253048364 -0.3733597770484874,0.017478933460507502,0.0028025043226136692 -0.3788719186739765,0.017428213714036543,0.0027888133590019044 -0.38446543946017664,0.017377221588827433,0.002775081646856223 -0.3901415408580389,0.01732595997431975,0.00276131048188249 -0.3959014420562786,0.017274431819881416,0.002747501169964553 -0.40174638024324927,0.0172226401328363,0.0027336550262556532 -0.4076776108726826,0.017170587976390265,0.0027197733742471085 -0.41369640793335133,0.017118278467455585,0.002705857544815338 -0.41980406422271266,0.017065714774375084,0.002691908875248523 -0.4260018916245943,0.017012900114547286,0.002677928708254138 -0.4322912213909769,0.01695983775195326,0.0026639183909488696 -0.4386734044279388,0.0169065309945876,0.0026498792738323287 -0.4451498115858216,0.01685298319179504,0.002635812709746202 -0.4517218339536788,0.016799197731514805,0.0026217200528204903 -0.45839088315807397,0.01674517803743573,0.002607602657408595 -0.4651583916662875,0.016690927566064447,0.002593461877013127 -0.4720258130940017,0.016636449803709895,0.0025792990632042883 -0.478994622517527,0.016581748263387958,0.002565115564532912 -0.4860663167906394,0.016526826481649184,0.002550912725440127 -0.4932424148660941,0.016471688015334735,0.002536691885165894 -0.500524458121887,0.016416336438263814,0.0025224543766584886 -0.507914010692331,0.016360775337858232,0.0025082015254872746 -0.5154126598040234,0.01630500831170849,0.002493934648761032 -0.5230220161167707,0.016249038964087276,0.0024796550540541764 -0.5307437140695477,0.016192870902415595,0.0024653640383432707 -0.5385794122315635,0.016136507733687997,0.002451062886956214 -0.5465307936585122,0.01607995306086278,0.0024367528725365716 -0.5545995662540815,0.0160232104792243,0.002422435254025445 -0.5627874631367991,0.015966283572723897,0.0024081112756633503 -0.571096243012294,0.015909175910307112,0.0023937821660145386 -0.5795276905510569,0.015851891042234414,0.0023794491370161745 -0.5880836167717735,0.015794432496403384,0.002365113383054771 -0.5967658594303206,0.015736803774680664,0.0023507760800722055 -0.6055762834145021,0.015679008349251542,0.002336438384703685 -0.6145167811446166,0.015621049658996387,0.0023221014334498394 -0.6235892729799353,0.015562931105902268,0.0023077663418851757 -0.6327957076311831,0.015504656051518854,0.0022934342039049446 -0.6421380625791069,0.015446227813468221,0.002279106091012475 -0.6516183444992281,0.01538764966201715,0.0022647830516488296 -0.6612385896928608,0.015328924816722362,0.0022504661105665984 -0.6710008645244973,0.015270056443157485,0.002236156268249497 -0.6809072658656474,0.015211047649731906,0.0022218545003792867 -0.690959921545235,0.015151901484611176,0.0022075617573514028 -0.7011609908066395,0.015092620932748746,0.0021932789638405754 -0.7115126647714881,0.015033208913038729,0.002179007018417413 -0.7220171669102935,0.01497366827559954,0.0021647467932170024 -0.7326767535200398,0.01491400179919809,0.0021504991336601157 -0.7434937142088223,0.01485421218882389,0.002136264858227671 -0.7544703723876376,0.014794302073422716,0.002122044758288793 -0.7656090857694389,0.014734274003798935,0.0021078395979826164 -0.7769122468755543,0.01467413045069544,0.002093650114153887 -0.7883822835495875,0.014613873803060066,0.0020794770163421006 -0.8000216594789005,0.014553506366506614,0.002065320986823818 -0.8118328747237982,0.014493030361979017,0.002051182680707562 -0.8238184662545227,0.014432447924625768,0.0020370627260805465 -0.8359810084961804,0.014371761102892388,0.002022961724206249 -0.8483231138817098,0.014310971857838195,0.0020088802497717608 -0.8608474334130148,0.014250082062684086,0.001994818851183566 -0.8735566572303816,0.014189093502596698,0.0019807780509103574 -0.8864535151903041,0.014128007874714198,0.00196675834587124 -0.8995407774518387,0.014066826788418106,0.0019527602078676432 -0.9128212550716155,0.014005551765854942,0.0019387840840570675 -0.9262978006076336,0.01394418424271085,0.0019248303974667056 -0.9399733087319735,0.013882725569241352,0.0019108995475449187 -0.9538507168525525,0.013821177011557956,0.0018969919107484313 -0.9679330057440604,0.013759539753172297,0.0018831078411630632 -0.9822232001882084,0.013697814896797703,0.0018692476711558328 -0.996724369623435,0.013636003466407214,0.001855411712056133 -1.011439628804199,0.013574106409546432,0.0018416002548638287 -1.0263721384700082,0.01351212459989808,0.0018278135709820142 -1.0415251060243254,0.01345005884009507,0.001814051912972283 -1.056901786223498,0.01338790986477737,0.0018003155153304023 -1.0725054818758548,0.013325678343887015,0.0017866045952803376 -1.0883395445511317,0.013263364886195181,0.0017729193535847094 -1.1044073753003638,0.013200970043053824,0.0017592599753698003 -1.1207124253864091,0.013138494312363717,0.0017456266309634435 -1.1372581970252567,0.013075938142749788,0.0017320194767441689 -1.1540482441382791,0.013013301937933682,0.0017184386560001599 -1.1710861731155913,0.012950586061292884,0.0017048842997967717 -1.1883756435906792,0.01288779084059447,0.0016913565278514125 -1.2059203692264653,0.012824916572891362,0.00167785544941487 -1.223724118512975,0.01276196352956761,0.0016643811641582095 -1.2417907155767887,0.012698931961518906,0.0016509337630646415 -1.2601240410024352,0.012635822104453848,0.0016375133293258274 -1.2787280326659158,0.01257263418430062,0.001624119939242265 -1.2976066865805347,0.012509368422703648,0.0016107536631275532 -1.3167640577552144,0.012446025042593813,0.001597414566216438 -1.3362042610654865,0.012382604273815781,0.0015841027095766659 -1.3559314721373397,0.012319106358795613,0.0015708181510247334 -1.3759499282441108,0.012255531558231274,0.001557560946045765 -1.3962639292166314,0.012191880156788935,0.0015443311487177145 -1.4168778383667981,0.012128152468787411,0.0015311288126401998 -1.4377960834247825,0.012064348843853403,0.001517953991868222 -1.4590231574900794,0.012000469672530073,0.0015048067418510697 -1.4805636199965941,0.0119365153918217,0.0014916871203765863 -1.5024220976919787,0.011872486490657376,0.0014785951885209815 -1.5246032856314273,0.011808383515257063,0.001465531011604261 -1.5471119481861382,0.011744207074383702,0.0014524946601511925 -1.569952920066676,0.01167995784446551,0.0014394862108576315 -1.5931311073614307,0.01161563657457323,0.0014265057475618527 -1.6166514885904137,0.011551244091237707,0.0014135533622203576 -1.6405191157746106,0.011486781303093828,0.0014006291558874165 -1.6647391155211217,0.011422249205337897,0.0013877332396974088 -1.6893166901243233,0.01135764888398576,0.001374865735848784 -1.7142571186832871,0.011292981519920819,0.0013620267785882526 -1.7395657582356887,0.01122824839272108,0.0013492165151935576 -1.765248044908474,0.011163450884256063,0.001336435106952913 -1.7913094950854962,0.01109859048204505,0.0013236827301390576 -1.8177557065924,0.01103366878236972,0.0013109595769754746 -1.8445923598989962,0.010968687493134446,0.0012982658565922612 -1.8718252193393905,0.010903648436469685,0.0012856017959688166 -1.899460134350123,0.010838553551074305,0.0012729676408603514 -1.9275030407265876,0.010773404894294071,0.0012603636567050675 -1.9559599618980046,0.010708204643934686,0.0012477901295086565 -1.984837010221204,0.010642955099808732,0.0012352473667026826 -2.0141403882935314,0.010577658685017163,0.0012227356979732738 -2.0438763902851163,0.01051231794696674,0.001210255476056511 -2.074051403290821,0.010446935558126308,0.0011978070774968487 -2.1046719087021435,0.010381514316525084,0.0011853909033648854 -2.1357444835993804,0.010316057145997842,0.001173007379930878 -2.1672758021643364,0.01025056709618199,0.0011606569592903936 -2.1992726371139,0.01018504734227289,0.0011483401199386622 -2.231741861154765,0.010119501184544221,0.0011360573672902735 -2.2646904484596586,0.010053932047640666,0.0011238092341410695 -2.298125476165337,0.009988343479651359,0.0011115962810692617 -2.3320541258927094,0.009922739150972151,0.0010994190967730444 -2.366483685289402,0.009857122852966025,0.0010872782983422358 -2.401421549595097,0.00979149849643059,0.001075174531461744 -2.43687522322998,0.009725870109882266,0.0010631084705449967 -2.472852321406642,0.009660241837666592,0.0010510808187957521 -2.509360571765766,0.009594617937904476,0.001039092308197091 -2.546407816035989,0.009529002780283758,0.00102714369942669 -2.5840020117182405,0.009463400843705665,0.0010152357816978971 -2.6221512337949666,0.009397816713795493,0.0010033693725264056 -2.6608636764645794,0.009332255080286463,0.000991545317422761 -2.7001476549015164,0.009266720734285356,0.0009797644895112219 -2.7400116070422866,0.009201218565428486,0.0009680277890758734 -2.7804640953978805,0.00913575355893563,0.0009563361430352006 -2.8215138088929455,0.00907033079256932,0.0009446905043466512 -2.863169564732095,0.009004955433506568,0.0009330918513430015 -2.905440310293805,0.008939632735128945,0.0009215411870025786 -2.948335125052237,0.008874368033737015,0.0009100395381557015 -2.991863222527455,0.008809166745194141,0.0008985879546298283 -3.0360339522644235,0.008744034361504094,0.0008871875083361513 -3.0808568018412315,0.008678976447326441,0.0008758392923004778 -3.126341398906959,0.008613998636432989,0.0008645444196414116 -3.1724975132496356,0.00854910662810797,0.000853304022498871 -3.219335058894712,0.008484306183494258,0.000842119250916102 -3.266864096234547,0.008419603121886972,0.0008309912716783179 -3.315094834189299,0.008355003316975989,0.0008199212671111229 -3.3640376323997385,0.008290512693037691,0.0008089104338418451 -3.4137030034524276,0.008226137221076518,0.0007979599815268162 -3.4641016151377557,0.008161882914916048,0.0007870711315475968 -3.5152442927413077,0.008097755827239374,0.0007762451156790127 -3.5671420213690688,0.008033762045578052,0.0007654831747317452 -3.619805948306936,0.007969907688248979,0.0007547865571721223 -3.6732473854151024,0.007906198900238021,0.0007441565177215398 -3.727477811557756,0.007842641849029632,0.0007335943159378696 -3.7825088750686664,0.007779242720381312,0.0007231012147809753 -3.8383523962531676,0.007716007714042024,0.0007126784791643466 -3.8950203699270842,0.007652943039413606,0.0007023273744946738 -3.9525249679931336,0.007590054911154614,0.0006920491652010394 -4.0108785420553765,0.00752734954472593,0.0006818451132552463 -4.070093626072243,0.007464833151878116,0.0006717164766846814 -4.1301829390487645,0.007402511936080313,0.0006616645080789569 -4.191159387768518,0.007340392087891265,0.0006516904530914914 -4.25303606956592,0.007278479780273177,0.0006417955489370794 -4.315826275139448,0.007216781163849498,0.0006319810228864225 -4.379543491406389,0.007155302362108282,0.000622248090758538 -4.444201404399749,0.007094049466553111,0.0006125979554119291 -4.509813902207909,0.007033028531804041,0.0006030318052353555 -4.576395077957709,0.006972245570651527,0.0005935508126390851 -4.643959232841533,0.0069117065490667305,0.0005841561325474842 -4.7125208791891415,0.00685141738117203,0.000574848900893856 -4.782094743584802,0.006791383924176121,0.0005656302331185164 -4.852695770030462,0.006731611973278541,0.0005565012226711166 -4.924339123155634,0.006672107256548693,0.0005474629395183689 -4.997040191474639,0.006612875429785232,0.0005385164286583713 -5.070814590691972,0.006553922071361709,0.000529662708642885 -5.145678167056446,0.0064952526770651,0.0005209027701090158 -5.221647000764848,0.006436872654933954,0.0005122375743218837 -5.298737409415881,0.0063787873201033764,0.0005036680517299923 -5.37696595151506,0.006321001889664379,0.0004951951005351657 -5.456349430031372,0.006263521477545419,0.0004868195852790321 -5.536904896006444,0.006206351089424125,0.00047854233544819785 -5.6186496522169875,0.006149495617677652,0.00047036414410037185 -5.701601256891326,0.0060929598363801294,0.00046228576651384366 -5.785777527480786,0.0060367483963560216,0.00045430791886283964 -5.871196544486747,0.005980865820298215,0.0004464312769214052 -5.9578766553442435,0.005925316497960023,0.0004386564747985636 -6.045836478362854,0.005870104681430204,0.00043098410370761116 -6.135094906725791,0.0058152344805003486,0.00042341471077249663 -6.225671112548031,0.0057607098581339425,0.0004159487978743021 -6.31758455099436,0.005706534626046637,0.0004085868205409168 -6.410854964458209,0.00565271244040714,0.0004013291868830474 -6.505502386802199,0.005599246797668239,0.0003941762565797342 -6.601547147661251,0.0055461410305375405,0.000387128339916585 -6.6990098768093,0.005493398304097328,0.0003801856968799213 -6.797911508590401,0.005441021612083104,0.0003733485363100539 -6.898273286415296,0.005389013773330219,0.00036661701511685966 -7.000116767324358,0.005337377428397975,0.0003599912375608016 -7.103463826617898,0.005286115036380508,0.00035347125460249203 -7.208336662554833,0.0052352288719136305,0.0003470570633238094 -7.3147578011207255,0.005184721022386787,0.0003407486064235196 -7.422750100866221,0.005134593385369039,0.00033454577179023486 -7.532336757816883,0.005084847666257898,0.000328448392155443 -7.643541310455589,0.005035485376159657,0.0003224562448292011 -7.756387644778411,0.004986507830009649,0.00031656905152095596 -7.870899999425174,0.004937916144940611,0.00031078647824778113 -7.987102970885753,0.004889711238907154,0.00030510813533216036 -8.105021518783241,0.004841893829573976,0.0002995335774912545 -8.224680971235099,0.0047944644334751325,0.0002940623040193856 -8.346107030293489,0.004747423365451419,0.00028869375906526477 -8.469325777465853,0.004700770738372402,0.000283427332005255 -8.594363679317114,0.004654506463149286,0.00027826235791371894 -8.721247593154473,0.004608630249044323,0.00027319811813125434 -8.85000477279619,0.004563141604281869,0.00026823384093134663 -8.980662874425525,0.004518039836965779,0.00026336870228569053 -9.1132499625311,0.004473324056307045,0.00025860182672814846 -9.247794515934963,0.00442899317416507,0.000253932288317007 -9.384325433909662,0.0043850459069051766,0.0002493591116948873 -9.522872042385572,0.004341480777574217,0.00024488127324535095 -9.663464100249971,0.004298296118395297,0.00024049770234490383 -9.806131805739012,0.004255490073581974,0.00023620728270878666 -9.95090580292411,0.004213060602471018,0.00023200885382858815 -10.097817188294087,0.0041710054829722995,0.00022790121249938156 -10.246897517434489,0.004129322315333059,0.00022388311443374029 -10.398178811805511,0.004088008526213004,0.00021995327595964416 -10.551693565620015,0.004047061373065489,0.00021611037579894027 -10.707474752823012,0.004006477948819082,0.00021235305692268372 -10.865555834174323,0.003966255186852528,0.00020867992847934514 -11.02597076443568,0.003926389866255288,0.0002050895677915392 -11.188753999663986,0.003886878617364366,0.0002015805224166126 -11.353940504612257,0.0038477179275673112,0.00019815131226610775 -11.521565760239813,0.0038089041473599217,0.00019480043177883116 -11.691665771333351,0.003770433496646236,0.00019152635214196557 -11.864277074240528,0.003732302071267187,0.0001883275235543999 -12.03943674471775,0.0036945058497433064,0.00018520237752620873 -12.217182405893736,0.003657040700215845,0.00018214932920798522 -12.397552236350792,0.003619902387569622,0.00017916677974353116 -12.580584978325271,0.003583086580720154,0.00017625311863923957 -12.766319946029155,0.0035465888600466323,0.00017340672614335386 -12.954797034094483,0.0035104047249515974,0.00017062597562817256 -13.146056726142461,0.0034745296015275345,0.0001679092359681921 -13.340140103479062,0.0034389588503099225,0.00016525487390711807 -13.537088853919041,0.003403687774095793,0.0001626612564066704 -13.736945280740137,0.0033687116258066074,0.00016012675297012233 -13.939752311769622,0.0033340256163737394,0.00015764973793356773 -14.145553508604852,0.003299624922624911,0.00015522859271801062 -14.354393075970028,0.00326550469514978,0.00015286170803549757 -14.566315871211069,0.003231660066122953,0.00015054748604267953 -14.781367413930674,0.0031980861570630086,0.000148284342435404 -14.999593895765633,0.0031647780865062805,0.0001460707084781667 -15.221042190308488,0.0031317309775747916,0.00014390503296254445 -15.445759863175615,0.00309893996541817,0.00014178578408903064 -15.67379518222409,0.003066400204510157,0.00013971145126704158 -15.905197127919243,0.0030341068757811073,0.00013768054682824457 -16.140015403855344,0.003002055193568838,0.00013569160764875145 -16.378300447431617,0.0029702404123711696,0.00013374319667615924 -16.620103440685845,0.0029386578333846776,0.00013183390435786887 -16.86547632128793,0.00290730281081537,0.00012996234996758842 -17.11447179369578,0.0028761707579483434,0.00012812718282741926 -17.367143340475817,0.002845257152964751,0.00012632708342342593 -17.623545233790747,0.0028145575444959783,0.00012456076441310883 -17.883732547056827,0.00278406755690624,0.00012282697152371942 -18.147761166773257,0.0027537828952964817,0.00012112448434088318 -18.415687804526243,0.002723699350223852,0.0001194521169875197 -18.687570009170262,0.0026938128021326653,0.00011780871869356945 -18.963466179189165,0.002664119225494241,0.00011619317425754598 -19.243435575239797,0.002634614692654578,0.00011460440440143357 -19.5275383328808,0.0026052953773902546,0.0001130413660209314 -19.815835475489248,0.0025761575581744974,0.00011150305233350936 -20.108388927368193,0.002547197621156626,0.00010998849292718096 -20.405261527047497,0.0025184120628595655,0.00010849675371331518 -20.70651704078117,0.002489797492601243,0.00010702693678719269 -21.0122201762439,0.0024613506346469922,0.00010557818020036902 -21.322436596429878,0.0024330683301010602,0.00010414965764922705 -21.637232933756728,0.002404947538546369,0.00010274057808438735 -21.956676804377757,0.002376985339442562,0.00010135018524589216 -22.280836822705346,0.002349178933293045,9.997775712929114e-05 -22.609782616149012,0.0023215256425924984,9.862260538792156e-05 -22.943584840070816,0.002294022912566758,9.728407467681432e-05 -23.2823151929617,0.002266668311717381,9.596154194373785e-05 -23.62604643184182,0.0022394595321835456,9.465441567294946e-05 -23.974852387888287,0.0022123943899339774,9.336213508722952e-05 -24.32880798229361,0.002185470824801672,9.208416931374802e-05 -24.687989242358288,0.002158686900374109,9.082001651924906e-05 -25.052473317820862,0.002132040803751344,8.956920301993418e-05 -25.422338497429326,0.002105530845184116,8.833128237129698e-05 -25.79766422575693,0.002079155457603585,8.71058344429893e-05 -26.178531120266346,0.0020529131960538875,8.589246448361061e-05 -26.565020988625793,0.0020268027370378746,8.469080218008568e-05 -26.957216846280755,0.002000822877785876,8.350050071605426e-05 -27.35520293428515,0.0019749725354563587,8.232123583342934e-05 -27.759064737395782,0.0019492507462766004,8.115270490099727e-05 -28.16888900243378,0.0019236566646305168,7.999462599363705e-05 -28.584763756917397,0.0018981895620997838,7.884673698542464e-05 -29.006778327969634,0.0018728488264634763,7.770879465957364e-05 -29.435023361505138,0.001847633960660317,7.658057383784096e-05 -29.869590841700322,0.0018225445817166527,7.546186653170119e-05 -30.310574110750974,0.001797580419642183,7.435248111727197e-05 -30.758067888921527,0.0017727413162944663,7.325224153565356e-05 -31.212168294890343,0.001748027224212174,7.216098652003278e-05 -31.67297286639539,0.0017234382054161178,7.107856885059826e-05 -32.14058058118459,0.0016989744301760695,7.000485463802329e-05 -32.61509187827572,0.0016746361757405545,6.893972263599069e-05 -33.09660867952999,0.001650423825025912,6.788306358297452e-05 -33.58523441154415,0.0016263378652601676,6.683477957324296e-05 -34.08107402786587,0.00160237888657655,6.57947834568198e-05 -34.584234031537015,0.0015785475805508591,6.476299826793206e-05 -35.094822497969844,0.0015548447386763695,6.373935668127957e-05 -35.61294909816091,0.001531271250769482,6.27238004952955e-05 -36.138725122247465,0.0015078281032990277,6.171628014141572e-05 -36.67226350341213,0.0014845163776318066,6.071675421824694e-05 -37.213678842139984,0.0014613372481868628,5.972518904941843e-05 -37.763087430834055,0.0014382919804908842,5.8741558263811514e-05 -38.32060727879415,0.0014153819291271687,5.776584239679697e-05 -38.88635813756443,0.0013926085355707813,5.679802851105895e-05 -39.460461526655294,0.0013699733259026933,5.5838109835556926e-05 -40.04304075964497,0.0013474779083961063,5.488608542116147e-05 -40.634220970666284,0.001325123970968528,5.3941959811504856e-05 -41.2341291412849,0.001302913278493706,5.3005742727602984e-05 -41.84289412777393,0.0012808476699681286,5.2077448764840226e-05 -42.46064668879146,0.001258929055527441,5.115709710094851e-05 -43.087519513466624,0.001237159413308898,5.0244711213670634e-05 -43.723647249900345,0.0012155407861567553,4.9340318606859827e-05 -44.369166534086865,0.0011940752781683603,4.844395054384175e-05 -45.024216019262276,0.0011727650510796508,4.7555641786944574e-05 -45.688936405686114,0.0011516123204896559,4.6675430342188625e-05 -46.36347047086315,0.0011306193519246218,4.580335720821631e-05 -47.04796310021082,0.0011097884567433961,4.493946612863819e-05 -47.74256131817973,0.0010891219878866921,4.408380334706447e-05 -48.44741431983349,0.0010686223354739294,4.32364173641891e-05 -49.16267350289485,0.0010482919222523424,4.239735869639027e-05 -49.888492500264896,0.0010281331989041046,4.156667963540635e-05 -50.62502721302239,0.0010081486392182202,4.074443400874162e-05 -51.372435843910345,0.0009883407351348997,3.993067694054709e-05 -52.13087893131666,0.0009687119916711428,3.912546461281198e-05 -52.90051938375706,0.0009492649217371103,3.8328854026784746e-05 -53.68152251486652,0.0009300020408538095,3.754090276462649e-05 -54.474056078907616,0.000910925861783405,3.676166875137357e-05 -55.27829030680298,0.0008920388890842585,3.5991210017359895e-05 -56.094397942699786,0.0008733436136035167,3.52295844613152e-05 -56.92255428107405,0.0008548425069207234,3.4476849614416506e-05 -57.76293720438276,0.00083653801575651,3.373306240562573e-05 -58.61572722127159,0.0008184325563609509,3.299827892869662e-05 -59.48110750534737,0.000800528508896581,3.2272554211276276e-05 -60.35926393452222,0.0007828282118314908,3.155594198656727e-05 -61.25038513093903,0.0007653339563581487,3.084849446804594e-05 -62.154662501486214,0.0007480479808538593,3.0150262127760315e-05 -63.07229027891061,0.0007309724653988692,2.946129347875148e-05 -64.00346556353739,0.0007141095263682022,2.8781634862156953e-05 -64.94838836560596,0.0006974612111132784,2.8111330239564755e-05 -65.90726164823062,0.0006810294927492782,2.7450420991191147e-05 -66.88029137099595,0.0006648162650640064,2.6798945720453585e-05 -67.86768653419541,0.0006488233375638103,2.6156940065506204e-05 -68.86965922372325,0.0006330524306717322,2.552443651829404e-05 -69.88642465662909,0.0006175051710927069,2.4901464251667516e-05 -70.9182012273452,0.000602183087360155,2.4288048955080812e-05 -71.96521055459603,0.0005870876055777784,2.3684212679374504e-05 -73.0276775290007,0.0005722200453697942,2.308997369111693e-05 -74.1058303613775,0.0005575816160522003,2.250534633694982e-05 -75.19990063176267,0.000543173413036924,2.193034091835003e-05 -76.31012333915183,0.0005289964144800327,2.136496357718603e-05 -77.43673695197633,0.0005150514781843004,2.0809216192408404e-05 -78.57998345932468,0.000501339338765659,2.0263096288175396e-05 -79.74010842292014,0.00048786060509213233,1.972659695367215e-05 -80.91736102986584,0.0004746157580029779,1.9199706774840178e-05 -82.11199414616837,0.0004616051483147962,1.868240977818892e-05 -83.32426437105194,0.0004488289951204137,1.8174685386816172e-05 -84.55443209207371,0.00043628738438536527,1.7676508388719314e-05 -85.80276154105391,0.0004239802678457746,1.7187848917431437e-05 -87.06952085083071,0.0004119074622104565,1.670867244497274e-05 -88.35498211285339,0.00040006864866901087,1.6238939787059292e-05 -89.65942143562586,0.00038846337270666807,1.57786071204671e-05 -90.98311900401282,0.0003770910442256261,1.5327626012404133e-05 -92.32635913942174,0.00036595093797159555,1.4885943461698771e-05 -93.68943036087312,0.000355042194263267,1.4453501951570592e-05 -95.07262544697225,0.00034436382002142396,1.4030239513707703e-05 -96.47624149879653,0.0003339146900934329,1.3616089803334528e-05 -97.9005800037105,0.0003236935488679173,1.3210982184916361e-05 -99.3459469001234,0.00031369901217346305,1.281484182810985e-05 -100.81265264320263,0.0003039295694543192,1.2427589813534388e-05 -102.30101227155758,0.0002943835862151831,1.2049143247907406e-05 -103.81134547490768,0.0002850593067263258,1.167941538805645e-05 -105.34397666274975,0.0002759548569795147,1.131831577329329e-05 -106.89923503403887,0.0002670682478844346,1.096575036561085e-05 -108.4774546478982,0.0002583973786945962,1.0621621697140846e-05 -110.07897449537265,0.0002499400406510476,1.0285829024290798e-05 -111.70413857224207,0.0002416939208315869,9.958268487962003e-06 -113.35329595290844,0.00023365660619260463,9.638833279236129e-06 -115.02680086537593,0.00022582558779014325,9.327413809906162e-06 -116.72501276733597,0.00021819826516632625,9.02389788722025e-06 -118.44829642337646,0.0002107719508868581,8.728170892200065e-06 -120.19702198333087,0.0002035438752149544,8.44011596089328e-06 -121.97156506178386,0.00019651119090674963,8.159614167919522e-06 -123.7723068187509,0.00018967097811297879,7.886544711671966e-06 -125.59963404154878,0.00018302024937153605,7.6207851005422736e-06 -127.45393922787503,0.00017655595467537587,7.362211339544447e-06 -129.33562067011377,0.00017027498660013925,7.110698116724199e-06 -131.24508254088624,0.00016417418547586752,6.866118988753184e-06 -133.1827349798645,0.00015825034458719208,6.628346565123271e-06 -135.14899418186647,0.00015250021538648387,6.397252690373572e-06 -137.14428248625205,0.00014692051270458005,6.172708623802956e-06 -139.1690284676386,0.0001415079199439126,5.9545852161427135e-06 -141.22366702795605,0.00013625909423910557,5.742753082687741e-06 -143.30863948986115,0.00013117067157041495,5.537082772410212e-06 -145.42439369152947,0.00012623927181574325,5.337444932606957e-06 -147.57138408284976,0.000121461503727347,5.143710468659744e-06 -149.75007182303577,0.00011683396981983387,4.955750698518394e-06 -151.96092487968022,0.00011235327115651857,4.773437501546741e-06 -154.2044181292713,0.0001080160120217603,4.596643461403621e-06 -156.48103345919287,0.00010381880446748629,4.425242002663772e-06 -158.7912598712307,9.975827272272873e-05,4.25910752091658e-06 -161.1355935866068,9.583105745566253e-05,4.098115506114259e-06 -163.51453815256437,9.203381987832816e-05,3.942142658975031e-06 -165.92860455052647,8.836324568495188e-05,3.791067000280756e-06 -168.37831130585138,8.481604881553177e-05,3.644767972942339e-06 -170.86418459920836,8.13889750371434e-05,3.5031265367399956e-06 -173.38675837959778,7.80788053362244e-05,3.366025255678538e-06 -175.9465744790398,7.488235911592625e-05,3.233348377930677e-06 -178.54418272895632,7.179649719346349e-05,3.104981908373153e-06 -181.18014107827133,6.881812459324926e-05,2.9808136737517225e-06 -183.85501571325332,6.594419313247406e-05,2.860733380541177e-06 -186.5693811791304,6.317170379664983e-05,2.7446326655952433e-06 -189.32382050349736,6.049770890353079e-05,2.632405139709561e-06 -192.1189253215464,5.791931405468074e-05,2.523946424246718e-06 -194.95529600314666,5.5433679874833944e-05,2.419154180997607e-06 -197.83354178179928,5.30380235400524e-05,2.3179281354766703e-06 -200.75428088549705,5.072962009652625e-05,2.220170093870291e-06 -203.71814066951544,4.850580357269455e-05,2.125783953877718e-06 -206.72575775116442,4.6363967888167335e-05,2.0346757097020646e-06 -209.77777814652958,4.4301567563713416e-05,1.9467534514654746e-06 -212.8748574092321,4.231611823732883e-05,1.8619273593370458e-06 -216.01766077123727,4.040519699212192e-05,1.7801096926748613e-06 -219.20686328574192,3.856644250243183e-05,1.7012147744941871e-06 -222.44314997217123,3.679755500524234e-05,1.6251589715828718e-06 -225.72721596331652,3.5096296104549474e-05,1.5518606705918363e-06 -229.05976665464496,3.346048841689666e-05,1.4812402504337258e-06 -232.44151785581437,3.1888015066791046e-05,1.4132200513259013e-06 -235.8731959444225,3.0376819041168605e-05,1.3477243408154636e-06 -239.3555380220308,2.8924902412464473e-05,1.2846792771233545e-06 -242.88929207248717,2.7530325440191657e-05,1.224012870142793e-06 -246.47521712258828,2.619120556120168e-05,1.1656549404231566e-06 -250.11408340511355,2.490571627902293e-05,1.109537076465206e-06 -253.80667252426588,2.367208596282749e-05,1.0555925906465637e-06 -257.5537776235551,2.2488596566669595e-05,1.0037564740879719e-06 -261.35620355616004,2.135358227966887e-05,9.539653507611355e-07 -265.2147670578054,2.0265428117778174e-05,9.061574311279699e-07 -269.130296922191,1.9222568467678925e-05,8.602724655888899e-07 -273.1036341790118,1.8223485593188593e-05,8.162516980045615e-07 -277.1356322746047,1.7266708114346846e-05,7.74037819541354e-07 -281.22715725526353,1.635080946906819e-05,7.335749230756389e-07 -285.3790879532599,1.5474406366915864e-05,6.948084583763064e-07 -289.59231617561073,1.4636157244163555e-05,6.576851882683558e-07 -293.86774689563254,1.383476072887382e-05,6.221531459634495e-07 -298.20629844732196,1.3068954124237203e-05,5.881615937258349e-07 -302.60890272261065,1.2337511917886969e-05,5.556609830242024e-07 -307.0765053715277,1.1639244324341073e-05,5.246029163021378e-07 -311.610066005319,1.097299586712028e-05,4.949401104815462e-07 -316.2105584025658,1.0337644006464679e-05,4.6662636229530435e-07 -320.87897071834556,9.732097817918785e-06,4.396165155272774e-07 -325.6163056964811,9.155296726385954e-06,4.138664302198782e-07 -330.42358088492347,8.606209299571539e-06,3.8933295389167627e-07 -335.30182885431424,8.083832104046174e-06,3.659738947902355e-07 -340.25209741977477,7.587188626472597e-06,3.4374799718848657e-07 -345.27544986597024,7.115328261856031e-06,3.2261491871660025e-07 -350.3729651754958,6.667325370006591e-06,3.0253520970561253e-07 -355.5457382606347,6.24227840074626e-06,2.834702945040362e-07 -360.79488019853875,5.839309087759652e-06,2.653824547144594e-07 -366.1215184698795,5.457561710381235e-06,2.482348142837581e-07 -371.5267972010242,5.096202422036519e-06,2.3199132636808907e-07 -377.01187740978685,4.754418643516215e-06,2.166167618823698e-07 -382.5779372548044,4.431418518763651e-06,2.020766996335462e-07 -388.22617228860156,4.126430430399725e-06,1.883375179275921e-07 -393.95779571438476,3.838702571802334e-06,1.753663875320931e-07 -399.77403864663074,3.567502572195779e-06,1.6313126586920942e-07 -405.67615037552173,3.3121171708974613e-06,1.5160089230810637e-07 -411.66539863528453,3.0718519366116483e-06,1.4074478442139994e-07 -417.74306987649175,2.8460310274557316e-06,1.3053323506690997e-07 -423.9104695423823,2.6339969872528663e-06,1.209373101540194e-07 -430.16892234926235,2.4351105735255665e-06,1.1192884695318835e-07 -436.5197725710451,2.2487506125770124e-06,1.0348045280767969e-07 -442.96438432799243,2.074313877048731e-06,9.556550410826592e-08 -449.5041418797182,1.9112149813930966e-06,8.815814539459284e-08 -456.14044992251837,1.7588862907938558e-06,8.123328845090311e-08 -462.8747338910904,1.6167778392053302e-06,7.476661126894652e-08 -469.70844026470684,1.484357252357055e-06,6.873455675702702e-08 -476.6430368779108,1.3611096717823245e-06,6.311433108120746e-08 -483.6800132357927,1.2465376761723756e-06,5.788390153262121e-08 -490.8208808339322,1.14016119662815e-06,5.302199382350977e-08 -498.06717348305335,1.0415174226759823e-06,4.850808872398612e-08 -505.42044763847775,9.501606962255829e-07,4.43224179614081e-08 -512.8822827344409,8.656623909762307e-07,4.04459593146275e-08 -520.4542815233443,7.876107751143374e-07,3.6860430846079054e-08 -528.1380704200157,7.15610855488919e-07,3.354828422560431e-08 +0.0,0.022336306518358873,0.004243384136458535 +0.01,0.022139583786214518,0.004178032429053984 +0.010147636193407446,0.022136716873797,0.004177083976284079 +0.010297452031375274,0.02213380873292283,0.004176121999306634 +0.010449479693346081,0.022130858786862617,0.004175146312302539 +0.010603751833847482,0.022127866451292146,0.0041741567271044834 +0.01076030158950613,0.022124831134206456,0.004173153053173308 +0.010919162586165206,0.022121752235833056,0.004172135097574314 +0.011080368946107054,0.022118629148544858,0.004171102664953543 +0.011243955295382385,0.02211546125677237,0.004170055557513982 +0.011409956771247759,0.02211224793691547,0.004168993574991768 +0.011578409029712812,0.02210898855725465,0.0041679165146323695 +0.011749348253198937,0.022105682477861835,0.004166824171166732 +0.011922811158311009,0.02210232905051058,0.004165716336787425 +0.012098835003723893,0.0220989276185859,0.0041645928011248175 +0.012277457598185349,0.022095477516993624,0.004163453351223198 +0.012458717308637094,0.022091978072069435,0.00416229777151701 +0.012642653068455759,0.022088428601487152,0.004161125843807008 +0.012829304385815535,0.022084828414167052,0.004159937347236538 +0.01301871135217426,0.022081176810183522,0.004158732058267834 +0.013210914650884798,0.02207747308067237,0.004157509750658367 +0.013405955565933525,0.02207371650773798,0.0041562701954372715 +0.013603875990807904,0.022069906364359897,0.004155013160881859 +0.013804718437494885,0.022066041914299332,0.004153738412494216 +0.014008526045612224,0.022062122412005284,0.004152445712977922 +0.014215342591674549,0.02205814710252032,0.00415113482221485 +0.014425212498496305,0.02205411522138643,0.0041498054972421506 +0.014638180844733454,0.022050025994550394,0.004148457492229326 +0.014854293374566077,0.022045878638268943,0.004147090558455506 +0.015073596507523922,0.02204167235901418,0.004145704444286858 +0.015296137348456982,0.02203740635337844,0.004144298895154203 +0.015521963697653346,0.02203307980797924,0.004142873653530836 +0.015751124061106365,0.022028691899364232,0.004141428458910544 +0.01598366766093338,0.0220242417939161,0.004139963047785894 +0.01621964444594837,0.02201972864775737,0.004138477153626702 +0.016459105102390573,0.022015151606655455,0.004136970506858841 +0.016702101064811573,0.022010509805927607,0.004135442834843272 +0.016948684527123104,0.022005802370346137,0.004133893861855447 +0.017198908453807917,0.02200102841404366,0.00413232330906492 +0.01745282659129625,0.02199618704041869,0.00413073089451543 +0.01771049347951018,0.021991277342041367,0.0041291163331052105 +0.01797196446357841,0.021986298400559524,0.004127479336567801 +0.018237295705724067,0.021981249286605078,0.004125819613453125 +0.018506544197327973,0.021976129059700828,0.004124136869109117 +0.01877976777116999,0.021970936768167575,0.00412243080566369 +0.01905702511385113,0.021965671449031877,0.004120701122007218 +0.01933837577839904,0.02196033212793423,0.004118947513775476 +0.019623880197059598,0.02195491781903787,0.004117169673333127 +0.01991359969427737,0.02194942752493812,0.0041153672897576805 +0.02020759649986765,0.021943860236572625,0.004113540048824075 +0.020505933762383056,0.02193821493313208,0.004111687632989791 +0.0208086755626774,0.021932490581972025,0.0041098097213806166 +0.021115886927669823,0.021926686138525227,0.004107905989776993 +0.021427633844312143,0.021920800546215355,0.004105976110601083 +0.021743983273762434,0.021914832736371265,0.00410401975290447 +0.022065003165767778,0.021908781628142592,0.004102036582356643 +0.022390762473259496,0.021902646128416463,0.004100026261234161 +0.02272133116716374,0.021896425131735314,0.004097988448410625 +0.02305678025143074,0.021890117520216038,0.004095922799347471 +0.02339718177828606,0.021883722163470492,0.004093828966085592 +0.02374260886370688,0.021877237918527442,0.004091706597237793 +0.024093135703126836,0.021870663629755902,0.004089555337982232 +0.024448837587372714,0.021863998128790307,0.004087374830056708 +0.02480979091883637,0.02185724023445704,0.004085164711753977 +0.025176073227885534,0.021850388752703037,0.004082924617918057 +0.025547763189516758,0.021843442476525907,0.004080654179941567 +0.025924940640254267,0.021836400185906296,0.004078353025764162 +0.02630768659529838,0.02182926064774211,0.004076020779872043 +0.026696083265926974,0.021822022615784826,0.0040736570632986715 +0.027090214077153937,0.021814684830578163,0.004071261493626634 +0.02749016368564833,0.021807246019398978,0.004068833684990756 +0.027896017997918004,0.021799704896200544,0.004066373248082457 +0.028307864188761824,0.02179206016155847,0.004063879790155463 +0.02872579071999421,0.021784310502619184,0.004061352915032821 +0.029149887359446097,0.02177645459305111,0.004058792223115339 +0.02958024520024654,0.021768491092998825,0.0040561973113914475 +0.030016956680388868,0.021760418649040086,0.004053567773448539 +0.030460115602585748,0.021752235894145888,0.004050903199485836 +0.030909817154417412,0.021743941447643904,0.004048203176328832 +0.03136615792877725,0.021735533915185158,0.0040454672874453475 +0.03182923594461939,0.02172701188871405,0.004042695112963224 +0.03229915066801251,0.02171837394644215,0.004039886229689754 +0.0327760030335044,0.02170961865282558,0.0040370402111328625 +0.03325989546580215,0.02170074455854622,0.004034156627524078 +0.0337509319017722,0.021691750200497073,0.004031235045843383 +0.03424921781276536,0.02168263410177147,0.004028275029845927 +0.03475486022727128,0.02167339477165676,0.004025276140090752 +0.03526796775390751,0.021664030705632387,0.004022237933971464 +0.035788650604747854,0.021654540385372404,0.004019159965749022 +0.03631702061899528,0.021644922278752723,0.004016041786586588 +0.036853191287004095,0.02163517483986337,0.004012882944586551 +0.03739727777465707,0.02162529650902545,0.0040096829848298215 +0.03794939694810219,0.021615285712813716,0.004006441449417298 +0.03850966739885478,0.021605140864083956,0.004003157877513773 +0.03907820946927015,0.021594860362006363,0.003999831805394138 +0.039655145278392354,0.021584442592104205,0.003996462766492051 +0.04024059874818446,0.02157388592629855,0.003993050291451139 +0.0408346956301463,0.02156318872295887,0.003989593908178679 +0.041437563532324966,0.021552349326959874,0.003986093141901972 +0.04204933194672413,0.02154136606974477,0.003982547515227298 +0.042670132277118175,0.02153023726939485,0.0039789565482016755 +0.04330009786727676,0.021518961230706124,0.003975319758377353 +0.04393936402960622,0.021507536245272553,0.003971636660879165 +0.044588068074213734,0.021495960591576563,0.003967906768474794 +0.04524634933840065,0.021484232535086772,0.003964129591647969 +0.04591434921659115,0.021472350328363223,0.003960304638674711 +0.046592211190702934,0.021460312211170292,0.003956431415702663 +0.04728008086096605,0.021448116410597556,0.00395250942683351 +0.047978105977196976,0.02143576114118851,0.003948538174208682 +0.04868643647053421,0.02142324460507784,0.00394451715809822 +0.04940522448564252,0.021410564992136956,0.003940445876993054 +0.05013462441339257,0.0213977204801284,0.003936323827700572 +0.05087479292402313,0.021384709234869022,0.003932150505443707 +0.05162588900079261,0.021371529410402323,0.003927925403963458 +0.05238807397412787,0.021358179149180173,0.003923648015624996 +0.05316151155627666,0.021344656582253877,0.003919317831527378 +0.05394636787647212,0.021330959829475287,0.003914934341616933 +0.05474281151661612,0.021317086999707725,0.003910497034804369 +0.05555101354748957,0.021303036191046953,0.003906005399085672 +0.05637114756549725,0.0212888054910529,0.0039014589216668457 +0.057203389729955215,0.021274392976991716,0.003896857089092544 +0.05804791880092853,0.021259796716088842,0.003892199387378648 +0.058904916177627914,0.021245014765793182,0.0038874853021488684 +0.05977456593737288,0.021230045174052314,0.0038827143187753774 +0.06065705487513049,0.02121488597959964,0.003877885922523558 +0.061552572543637565,0.02119953521225294,0.0038729995987009163 +0.0624613112941154,0.021183990893224983,0.0038680548328102037 +0.06338346631758546,0.02116825103544651,0.0038630511107067603 +0.06431923568679523,0.02115231364390134,0.0038579879187601984 +0.06526882039876271,0.021136176715974394,0.0038528647440204127 +0.06623242441794946,0.02111983824181225,0.0038476810743879562 +0.06721025472007074,0.021103296204697166,0.0038424363987888677 +0.06820252133655234,0.021086548581434116,0.003837130207353954 +0.0692094373996442,0.02106959334275136,0.003831761991602564 +0.07023121918819963,0.021052428453714897,0.003826331244630897 +0.07126808617413061,0.021035051874156687,0.003820837461304898 +0.07232026106954885,0.02101746155911709,0.0038152801384577066 +0.07338796987460298,0.02099965545930157,0.003809658775091767 +0.07447144192602165,0.020981631521552167,0.0038039728725855404 +0.07557090994637383,0.02096338768933345,0.0037982219349049057 +0.07668661009405578,0.020944921903233504,0.003792405468819261 +0.07781878201401651,0.02092623210148015,0.0037865229841222365 +0.07896766888923183,0.02090731622047231,0.0037805739938572263 +0.08013351749293841,0.020888172195326998,0.003774558014547528 +0.08131657824163904,0.020868797960441877,0.003768474566431264 +0.08251710524889051,0.020849191450073662,0.0037623231737009713 +0.08373535637988529,0.02082935059893258,0.0037561033647479265 +0.08497159330683954,0.0208092733427928,0.0037498146724111456 +0.08622608156519827,0.020788957619119423,0.0037434566342310813 +0.08749909061067085,0.020768401367711516,0.0037370287927079695 +0.08879089387710812,0.02074760253136196,0.003730530695564831 +0.09010176883523419,0.020726559056533905,0.003723961896015063 +0.09143199705224533,0.020705268894053854,0.003717321953034614 +0.0927818642522888,0.02068372999982175,0.0037106104316386806 +0.09415166037783423,0.020661940335537882,0.003703826903162929 +0.09554167965195169,0.02063989786944689,0.0036969709455490904 +0.09695222064150846,0.02061760057709875,0.003690042143634984 +0.09838358632129957,0.020595046442126886,0.0036830400894488275 +0.09983608413912452,0.020572233457043485,0.0036759643825077766 +0.1013100260818251,0.020549159624051898,0.0036688146301206634 +0.10280572874229811,0.02052582295587609,0.0036615904476947677 +0.10432351338749725,0.020502221476607477,0.0036542914590465695 +0.10586370602743932,0.020478353222568593,0.003646917296716424 +0.10742663748522892,0.020454216243194004,0.0036394676022869564 +0.109012643468117,0.020429808601927966,0.0036319420267051264 +0.11062206463960864,0.020405128377139196,0.0036243402306078303 +0.11225524669263505,0.0203801736630523,0.003616661884650877 +0.11391254042380648,0.020354942570695696,0.003608906669841222 +0.11559430180876074,0.020329433228866284,0.0036010742778722796 +0.11730089207862449,0.02030364378511016,0.003593164411462194 +0.11903267779760304,0.020277572406719506,0.003585176784694837 +0.12079003094171635,0.02025121728174537,0.0035771111233634145 +0.1225733289786966,0.020224576620025917,0.003568967165316412 +0.124382954949066,0.020197648654230172,0.0035607446608057875 +0.126219297548411,0.020170431640916524,0.0035524433728370405 +0.1280827512108719,0.02014292386160606,0.003544063077521103 +0.1299737161938645,0.020115123623870152,0.0035356035644276925 +0.13189259866405273,0.020087029262431742,0.00352706463693991 +0.1338398107845904,0.020058639140280388,0.0035184461126098743 +0.13581577080365137,0.020029951649799836,0.003509747823515013 +0.1378209031442663,0.020000965213908532,0.0035009696166148374 +0.13985563849548593,0.019971678287211612,0.0034921113541078676 +0.14192041390489007,0.019942089357164464,0.003483172913788311 +0.14401567287246278,0.019912196945247033,0.0034741541894023195 +0.146141865445853,0.019881999608147925,0.0034650550910033727 +0.14829944831704195,0.019851495938958214,0.003455875545306488 +0.1504888849204372,0.019820684568373624,0.00344661549604087 +0.15271064553241562,0.01978956416590468,0.003437274904300643 +0.15496520737233557,0.019758133441093794,0.0034278537488932597 +0.15725305470504036,0.01972639114473865,0.0034183520266851883 +0.15957467894487484,0.019694336070120656,0.003408769752944437 +0.1619305787612385,0.01966196705423784,0.0033991069616795115 +0.1643212601856959,0.019629282979040923,0.003389363705974335 +0.16674723672066893,0.01959628277267168,0.0033795400583186913 +0.169209029449734,0.019562965410702526,0.0033696361109336625 +0.1717071671495467,0.019529329917375788,0.003359651976091633 +0.1742421864034202,0.019495375366842153,0.003349587786430315 +0.17681463171657935,0.019461100884396332,0.0033394436952602774 +0.17942505563311698,0.019426505647709223,0.0033292198768654652 +0.18207401885467622,0.019391588888054718,0.0033189165267961305 +0.1847620903608862,0.019356349891530178,0.0033085338621536486 +0.18748984753157458,0.019320788000268766,0.0032980721218666175 +0.19025787627078505,0.01928490261364262,0.0032875315669576737 +0.1930667711326254,0.019248693189454488,0.0032769124808003916 +0.19591713544897413,0.01921215924511717,0.003266215169365724 +0.19880958145907188,0.019175300358818457,0.0032554399614572794 +0.20174473044102645,0.019138116170669975,0.0032445872089348527 +0.2047232128452589,0.019100606383838314,0.0032336572869255797 +0.2077456684299205,0.019062770765656604,0.003222650594022001 +0.21081274639830838,0.01902460914871438,0.0032115675524664383 +0.21392510553831004,0.018986121431924335,0.0032004086083210212 +0.21708341436390624,0.018947307581563405,0.003189174231622588 +0.2202883512587641,0.018908167632286768,0.0031778649165219277 +0.2235406046219487,0.018868701688112055,0.003166481181406585 +0.22684087301578715,0.018828909923372317,0.0031550235690065535 +0.2301898653159144,0.01878879258363509,0.00314349264648219 +0.2335883008635358,0.018748349986585755,0.003131889005493678 +0.23703690961993634,0.01870758252287255,0.0031202132622512864 +0.24053643232327168,0.018666490656911457,0.0031084660575458347 +0.24408762064767323,0.01862507492764825,0.003096648056758602 +0.24769123736470353,0.018583335949275668,0.0030847599498500487 +0.251348056507194,0.01854127441190321,0.0030728024513267034 +0.25505886353550233,0.01849889108217719,0.003060776300185507 +0.25882445550622335,0.018456186803848723,0.0030486822598350407 +0.26264564124339274,0.018413162498287304,0.0030365211179929482 +0.2665232415122159,0.018369819164937188,0.003024293686559006 +0.2704580891953636,0.018326157881714766,0.003012000801463164 +0.2744510294718692,0.01828217980534388,0.0029996433224881275 +0.2785029199986674,0.01823788617162715,0.0029872221330657545 +0.2826146310948135,0.018193278295650463,0.00297473814004693 +0.2867870459284223,0.01814835757191868,0.002962192273444287 +0.2910210607063663,0.018103125474419852,0.0029495854861474433 +0.2953175848667748,0.018057583556615586,0.002936918753610179 +0.29967754127437585,0.018011733451355587,0.0029241930735093725 +0.304101866418721,0.017965576870713675,0.002911409465375117 +0.30859151061533713,0.01791911560574332,0.0028985689701919574 +0.31314743820984725,0.017872351526150507,0.002885672649970802 +0.3177706277851068,0.017825286579881583,0.002872721587291397 +0.3224620723713955,0.01777792279262442,0.002859716884815249 +0.3272227796597146,0.017730262267220756,0.002846659664768756 +0.33205377221823096,0.017682307182987588,0.0028335510683966986 +0.3369560877119192,0.017634059794946477,0.00282039225538596 +0.3419307791254445,0.017585522432958453,0.002807184403259631 +0.3469789149893369,0.01753669750076329,0.0027939287067416797 +0.35210157960950406,0.017487587474921885,0.0027806263770923313 +0.35729987330013363,0.01743819490366,0.0027672786414145497 +0.36257491262003305,0.017388522405612672,0.0027538867419319127 +0.36792783061245915,0.01733857266846807,0.002740451935238357 +0.3733597770484874,0.017288348447509982,0.0027269754915203895 +0.3788719186739765,0.01723785256405847,0.0027134586937522373 +0.38446543946017664,0.017187087903807883,0.002699902836864765 +0.3901415408580389,0.017136057415062442,0.002686309226888875 +0.3959014420562786,0.01708476410686884,0.0026726791800742514 +0.40174638024324927,0.017033211047046356,0.0026590140219844324 +0.4076776108726826,0.016981401360114723,0.0026453150865692445 +0.41369640793335133,0.016929338225120365,0.0026315837152157294 +0.41980406422271266,0.016877024873361884,0.002617821255778775 +0.4260018916245943,0.01682446458601588,0.0026040290615928045 +0.4322912213909769,0.016771660691664542,0.002590208490465856 +0.4386734044279388,0.016718616563726533,0.0025763609036576272 +0.4451498115858216,0.01666533561779315,0.0025624876648430244 +0.4517218339536788,0.016611821308872007,0.002548590139062809 +0.45839088315807397,0.01655807712854072,0.002534669691663258 +0.4651583916662875,0.016504106602013194,0.002520727687226496 +0.4720258130940017,0.016449913285122037,0.0025067654884934924 +0.478994622517527,0.01639550076122003,0.0024927844552817056 +0.4860663167906394,0.016340872638004787,0.0024787859433993776 +0.4932424148660941,0.016286032544270336,0.0024647713035586523 +0.500524458121887,0.016230984126590263,0.0024507418802896404 +0.507914010692331,0.016175731045936878,0.0024366990108577145 +0.5154126598040234,0.016120276974241628,0.002422644024186258 +0.5230220161167707,0.016064625590901924,0.0024085782397872415 +0.5307437140695477,0.01600878057924014,0.0023945029667019634 +0.5385794122315635,0.015952745622920816,0.002380419502454311 +0.5465307936585122,0.015896524402332305,0.002366329132019019 +0.5545995662540815,0.015840120590939408,0.002352233126807232 +0.5627874631367991,0.01578353785161411,0.0023381327436718976 +0.571096243012294,0.015726779832951558,0.0023240292239353195 +0.5795276905510569,0.015669850165578713,0.0023099237924412764 +0.5880836167717735,0.015612752458463513,0.0022958176566340955 +0.5967658594303206,0.015555490295232814,0.002281712005666974 +0.6055762834145021,0.015498067230507015,0.002267608009541812 +0.6145167811446166,0.015440486786260223,0.0022535068182828128 +0.6235892729799353,0.01538275244821481,0.002239409561145942 +0.6327957076311831,0.015324867662278849,0.0022253173458663396 +0.6421380625791069,0.015266835831036267,0.002211231257945643 +0.6516183444992281,0.015208660310298348,0.0021971523599810623 +0.6612385896928608,0.015150344405726612,0.0021830816910379997 +0.6710008645244973,0.015091891369536228,0.0021690202660677943 +0.6809072658656474,0.015033304397289747,0.0021549690753721136 +0.690959921545235,0.014974586624790929,0.00214092908411531 +0.7011609908066395,0.014915741125088196,0.00212690123188597 +0.7115126647714881,0.014856770905597654,0.0021128864323086546 +0.7220171669102935,0.014797678905355093,0.002098885572706725 +0.7326767535200398,0.014738467992406787,0.002084899513816913 +0.7434937142088223,0.014679140961348406,0.0020709290895561767 +0.7544703723876376,0.014619700531021459,0.002056975106841164 +0.7656090857694389,0.014560149342376419,0.0020430383454603704 +0.7769122468755543,0.014500489956511382,0.002029119557999043 +0.7883822835495875,0.014440724852894903,0.002015219469816456 +0.8000216594789005,0.014380856427781419,0.0020013387790752575 +0.8118328747237982,0.014320886992827199,0.00198747815682216 +0.8238184662545227,0.01426081877391438,0.001973638247119233 +0.8359810084961804,0.014200653910190396,0.0019598196672247934 +0.8483231138817098,0.014140394453329165,0.0019460230078227332 +0.8608474334130148,0.0140800423670207,0.0019322488332989673 +0.8735566572303816,0.014019599526694265,0.0019184976820635405 +0.8864535151903041,0.013959067719480413,0.0019047700669167318 +0.8995407774518387,0.013898448644416125,0.0018910664754574619 +0.9128212550716155,0.013837743912896916,0.0018773873705320804 +0.9262978006076336,0.01377695504937869,0.0018637331907216115 +0.9399733087319735,0.013716083492331832,0.001850104350865348 +0.9538507168525525,0.013655130595448853,0.0018365012426187213 +0.9679330057440604,0.013594097629106449,0.001822924235043219 +0.9822232001882084,0.013532985782081572,0.0018093736752262009 +0.996724369623435,0.013471796163520733,0.0017958498889283053 +1.011439628804199,0.013410529805160698,0.001782353181256319 +1.0263721384700082,0.013349187663797496,0.0017688838373592453 +1.0415251060243254,0.01328777062400051,0.0017554421231454737 +1.056901786223498,0.013226279501066777,0.00174202828601892 +1.0725054818758548,0.013164715044210042,0.001728642555632168 +1.0883395445511317,0.013103077939978306,0.0017152851446546704 +1.1044073753003638,0.01304136881589247,0.0017019562495542361 +1.1207124253864091,0.01297958824429778,0.0016886560513901196 +1.1372581970252567,0.012917736746419106,0.0016753847166161742 +1.1540482441382791,0.01285581479661003,0.001662142397892697 +1.1710861731155913,0.01279382282678495,0.0016489292349057196 +1.1883756435906792,0.012731761231022529,0.0016357453551927024 +1.2059203692264653,0.012669630370328198,0.0016225908749737086 +1.223724118512975,0.012607430577542543,0.0016094658999873204 +1.2417907155767887,0.012545162162381511,0.0015963705263307595 +1.2601240410024352,0.012482825416594632,0.0015833048413037688 +1.2787280326659158,0.012420420619225285,0.0015702689242560132 +1.2976066865805347,0.012357948041958383,0.00155726284743787 +1.3167640577552144,0.012295407954538618,0.001544286676854638 +1.3362042610654865,0.012232800630243507,0.001531340473124301 +1.3559314721373397,0.012170126351394084,0.0015184242923390204 +1.3759499282441108,0.012107385414886332,0.0015055381869307403 +1.3962639292166314,0.012044578137726388,0.0014926822065411901 +1.4168778383667981,0.011981704862551986,0.0014798563988967076 +1.4377960834247825,0.011918765963123149,0.0014670608106883076 +1.4590231574900794,0.011855761849764732,0.0014542954884573303 +1.4805636199965941,0.01179269297474406,0.0014415604794870665 +1.5024220976919787,0.011729559837566654,0.0014288558327005842 +1.5246032856314273,0.011666362990173757,0.0014161815995650051 +1.5471119481861382,0.011603103042025676,0.0014035378350022493 +1.569952920066676,0.011539780665055333,0.00139092459830618 +1.5931311073614307,0.011476396598477129,0.0013783419540659713 +1.6166514885904137,0.011412951653436898,0.0013657899730951904 +1.6405191157746106,0.011349446717489301,0.0013532687333660809 +1.6647391155211217,0.011285882758889965,0.0013407783209481243 +1.6893166901243233,0.011222260830690427,0.001328318830949881 +1.7142571186832871,0.011158582074625027,0.0013158903684627988 +1.7395657582356887,0.011094847724779516,0.0013034930495054414 +1.765248044908474,0.01103105911103259,0.0012911270019663502 +1.7913094950854962,0.010967217662262328,0.001278792366543543 +1.8177557065924,0.010903324909310655,0.0012664892976783544 +1.8445923598989962,0.010839382487700227,0.0012542179644811303 +1.8718252193393905,0.010775392140098936,0.0012419785516460827 +1.899460134350123,0.010711355718528761,0.0012297712603523657 +1.9275030407265876,0.010647275186316443,0.0012175963091483311 +1.9559599618980046,0.010583152619785003,0.0012054539348156455 +1.984837010221204,0.010518990209685766,0.001193344393209974 +2.0141403882935314,0.01045479026237209,0.001181267960074675 +2.0438763902851163,0.01039055520071668,0.001169224931824002 +2.074051403290821,0.010326287564775752,0.0011572156262921994 +2.1046719087021435,0.010261990012203735,0.001145240383444901 +2.1357444835993804,0.01019766531842392,0.0011332995660492595 +2.1672758021643364,0.010133316376560314,0.0011213935602993076 +2.1992726371139,0.01006894619713764,0.001109522776393142 +2.231741861154765,0.010004557907556583,0.0010976876490586757 +2.2646904484596586,0.009940154751352114,0.0010858886380248397 +2.298125476165337,0.009875740087243519,0.0010741262284353465 +2.3320541258927094,0.009811317387984802,0.0010624009312023516 +2.366483685289402,0.009746890239024811,0.0010507132832975857 +2.401421549595097,0.009682462336986759,0.001039063847978844 +2.43687522322998,0.009618037487976641,0.0010274532149500042 +2.472852321406642,0.009553619605730567,0.0010158820004530639 +2.509360571765766,0.009489212709610928,0.0010043508472910494 +2.546407816035989,0.00942482092246097,0.0009928604247809545 +2.5840020117182405,0.009360448468327653,0.0009814114286362593 +2.6221512337949666,0.00929609967006223,0.0009700045807789092 +2.6608636764645794,0.009231778946807457,0.000958640629080995 +2.7001476549015164,0.009167490811380552,0.0009473203470367162 +2.7400116070422866,0.009103239867559952,0.0009360445333655515 +2.7804640953978805,0.00903903080728397,0.0009248140115478753 +2.8215138088929455,0.0089748684077685,0.0009136296292945445 +2.863169564732095,0.008910757528550752,0.0009024922579523234 +2.905440310293805,0.00884670310846507,0.0008914027918471639 +2.948335125052237,0.008782710162556414,0.000880362147567708 +2.991863222527455,0.008718783778936466,0.0008693712631914885 +3.0360339522644235,0.008654929115586631,0.0008584310974565254 +3.0808568018412315,0.008591151397111599,0.0008475426288811253 +3.126341398906959,0.008527455911446335,0.0008367068548348275 +3.1724975132496356,0.00846384800651911,0.0008259247905634812 +3.219335058894712,0.008400333086872184,0.0008151974681715068 +3.266864096234547,0.008336916610241414,0.0008045259355643914 +3.315094834189299,0.00827360408409555,0.0007939112553544416 +3.3640376323997385,0.008210401062135369,0.0007833545037328019 +3.4137030034524276,0.008147313140752458,0.0007728567693106228 +3.4641016151377557,0.008084345955447105,0.0007624191519322086 +3.5152442927413077,0.008021505177204218,0.0007520427614628314 +3.5671420213690688,0.00795879650882627,0.0007417287165537706 +3.619805948306936,0.007896225681221766,0.0007314781433869867 +3.6732473854151024,0.007833798449647636,0.000721292174401658 +3.727477811557756,0.00777152058990404,0.0007111719470046738 +3.7825088750686664,0.00770939789447984,0.0007011186022669654 +3.8383523962531676,0.007647436168647142,0.0006911332836074071 +3.8950203699270842,0.007585641226503425,0.0006812171354658308 +3.9525249679931336,0.007524018886959767,0.0006713713019665392 +4.0108785420553765,0.007462574969674128,0.0006615969255735479 +4.070093626072243,0.007401315290928758,0.0006518951457386312 +4.1301829390487645,0.007340245659450973,0.0006422670975431066 +4.191159387768518,0.007279371872177232,0.0006327139103342112 +4.25303606956592,0.00721869970996047,0.000623236706356779 +4.315826275139448,0.007158234933221233,0.0006138365993808907 +4.379543491406389,0.007097983277543584,0.0006045146933260692 +4.444201404399749,0.00703795044921719,0.0005952720808825985 +4.509813902207909,0.006978142120727333,0.0005861098421304917 +4.576395077957709,0.006918563926195426,0.0005770290431566665 +4.643959232841533,0.006859221456772652,0.0005680307346708922 +4.7125208791891415,0.006800120255990164,0.0005591159506211331 +4.782094743584802,0.006741265815069676,0.0005502857068089735 +4.852695770030462,0.006682663568198697,0.0005415409995058964 +4.924339123155634,0.006624318887775162,0.0005328828040712779 +4.997040191474639,0.006566237079626731,0.0005243120735730967 +5.070814590691972,0.006508423378210381,0.0005158297374124503 +5.145678167056446,0.006450882941798318,0.0005074366999531487 +5.221647000764848,0.006393620847656771,0.0004991338391577634 +5.298737409415881,0.006336642087224418,0.0004909220052316928 +5.37696595151506,0.006279951561297627,0.0004828020192769369 +5.456349430031372,0.006223554075230116,0.0004747746719574577 +5.536904896006444,0.006167454334154654,0.0004668407221781373 +5.6186496522169875,0.0061116569382350105,0.000459000895779509 +5.701601256891326,0.006056166377956354,0.00045125588425060033 +5.785777527480786,0.006000987029462643,0.00044360634346235473 +5.871196544486747,0.0059461231499497,0.00043605289242424695 +5.9578766553442435,0.00589157887312277,0.0004285961120668334 +6.045836478362854,0.005837358204727594,0.00042123654405309843 +6.135094906725791,0.005783465018164107,0.0004139746896215636 +6.225671112548031,0.005729903050191853,0.00040681100846421845 +6.31758455099436,0.005676675896736413,0.00039974591764241097 +6.410854964458209,0.005623787008806168,0.00039277979054390454 +6.505502386802199,0.005571239688528619,0.00038591295588435873 +6.601547147661251,0.005519037085315668,0.0003791456967565165 +6.6990098768093,0.005467182192167098,0.00037247824973040474 +6.797911508590401,0.0054156778421215294,0.00036591080400786316 +6.898273286415296,0.005364526704864137,0.00035944350063468874 +7.000116767324358,0.005313731283500148,0.00035307643177365537 +7.103463826617898,0.005263293911503331,0.00034680964004162707 +7.208336662554833,0.005213216749848309,0.0003406431179139049 +7.3147578011207255,0.005163501784335602,0.00033457680719888223 +7.422750100866221,0.0051141508231180915,0.00032861059858596325 +7.532336757816883,0.005065165494437383,0.0003227443312696124 +7.643541310455589,0.005016547244578437,0.0003169777926522389 +7.756387644778411,0.004968297336050608,0.0003113107181285062 +7.870899999425174,0.0049204168460029495,0.00030574279095347244 +7.987102970885753,0.00487290666488146,0.0003002736421967973 +8.105021518783241,0.004825767495335533,0.00029490285078505974 +8.224680971235099,0.004778999851380683,0.0002896299436340218 +8.346107030293489,0.004732604057824211,0.0002844543958724535 +8.469325777465853,0.004686580249959975,0.0002793756311588995 +8.594363679317114,0.0046409283735382115,0.00027439302209251635 +8.721247593154473,0.004595648185015722,0.00026950589071885166 +8.85000477279619,0.004550739252091232,0.0002647135091311673 +8.980662874425525,0.0045062009545303264,0.0002600151001676111 +9.1132499625311,0.004462032485283572,0.00025540983820426035 +9.247794515934963,0.004418232851900944,0.0002508968500437485 +9.384325433909662,0.004374800878244938,0.0002464752158988702 +9.522872042385572,0.004331735206504022,0.00024214397047024605 +9.663464100249971,0.004289034299507308,0.00023790210411678452 +9.806131805739012,0.004246696443340501,0.00023374856411736357 +9.95090580292411,0.0042047197502624156,0.00022968225602179826 +10.097817188294087,0.004163102161920257,0.00022570204508882584 +10.246897517434489,0.004121841452861164,0.00022180675780849695 +10.398178811805511,0.004080935234336379,0.0002179951835060179 +10.551693565620015,0.004040380958393497,0.00021426607602374357 +10.707474752823012,0.004000175922251205,0.00021061815547769136 +10.865555834174323,0.003960317272949832,0.00020705011008460464 +11.02597076443568,0.003920802012270125,0.00020356059805527976 +11.188753999663986,0.0038816270019114414,0.00020014824954955169 +11.353940504612257,0.0038427889689195646,0.00019681166868802796 +11.521565760239813,0.0038042845113533336,0.00019354943561538204 +11.691665771333351,0.003766110104178178,0.00019036010860973366 +11.864277074240528,0.0037282621053736373,0.00018724222623239968 +12.03943674471775,0.0036907367622410455,0.00018419430951205722 +12.217182405893736,0.0036535302178965084,0.00018121486415716164 +12.397552236350792,0.0036166385179334693,0.0001783023827902596 +12.580584978325271,0.003580057617238311,0.00017545534719769597 +12.766319946029155,0.0035437833869417104,0.00017267223058807225 +12.954797034094483,0.003507811621487635,0.00016995149985271025 +13.146056726142461,0.0034721380458014304,0.00016729161782131816 +13.340140103479062,0.0034367583225377836,0.000164691045506007 +13.537088853919041,0.0034016680593889413,0.00016214824432681218 +13.736945280740137,0.003366862816433297,0.000159661678311904 +13.939752311769622,0.0033323381135041074,0.00015722981626573948 +14.145553508604852,0.0032980894375581175,0.0001548511338985165 +14.354393075970028,0.0032641122500237517,0.00015252411591042944 +14.566315871211069,0.003230401994108721,0.00015024725802440206 +14.781367413930674,0.0031969541020470662,0.00014801906896119092 +14.999593895765633,0.0031637640022660705,0.00014583807235099512 +15.221042190308488,0.0031308271264538358,0.00014370280857599574 +15.445759863175615,0.0030981389165090434,0.00014161183653855835 +15.67379518222409,0.0030656948313549197,0.00013956373535017723 +15.905197127919243,0.0030334903536004313,0.00013755710593662106 +16.140015403855344,0.0030015209960324724,0.00013559057255512977 +16.378300447431617,0.002969782307923859,0.00013366278421994565 +16.620103440685845,0.0029382698811430785,0.0001317724160329064 +16.86547632128793,0.0029069793560527993,0.0001299181704162893 +17.11447179369578,0.002875906427185525,0.00012809877824558028 +17.367143340475817,0.002845046848685888,0.0001263129998803319 +17.623545233790747,0.002814396439510635,0.00012455962609177212 +17.883732547056827,0.0027839510883785373,0.0001228374788863371 +18.147761166773257,0.0027537067584640844,0.00012114541222480151 +18.415687804526243,0.0027236594918300184,0.00011948231263718875 +18.687570009170262,0.0026938054135954245,0.00011784709973413833 +18.963466179189165,0.002664140735837352,0.0001162387266158962 +19.243435575239797,0.002634661761225453,0.00011465618018057084 +19.5275383328808,0.0026053648863904187,0.00011309848133375174 +19.815835475489248,0.002576246605028417,0.00011156468510202743 +20.108388927368193,0.002547303510744916,0.00011005388065335262 +20.405261527047497,0.0025185322996425577,0.00010856519122760317 +20.70651704078117,0.002489929772658883,0.00010709777398101495 +21.0122201762439,0.0024614928376607047,0.00010565081974853101 +21.322436596429878,0.002433218511302962,0.0001042235527283757 +21.637232933756728,0.002405103920660719,0.00010281523009343227 +21.956676804377757,0.0023771463046437227,0.00010142514153422356 +22.280836822705346,0.002349343015203635,0.00010005260873847892 +22.609782616149012,0.002321691518344493,9.869698481241578e-05 +22.943584840070816,0.002294189394947514,9.735765364897387e-05 +23.2823151929617,0.0022668343414215227,9.603402924830355e-05 +23.62604643184182,0.0022396241701905743,9.472555499584401e-05 +23.974852387888287,0.0022125568100303285,9.343170290331469e-05 +24.32880798229361,0.002185630306264733,9.215197281790177e-05 +24.687989242358288,0.0021588428208344024,9.088589160483798e-05 +25.052473317820862,0.002132192632247786,8.96330123084622e-05 +25.422338497429326,0.0021056781354258417,8.839291329669896e-05 +25.79766422575693,0.0020792978414505094,8.716519739372139e-05 +26.178531120266346,0.0020530503772266053,8.594949100536218e-05 +26.565020988625793,0.00202693448506624,8.474544324160708e-05 +26.957216846280755,0.002000949022204003,8.355272504025956e-05 +27.35520293428515,0.001975092960250461,8.237102829559867e-05 +27.759064737395782,0.0019493653845906065,8.120006499556913e-05 +28.16888900243378,0.0019237654937330386,8.003956637074913e-05 +28.584763756917397,0.00189829259861465,7.888928205803662e-05 +29.006778327969634,0.001872946121864727,7.77489792816856e-05 +29.435023361505138,0.0018477255970313021,7.661844205401045e-05 +29.869590841700322,0.0018226306677716455,7.549747039776256e-05 +30.310574110750974,0.0017976610870078166,7.438587959187221e-05 +30.758067888921527,0.0017728167160471764,7.328349944194509e-05 +31.212168294890343,0.0017480975236668836,7.219017357660169e-05 +31.67297286639539,0.0017235035851604296,7.110575877046365e-05 +32.14058058118459,0.001699035081343426,7.003012429431377e-05 +32.61509187827572,0.001674692297515039,6.89631512926938e-05 +33.09660867952999,0.0016504756223707192,6.790473218896357e-05 +33.58523441154415,0.0016263855468611566,6.685477011761107e-05 +34.08107402786587,0.0016024226629918145,6.58131783833965e-05 +34.584234031537015,0.001578587662556827,6.477987994672358e-05 +35.094822497969844,0.0015548813358005993,6.375480693445642e-05 +35.61294909816091,0.0015313045700001055,6.273790017525558e-05 +36.138725122247465,0.0015078583479605845,6.172910875837274e-05 +36.67226350341213,0.0014845437464171415,6.072838961473484e-05 +37.213678842139984,0.0014613619343347387,5.973570711906178e-05 +37.763087430834055,0.0014383141710989885,5.875103271168787e-05 +38.32060727879415,0.0014154018045903353,5.777434453871018e-05 +38.88635813756443,0.0013926262691343764,5.6805627109051966e-05 +39.460461526655294,0.0013699890833213826,5.584487096701604e-05 +40.04304075964497,0.0013474918476884428,5.489207237890188e-05 +40.634220970666284,0.001325136242258158,5.3947233032278434e-05 +41.2341291412849,0.001302924023928307,5.301035974653156e-05 +41.84289412777393,0.0012808570237075885,5.208146419335054e-05 +42.46064668879146,0.0012589371437931951,5.1160562625868046e-05 +43.087519513466624,0.0012371663544867722,5.024767561523421e-05 +43.723647249900345,0.00121554669094609,4.934282779347409e-05 +44.369166534086865,0.001194080249770676,4.8446047601559254e-05 +45.024216019262276,0.001172769185420542,4.755736704170681e-05 +45.688936405686114,0.0011516157064680914,4.6676821433009705e-05 +46.36347047086315,0.0011306220716842744,4.5804449169592854e-05 +47.04796310021082,0.0011097905859610946,4.4940291480587286e-05 +47.74256131817973,0.0010891235960735072,4.408439219130701e-05 +48.44741431983349,0.0010686234862848723,4.323679748511235e-05 +49.16267350289485,0.0010482926738010529,4.239755566553673e-05 +49.888492500264896,0.0010281336040793138,4.1566716918348825e-05 +50.62502721302239,0.0010081487459991574,4.0744333073313696e-05 +51.372435843910345,0.0009883405869031748,3.993045736550349e-05 +52.13087893131666,0.00096871162751698,3.912514419609537e-05 +52.90051938375706,0.0009492643767581223,3.8328448892673395e-05 +53.68152251486652,0.0009300013464448149,3.7540427469128335e-05 +54.474056078907616,0.0009109250459160439,3.6761136385321394e-05 +55.27829030680298,0.0008920379765754309,3.599063230674258e-05 +56.094397942699786,0.0008733426263718899,3.522897186445774e-05 +56.92255428107405,0.0008548414642307603,3.447621141569128e-05 +57.76293720438276,0.0008365369344496605,3.373240680544391e-05 +58.61572722127159,0.0008184314510738084,3.299761312958701e-05 +59.48110750534737,0.0008005273922659556,3.227188449991401e-05 +60.35926393452222,0.0007828270946864706,3.155527381166281e-05 +61.25038513093903,0.0007653328478993402,3.0847832514048873e-05 +62.154662501486214,0.000748046888820073,3.0149610384370857e-05 +63.07229027891061,0.0007309713962216132,2.9460655306266325e-05 +64.00346556353739,0.0007141084853143918,2.8781013052705646e-05 +64.94838836560596,0.0006974602024166335,2.8110727074317836e-05 +65.90726164823062,0.0006810285197309044,2.7449838293642352e-05 +66.88029137099595,0.0006648153302427019,2.6798384905896262e-05 +67.86768653419541,0.0006488224427566386,2.6156402186838275e-05 +68.86965922372325,0.0006330515770854277,2.5523922308296792e-05 +69.88642465662909,0.0006175043594064753,2.490097416191251e-05 +70.9182012273452,0.0006021823178004272,2.4287583191624617e-05 +71.96521055459603,0.0005870868779854748,2.3683771235405424e-05 +73.0276775290007,0.0005722193592606349,2.3089556376719248e-05 +74.1058303613775,0.0005575809706705876,2.250495280615169e-05 +75.19990063176267,0.0005431728074039021,2.1929970693619874e-05 +76.31012333915183,0.0005289958474358026,2.136461607153973e-05 +77.43673695197633,0.0005150509484257606,2.080889072928624e-05 +78.57998345932468,0.0005013388448793945,2.026279211924323e-05 +79.74010842292014,0.0004878601455832738,1.972631327469651e-05 +80.91736102986584,0.0004746153313203108,1.9199442739781147e-05 +82.11199414616837,0.0004616047528724837,1.8682164511648812e-05 +83.32426437105194,0.00044882862931666423,1.817445799497583e-05 +84.55443209207371,0.0004362870466183613,1.7676297968887125e-05 +85.80276154105391,0.00042397995652714547,1.7187654566323907e-05 +87.06952085083071,0.00041190717577656294,1.670849326583854e-05 +88.35498211285339,0.0004000683855902816,1.6238774895752334e-05 +89.65942143562586,0.00038846313149521264,1.5778455650567614e-05 +90.98311900401282,0.00037709082344132474,1.5327487119480312e-05 +92.32635913942174,0.00036595073622685143,1.4885816326795453e-05 +93.68943036087312,0.0003550420102265867,1.4453385784005346e-05 +95.07262544697225,0.00034436365241997745,1.4030133553248933e-05 +96.47624149879653,0.00033391453771472966,1.3615993321830658e-05 +97.9005800037105,0.0003236934105607193,1.3210894487439815e-05 +99.3459469001234,0.0003136988868480453,1.2814762253674537e-05 +100.81265264320263,0.00030392945608217543,1.2427517735440521e-05 +102.30101227155758,0.00029438348382826424,1.2049078073762978e-05 +103.81134547490768,0.00028505921441588923,1.1679356559520376e-05 +105.34397666274975,0.00027595477389465064,1.1318262765581218e-05 +106.89923503403887,0.00026706817323033483,1.0965702686800756e-05 +108.4774546478982,0.0002583973117306151,1.0621578887312057e-05 +110.07897449537265,0.0002499399806886039,1.0285790654526753e-05 +111.70413857224207,0.0002416938672319479,9.958234159243865e-06 +113.35329595290844,0.0002336565583645878,9.63880262125162e-06 +115.02680086537593,0.00022582554518776708,9.327386479795218e-06 +116.72501276733597,0.00021819822728643703,9.023873568276613e-06 +118.44829642337646,0.00021077191726675572,8.728149292545764e-06 +120.19702198333087,0.00020354384543003646,8.4400968121406e-06 +121.97156506178386,0.00019651116456819126,8.159597223833458e-06 +123.7723068187509,0.00018967095486546121,7.886529746844068e-06 +125.59963404154878,0.00018302022889103624,7.620771909085348e-06 +127.45393922787503,0.00017655593666702563,7.362199733816109e-06 +129.33562067011377,0.0001702749707961623,7.110687926085799e-06 +131.24508254088624,0.0001641741716335992,6.8661100583695995e-06 +133.1827349798645,0.00015825033248718676,6.628338754807787e-06 +135.14899418186647,0.00015250020483071263,6.397245873481256e-06 +137.14428248625205,0.00014692050351472065,6.172702686174929e-06 +139.1690284676386,0.0001415079119597325,5.954580055103043e-06 +141.22366702795605,0.00013625908731693763,5.742748606093915e-06 +143.30863948986115,0.00013117066558172578,5.537078897757629e-06 +145.42439369152947,0.00012623926664579162,5.337441586187294e-06 +147.57138408284976,0.00012146149927393193,5.143707584772606e-06 +149.75007182303577,0.00011683396599212827,4.955748218735341e-06 +151.96092487968022,0.0001123532678739869,4.773435374026345e-06 +154.2044181292713,0.0001080160092131563,4.5966416402560585e-06 +156.48103345919287,0.00010381880206992824,4.42524044736314e-06 +158.7912598712307,9.975827068084784e-05,4.259106195759013e-06 +161.1355935866068,9.583105572082156e-05,4.098114379719771e-06 +163.51453815256437,9.203381840790612e-05,3.942141703830901e-06 +165.92860455052647,8.836324444169111e-05,3.791066192324229e-06 +168.37831130585138,8.481604776694364e-05,3.6447672911803658e-06 +170.86418459920836,8.138897415496911e-05,3.503125962903748e-06 +173.38675837959778,7.807880459594665e-05,3.366024773910425e-06 +175.9465744790398,7.488235849632878e-05,3.2333479745016296e-06 +178.54418272895632,7.179649667623476e-05,3.104981571428006e-06 +181.18014107827133,6.881812416262634e-05,2.980813393080565e-06 +183.85501571325332,6.59441927749247e-05,2.860733147374628e-06 +186.5693811791304,6.317170350058828e-05,2.744632472421704e-06 +189.32382050349736,6.0497708659065234e-05,2.6324049801125553e-06 +192.1189253215464,5.791931385338936e-05,2.5239462927605546e-06 +194.95529600314666,5.543367970956686e-05,2.4191540729796905e-06 +197.83354178179928,5.303802340475702e-05,2.317928046994879e-06 +200.75428088549705,5.07296199860939e-05,2.2201700216039547e-06 +203.71814066951544,4.850580348282604e-05,2.1257838950308224e-06 +206.72575775116442,4.636396781525558e-05,2.034675661927411e-06 +209.77777814652958,4.4301567504741315e-05,1.9467534127986247e-06 +212.8748574092321,4.2316118189780526e-05,1.8619273281389707e-06 +216.01766077123727,4.0405196953906116e-05,1.7801096675823135e-06 +219.20686328574192,3.8566442471815734e-05,1.7012147543768925e-06 +222.44314997217123,3.679755498079481e-05,1.6251589555067286e-06 +225.72721596331652,3.509629608509241e-05,1.5518606577873866e-06 +229.05976665464496,3.346048840146346e-05,1.4812402402692336e-06 +232.44151785581437,3.188801505459136e-05,1.4132200432844413e-06 +235.8731959444225,3.037681903155837e-05,1.3477243344754987e-06 +239.3555380220308,2.8924902404920675e-05,1.284679272142319e-06 +242.88929207248717,2.7530325434291093e-05,1.224012866243275e-06 +246.47521712258828,2.6191205556603118e-05,1.165654937381304e-06 +250.11408340511355,2.4905716275452246e-05,1.1095370741010378e-06 +253.80667252426588,2.3672085960065268e-05,1.0555925888159016e-06 +257.5537776235551,2.248859656454087e-05,1.0037564726757463e-06 +261.35620355616004,2.1353582278034644e-05,9.539653496758553e-07 +265.2147670578054,2.0265428116528468e-05,9.061574302971679e-07 +269.130296922191,1.922256846672704e-05,8.602724649553908e-07 +273.1036341790118,1.822348559246646e-05,8.162516975234311e-07 +277.1356322746047,1.726670811380125e-05,7.740378191774207e-07 +281.22715725526353,1.6350809468657662e-05,7.335749228014829e-07 +285.3790879532599,1.5474406366608272e-05,6.948084581706395e-07 +289.59231617561073,1.4636157243934067e-05,6.576851881147194e-07 +293.86774689563254,1.383476072870334e-05,6.221531458491717e-07 +298.20629844732196,1.306895412411111e-05,5.881615936412021e-07 +302.60890272261065,1.2337511917794124e-05,5.556609829618006e-07 +307.0765053715277,1.1639244324273019e-05,5.24602916256333e-07 +311.610066005319,1.0972995867070624e-05,4.949401104480767e-07 +316.2105584025658,1.0337644006428615e-05,4.6662636227096073e-07 +320.87897071834556,9.732097817892716e-06,4.396165155096542e-07 +325.6163056964811,9.155296726367201e-06,4.1386643020718056e-07 +330.42358088492347,8.606209299558113e-06,3.8933295388257156e-07 +335.30182885431424,8.083832104036613e-06,3.6597389478373886e-07 +340.25209741977477,7.587188626465817e-06,3.4374799718387394e-07 +345.27544986597024,7.1153282618512505e-06,3.2261491871334166e-07 +350.3729651754958,6.6673253700032365e-06,3.025352097033222e-07 +355.5457382606347,6.24227840074392e-06,2.834702945024348e-07 +360.79488019853875,5.839309087758026e-06,2.6538245471334554e-07 +366.1215184698795,5.457561710380112e-06,2.482348142829875e-07 +371.5267972010242,5.096202422035749e-06,2.3199132636755882e-07 +377.01187740978685,4.754418643515689e-06,2.1661676188200696e-07 +382.5779372548044,4.431418518763293e-06,2.0207669963329923e-07 +388.22617228860156,4.126430430399483e-06,1.88337517927425e-07 +393.95779571438476,3.838702571802171e-06,1.753663875319807e-07 +399.77403864663074,3.5675025721956715e-06,1.6313126586913422e-07 +405.67615037552173,3.312117170897389e-06,1.5160089230805637e-07 +411.66539863528453,3.0718519366116013e-06,1.4074478442136688e-07 +417.74306987649175,2.8460310274557007e-06,1.3053323506688823e-07 +423.9104695423823,2.6339969872528464e-06,1.2093731015400518e-07 +430.16892234926235,2.4351105735255538e-06,1.1192884695317915e-07 +436.5197725710451,2.2487506125770035e-06,1.0348045280767376e-07 +442.96438432799243,2.074313877048725e-06,9.556550410826212e-08 +449.5041418797182,1.911214981393093e-06,8.815814539459043e-08 +456.14044992251837,1.7588862907938535e-06,8.123328845090159e-08 +462.8747338910904,1.6167778392053287e-06,7.476661126894558e-08 +469.70844026470684,1.4843572523570541e-06,6.873455675702644e-08 +476.6430368779108,1.361109671782324e-06,6.311433108120708e-08 +483.6800132357927,1.246537676172375e-06,5.788390153262098e-08 +490.8208808339322,1.14016119662815e-06,5.302199382350963e-08 +498.06717348305335,1.0415174226759823e-06,4.8508088723986034e-08 +505.42044763847775,9.501606962255829e-07,4.4322417961408046e-08 +512.8822827344409,8.656623909762307e-07,4.044595931462747e-08 +520.4542815233443,7.876107751143374e-07,3.6860430846079035e-08 +528.1380704200157,7.15610855488919e-07,3.35482842256043e-08 535.9352998510522,6.492842017966216e-07,3.049269711094208e-08 -543.8476446093208,5.882687496511008e-07,2.7677564560856214e-08 -551.8768042136934,5.32218581748753e-07,2.508748946778685e-08 +543.8476446093208,5.882687496511008e-07,2.767756456085621e-08 +551.8768042136934,5.32218581748753e-07,2.5087489467786848e-08 560.0245032740909,4.808036866708144e-07,2.2707772007609364e-08 -568.2924918619192,4.3370969517731855e-07,2.052439811444977e-08 +568.2924918619192,4.3370969517731855e-07,2.0524398114449765e-08 576.6825458859716,3.906375941486116e-07,1.8524026998449625e-08 585.1964674738837,3.5130341861236584e-07,1.669397773379805e-08 -593.8360853592164,3.1543792255629715e-07,1.5022214953180806e-08 -602.6032552742578,2.8278622946703304e-07,1.3497333692954983e-08 -611.4998603486217,2.5310746375250235e-07,1.210854344078792e-08 +593.8360853592164,3.154379225562972e-07,1.5022214953180806e-08 +602.6032552742578,2.82786229467033e-07,1.3497333692954981e-08 +611.4998603486217,2.531074637525023e-07,1.210854344078792e-08 620.5278115137272,2.261743643975876e-07,1.0845651444144286e-08 629.6890479132611,2.0177288236974813e-07,9.699045343820582e-09 -638.9855373196883,1.7970176343278864e-07,8.659675201697036e-09 -648.4192765569173,1.5977211814225472e-07,7.719034995959088e-09 +638.9855373196883,1.7970176343278867e-07,8.659675201697034e-09 +648.4192765569173,1.5977211814225472e-07,7.71903499595909e-09 657.9922919292046,1.4180698088584053e-07,6.8691436602509644e-09 667.7066396563914,1.2564085989681484e-07,6.1025257455490175e-09 677.5644063155661,1.111192802087136e-07,5.412191785001304e-09 -687.5677092892466,9.809832153638189e-08,4.791618442594697e-09 -697.7186972201808,8.644415306306624e-08,4.234728526311772e-09 -708.0195504728598,7.603256708707773e-08,3.735870945468199e-09 +687.5677092892466,9.809832153638189e-08,4.791618442594696e-09 +697.7186972201808,8.644415306306622e-08,4.234728526311772e-09 +708.0195504728598,7.603256708707773e-08,3.735870945468198e-09 718.4724816018461,6.674851343609951e-08,3.2898006902232613e-09 -729.0797358270158,5.848563649420256e-08,2.891658908886136e-09 -739.8435915158166,5.1145816607825894e-08,2.5369531556564994e-09 +729.0797358270158,5.848563649420256e-08,2.8916589088861358e-09 +739.8435915158166,5.1145816607825894e-08,2.5369531556565e-09 750.7663606726453,4.463871754424354e-08,2.221537877904013e-09 -761.8503894354524,3.8881341571280725e-08,1.941595208073456e-09 +761.8503894354524,3.8881341571280725e-08,1.9415952080734566e-09 773.0980585796754,3.379759361218405e-08,1.6936161208697974e-09 -784.5117840296159,2.9317855806505298e-08,1.4743820115998036e-09 +784.5117840296159,2.9317855806505298e-08,1.4743820115998038e-09 796.0940173773575,2.537857367854436e-08,1.2809467464954312e-09 807.847246409361,2.192185498111821e-08,1.110619230586793e-09 -819.7739956408174,1.8895082146022234e-08,9.609465333003207e-10 -831.8768268578996,1.6250539135135553e-08,8.296976064923558e-10 +819.7739956408174,1.8895082146022238e-08,9.609465333003207e-10 +831.8768268578996,1.6250539135135553e-08,8.296976064923556e-10 844.1583396680161,1.3945053349364778e-08,7.148476241564995e-10 856.6211720581896,1.1939653117942783e-08,6.145629676208424e-10 -869.2680009616791,1.0199241159378543e-08,5.271868747347112e-10 +869.2680009616791,1.0199241159378545e-08,5.271868747347112e-10 882.1015428329673,8.69228427879694e-09,4.512257663831851e-10 895.1245542312367,7.390519445594785e-09,3.8533625870652503e-10 -908.3398324124604,6.268676281199737e-09,3.2831286468018935e-10 -921.7502159302336,5.3042158800359745e-09,2.790763842633134e-10 -935.3585852454767,4.4770857882119155e-09,2.3666297817787716e-10 +908.3398324124604,6.268676281199737e-09,3.283128646801894e-10 +921.7502159302336,5.304215880035975e-09,2.790763842633134e-10 +935.3585852454767,4.4770857882119155e-09,2.366629781778771e-10 949.1678633451382,3.769490874438506e-09,2.0021391655992676e-10 963.1810163700337,3.165679746611796e-09,1.68965990245511e-10 -977.4010542519522,2.65174629556042e-09,1.4224256932924244e-10 -991.8310313601726,2.215445884749154e-09,1.194452908693279e-10 +977.4010542519522,2.65174629556042e-09,1.4224256932924246e-10 +991.8310313601726,2.2154458847491538e-09,1.194452908693279e-10 1006.4740471575121,1.8460256512039322e-09,1.0004635521137359e-10 1021.3332468660842,1.5340683384270016e-09,8.358140836140348e-11 -1036.4118221428619,1.2713490463549853e-09,6.964298614971859e-11 +1036.4118221428619,1.2713490463549853e-09,6.96429861497186e-11 1051.7130117652264,1.0507042561246508e-09,5.7874494580334375e-11 1067.2401023266361,8.659124681369983e-10,4.796469974219497e-11 1082.9964289425639,7.115857801546952e-10,3.964269995095299e-11 1098.9853759668576,5.830717273900187e-10,3.2673352374617354e-11 -1115.2103777186774,4.763647081542698e-10,2.6853126251471367e-11 -1131.6749192201637,3.880263260297283e-10,2.2006354911543492e-11 -1148.382536944998,3.1511399205754146e-10,1.7981859139694054e-11 +1115.2103777186774,4.763647081542697e-10,2.6853126251471367e-11 +1131.6749192201637,3.880263260297283e-10,2.200635491154349e-11 +1148.382536944998,3.1511399205754146e-10,1.798185913969405e-11 1165.3368195780126,2.551171474678774e-10,1.4649914944558305e-11 1182.5414087860163,2.0590048837283543e-10,1.1899539498403378e-11 1200.0,1.656535979704816e-10,9.636069863807214e-12 diff --git a/tests/integration/test-data/reference/test6/emission_probability.csv b/tests/integration/test-data/reference/test6/emission_probability.csv index 7c78015b..787e5dc2 100644 --- a/tests/integration/test-data/reference/test6/emission_probability.csv +++ b/tests/integration/test-data/reference/test6/emission_probability.csv @@ -29,7 +29,8 @@ F22,4.23,0.04,0.055,0.055 F23,2.23,0.14,0.07,0.07 F24,0.382,0.016,0.029500000000000002,0.029500000000000002 F25,0.075,0.01,0.195,0.05 -F26,0.0022,0.0001,0.021599999999999998,0.019534584715319648 +F26,0.0082,0.0009,0.135,0.04 +F26_m1,0.0022,0.0001,0.021599999999999998,0.019534584715319648 F27,0.0057,0.0008,0.8,0.2 F29,0.00267,0.00021,0.6,0.4 Ne26,0.195,0.002,0.0013,0.0003 @@ -96,7 +97,7 @@ Ca52,4.6,0.3,0.01,0.01 Ca53,0.461,0.09,0.4,0.1 Sc54,0.526,0.015,0.16,0.09 Sc55,0.096,0.002,0.17,0.07 -Sc56,0.069,0.007,0.24,0.12 +Sc56_m1,0.069,0.007,0.24,0.12 V59,0.092,0.009,0.06,0.03 V61,0.0483,0.001,0.2,0.1 V63,0.0196,0.001,0.67,0.33 @@ -106,10 +107,12 @@ Mn66,0.0639,0.0011,0.05,0.013999999999999999 Mn68,0.0352,0.002,0.15,0.09 Mn69,0.0258,0.0028,0.4,0.2 Mn70,0.0199,0.0017,0.5,0.2 -Co68,1.6,0.3,0.06,0.03 -Co70,0.508,0.007,0.03,0.015 +Co68_m1,1.6,0.3,0.06,0.03 +Co70,0.113,0.007,0.03,0.015 +Co70_m1,0.508,0.007,0.03,0.015 Co71,0.08,0.003,0.188,0.08121576201698781 -Co72,0.0478,0.0005,0.074,0.03059411708155671 +Co72,0.0515,0.0003,0.074,0.03059411708155671 +Co72_m1,0.0478,0.0005,0.074,0.03059411708155671 Co73,0.0407,0.0013,0.26,0.09848857801796104 Co74,0.0314,0.0015,0.22999999999999998,0.1522366578718805 Co75,0.0265,0.0012,0.08,0.08 @@ -132,7 +135,8 @@ Zn82,0.1779,0.0025,0.69,0.07 Zn83,0.0997,0.003,0.71,0.29 Zn84,0.0536,0.0081,0.73,0.26 Ga79,2.852,0.01,0.00084,0.00029 -Ga80,1.3,0.2,0.0045000000000000005,0.0007000000000000001 +Ga80,1.9,0.1,0.0045000000000000005,0.0007000000000000001 +Ga80_m1,1.3,0.2,0.0045000000000000005,0.0007000000000000001 Ga81,1.217,0.004,0.125,0.008 Ga82,0.601,0.002,0.22699999999999998,0.02 Ga83,0.31,0.001,0.67,0.06 @@ -173,7 +177,8 @@ Rb94,2.704,0.015,0.1039,0.0022 Rb95,0.378,0.002,0.08800000000000001,0.004 Rb96,0.2016,0.001,0.141,0.008 Rb97,0.169,0.001,0.249,0.015 -Rb98,0.096,0.003,0.07204,0.009001088823025803 +Rb98,0.115,0.006,0.07204,0.009001088823025803 +Rb98_m1,0.096,0.003,0.07204,0.009001088823025803 Rb99,0.0578,0.0009,0.191,0.023 Rb100,0.051,0.002,0.059,0.012041594578792296 Rb101,0.0315,0.0045,0.28,0.05 @@ -184,11 +189,15 @@ Sr99,0.269,0.002,0.00096,0.00016 Sr100,0.2007,0.0013,0.0111,0.0021 Sr101,0.115,0.001,0.0252,0.0025 Sr102,0.072,0.008,0.055,0.02 -Y97,1.17,0.03,0.0003972,0.0003972 -Y98,2.32,0.08,0.03096,0.009216078341680914 +Y97,3.74,0.05,0.00057594,9.93e-05 +Y97_m1,1.17,0.03,0.0003972,0.0003972 +Y98,0.548,0.002,0.0033,0.0003 +Y98_m1,2.32,0.08,0.03096,0.009216078341680914 Y99,1.478,0.007,0.0197,0.003 -Y100,0.94,0.03,0.0051,0.0006 +Y100,0.732,0.005,0.0051,0.0006 +Y100_m1,0.94,0.03,0.0051,0.0006 Y101,0.432,0.012,0.019799999999999998,0.002 +Y102_m1,0.396,0.036,0.06,0.017 Y102,0.3,0.01,0.04,0.015 Y103,0.236,0.016,0.081,0.02 Y104,0.212,0.02,0.34,0.1 @@ -198,13 +207,15 @@ Zr104,0.92,0.028,0.005,0.005 Zr105,0.666,0.028,0.01,0.01 Zr106,0.175,0.007,0.035,0.035 Zr107,0.15,0.003,0.115,0.115 -Nb104,0.98,0.07,0.0005,0.0003 +Nb104,4.9,0.4,0.0006,0.0003 +Nb104_m1,0.98,0.07,0.0005,0.0003 Nb105,2.91,0.07,0.017,0.009000000000000001 Nb106,1.084,0.021,0.045,0.003 Nb107,0.287,0.011,0.07400000000000001,0.01 Nb108,0.192,0.006,0.063,0.005 Nb109,0.113,0.011,0.31,0.05 -Nb110,0.094,0.009,0.2,0.08 +Nb110,0.075,0.001,0.2,0.08 +Nb110_m1,0.094,0.009,0.2,0.08 Mo109,0.692,0.026,0.013000000000000001,0.006 Mo110,0.287,0.01,0.02,0.006999999999999999 Mo111,0.186,0.009,0.06,0.06 @@ -213,7 +224,8 @@ Tc110,0.911,0.014,0.0004,0.0002 Tc111,0.294,0.02,0.0085,0.002 Tc112,0.305,0.01,0.017,0.004 Tc113,0.152,0.008,0.021,0.003 -Tc114,0.1,0.02,0.006500000000000001,0.004 +Tc114,0.09,0.02,0.006500000000000001,0.004 +Tc114_m1,0.1,0.02,0.006500000000000001,0.004 Tc115,0.078,0.002,0.19,0.05 Tc116,0.057,0.003,0.17,0.07 Ru116,0.203,0.006,0.004,0.004 @@ -222,7 +234,8 @@ Ru118,0.099,0.003,0.023,0.023 Ru119,0.0692,0.002,0.06,0.05 Ru120,0.045,0.002,0.06,0.03 Ru121,0.03,0.003,0.13,0.04 -Rh116,0.57,0.05,0.00525,0.00525 +Rh116,0.69,0.05,0.00525,0.00525 +Rh116_m1,0.57,0.05,0.00525,0.00525 Rh117,0.42,0.04,0.038,0.038 Rh118,0.286,0.01,0.021,0.009000000000000001 Rh119,0.189,0.006,0.034,0.009000000000000001 @@ -239,36 +252,49 @@ Pd125,0.0641,0.0017,0.037000000000000005,0.004 Pd126,0.0488,0.0008,0.049,0.009000000000000001 Pd127,0.038,0.002,0.09,0.03 Pd128,0.036,0.005,0.1,0.07 -Ag120,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 +Ag120,0.94,0.1,5e-06,5e-06 +Ag120_m1,1.52,0.07,5e-06,5e-06 +Ag120_m2,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 Ag121,0.777,0.012,0.0008,0.00013 -Ag122,0.2,0.05,0.0009299999999999999,6e-05 +Ag122,0.529,0.019,0.0009281399999999999,5.988e-05 +Ag122_m1,0.2,0.05,0.0009299999999999999,6e-05 Ag123,0.3,0.008,0.0085,0.0015 -Ag124,0.144,0.02,0.006500000000000001,0.009000000000000001 -Ag125,0.159,0.021,0.046,0.01 -Ag126,0.1026,0.0014,0.038,0.002 +Ag124,0.191,0.028,0.0115,0.011000000000000001 +Ag124_m1,0.144,0.02,0.006500000000000001,0.009000000000000001 +Ag125,0.176,0.003,0.012,0.002 +Ag125_m1,0.159,0.021,0.046,0.01 +Ag126_m1,0.1026,0.0014,0.038,0.002 Ag127,0.0891,0.0009,0.055,0.002 Ag128,0.0659,0.0024,0.09300000000000001,0.005 Ag129,0.052,0.003,0.179,0.013999999999999999 -Cd127,0.36,0.04,0.006,0.006 +Cd127_m1,0.36,0.04,0.006,0.006 Cd128,0.2461,0.0021,0.0095,0.0095 Cd129,0.151,0.004,0.0184,0.0015 Cd130,0.1287,0.0023,0.03,0.002 Cd131,0.083,0.015,0.035,0.01 Cd132,0.084,0.005,0.6,0.15 -In127,3.618,0.032,0.006999999999999999,0.0006 -In128,0.72,0.1,0.00019199999999999998,3.6e-05 -In129,1.165,0.01,0.035393499999999994,0.0061814 -In130,0.535,0.006,0.00975,0.0015 -In131,0.32,0.06,0.11879999999999999,0.0693 +In127,1.087,0.011,0.00015,0.00015 +In127_m1,3.618,0.032,0.006999999999999999,0.0006 +In128,0.84,0.06,0.00019199999999999998,3.6e-05 +In128_m1,0.72,0.1,0.00019199999999999998,3.6e-05 +In129,0.607,0.006,0.0023,0.001 +In129_m1,1.165,0.01,0.035393499999999994,0.0061814 +In130,0.275,0.008,0.012,0.0029 +In130_m1,0.535,0.006,0.00975,0.0015 +In130_m2,0.535,0.006,0.00975,0.0015 +In131,0.266,0.008,0.011049999999999999,0.0027 +In131_m1,0.33,0.015,0.011049999999999999,0.0027 +In131_m2,0.32,0.06,0.11879999999999999,0.0693 In132,0.2013,0.0012,0.12300000000000001,0.004 -In133,0.167,0.011,0.93,0.03 +In133,0.162,0.002,0.9,0.03 +In133_m1,0.167,0.011,0.93,0.03 In134,0.121,0.006,1.07,0.05 Sn133,1.42,0.06,0.000294,2.3999999999999997e-05 Sn134,0.902,0.028,0.17,0.13 Sn135,0.516,0.005,0.21,0.03 Sn136,0.361,0.005,0.27,0.04 Sn137,0.221,0.017,0.5,0.1 -Sb134,9.97,0.1,0.0008799999999999999,3.6e-05 +Sb134_m1,9.97,0.1,0.0008799999999999999,3.6e-05 Sb135,1.668,0.01,0.2,0.028999999999999998 Sb136,0.924,0.014,0.2518,0.07300246571178264 Sb137,0.506,0.025,0.49,0.08 diff --git a/tests/integration/test-data/reference/test6/group_parameters.csv b/tests/integration/test-data/reference/test6/group_parameters.csv index a89f96ee..83496460 100644 --- a/tests/integration/test-data/reference/test6/group_parameters.csv +++ b/tests/integration/test-data/reference/test6/group_parameters.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0005162901534403848,0.0,55.62467042504896,0.0 -0.002864501770157952,0.0,23.846979482961842,0.0 -0.001447419836816959,0.0,11.891823735756953,0.0 -0.0062191783496551,0.0,3.3402202687250897,0.0 -0.00637942325083527,0.0,1.1970997068732543,0.0 -0.005088589180538686,0.0,0.2516584132386145,0.0 +0.0005162918984856003,0.0,55.62465296410721,0.0 +0.002864771019369677,0.0,23.84650860822269,0.0 +0.0014471847819314463,0.0,11.889529589088033,0.0 +0.006105739898122469,0.0,3.356343295516046,0.0 +0.006286849352532197,0.0,1.1827383444309043,0.0 +0.005089588870204594,0.0,0.25162040090512916,0.0 diff --git a/tests/integration/test-data/reference/test6/half_life.csv b/tests/integration/test-data/reference/test6/half_life.csv index 7c78015b..787e5dc2 100644 --- a/tests/integration/test-data/reference/test6/half_life.csv +++ b/tests/integration/test-data/reference/test6/half_life.csv @@ -29,7 +29,8 @@ F22,4.23,0.04,0.055,0.055 F23,2.23,0.14,0.07,0.07 F24,0.382,0.016,0.029500000000000002,0.029500000000000002 F25,0.075,0.01,0.195,0.05 -F26,0.0022,0.0001,0.021599999999999998,0.019534584715319648 +F26,0.0082,0.0009,0.135,0.04 +F26_m1,0.0022,0.0001,0.021599999999999998,0.019534584715319648 F27,0.0057,0.0008,0.8,0.2 F29,0.00267,0.00021,0.6,0.4 Ne26,0.195,0.002,0.0013,0.0003 @@ -96,7 +97,7 @@ Ca52,4.6,0.3,0.01,0.01 Ca53,0.461,0.09,0.4,0.1 Sc54,0.526,0.015,0.16,0.09 Sc55,0.096,0.002,0.17,0.07 -Sc56,0.069,0.007,0.24,0.12 +Sc56_m1,0.069,0.007,0.24,0.12 V59,0.092,0.009,0.06,0.03 V61,0.0483,0.001,0.2,0.1 V63,0.0196,0.001,0.67,0.33 @@ -106,10 +107,12 @@ Mn66,0.0639,0.0011,0.05,0.013999999999999999 Mn68,0.0352,0.002,0.15,0.09 Mn69,0.0258,0.0028,0.4,0.2 Mn70,0.0199,0.0017,0.5,0.2 -Co68,1.6,0.3,0.06,0.03 -Co70,0.508,0.007,0.03,0.015 +Co68_m1,1.6,0.3,0.06,0.03 +Co70,0.113,0.007,0.03,0.015 +Co70_m1,0.508,0.007,0.03,0.015 Co71,0.08,0.003,0.188,0.08121576201698781 -Co72,0.0478,0.0005,0.074,0.03059411708155671 +Co72,0.0515,0.0003,0.074,0.03059411708155671 +Co72_m1,0.0478,0.0005,0.074,0.03059411708155671 Co73,0.0407,0.0013,0.26,0.09848857801796104 Co74,0.0314,0.0015,0.22999999999999998,0.1522366578718805 Co75,0.0265,0.0012,0.08,0.08 @@ -132,7 +135,8 @@ Zn82,0.1779,0.0025,0.69,0.07 Zn83,0.0997,0.003,0.71,0.29 Zn84,0.0536,0.0081,0.73,0.26 Ga79,2.852,0.01,0.00084,0.00029 -Ga80,1.3,0.2,0.0045000000000000005,0.0007000000000000001 +Ga80,1.9,0.1,0.0045000000000000005,0.0007000000000000001 +Ga80_m1,1.3,0.2,0.0045000000000000005,0.0007000000000000001 Ga81,1.217,0.004,0.125,0.008 Ga82,0.601,0.002,0.22699999999999998,0.02 Ga83,0.31,0.001,0.67,0.06 @@ -173,7 +177,8 @@ Rb94,2.704,0.015,0.1039,0.0022 Rb95,0.378,0.002,0.08800000000000001,0.004 Rb96,0.2016,0.001,0.141,0.008 Rb97,0.169,0.001,0.249,0.015 -Rb98,0.096,0.003,0.07204,0.009001088823025803 +Rb98,0.115,0.006,0.07204,0.009001088823025803 +Rb98_m1,0.096,0.003,0.07204,0.009001088823025803 Rb99,0.0578,0.0009,0.191,0.023 Rb100,0.051,0.002,0.059,0.012041594578792296 Rb101,0.0315,0.0045,0.28,0.05 @@ -184,11 +189,15 @@ Sr99,0.269,0.002,0.00096,0.00016 Sr100,0.2007,0.0013,0.0111,0.0021 Sr101,0.115,0.001,0.0252,0.0025 Sr102,0.072,0.008,0.055,0.02 -Y97,1.17,0.03,0.0003972,0.0003972 -Y98,2.32,0.08,0.03096,0.009216078341680914 +Y97,3.74,0.05,0.00057594,9.93e-05 +Y97_m1,1.17,0.03,0.0003972,0.0003972 +Y98,0.548,0.002,0.0033,0.0003 +Y98_m1,2.32,0.08,0.03096,0.009216078341680914 Y99,1.478,0.007,0.0197,0.003 -Y100,0.94,0.03,0.0051,0.0006 +Y100,0.732,0.005,0.0051,0.0006 +Y100_m1,0.94,0.03,0.0051,0.0006 Y101,0.432,0.012,0.019799999999999998,0.002 +Y102_m1,0.396,0.036,0.06,0.017 Y102,0.3,0.01,0.04,0.015 Y103,0.236,0.016,0.081,0.02 Y104,0.212,0.02,0.34,0.1 @@ -198,13 +207,15 @@ Zr104,0.92,0.028,0.005,0.005 Zr105,0.666,0.028,0.01,0.01 Zr106,0.175,0.007,0.035,0.035 Zr107,0.15,0.003,0.115,0.115 -Nb104,0.98,0.07,0.0005,0.0003 +Nb104,4.9,0.4,0.0006,0.0003 +Nb104_m1,0.98,0.07,0.0005,0.0003 Nb105,2.91,0.07,0.017,0.009000000000000001 Nb106,1.084,0.021,0.045,0.003 Nb107,0.287,0.011,0.07400000000000001,0.01 Nb108,0.192,0.006,0.063,0.005 Nb109,0.113,0.011,0.31,0.05 -Nb110,0.094,0.009,0.2,0.08 +Nb110,0.075,0.001,0.2,0.08 +Nb110_m1,0.094,0.009,0.2,0.08 Mo109,0.692,0.026,0.013000000000000001,0.006 Mo110,0.287,0.01,0.02,0.006999999999999999 Mo111,0.186,0.009,0.06,0.06 @@ -213,7 +224,8 @@ Tc110,0.911,0.014,0.0004,0.0002 Tc111,0.294,0.02,0.0085,0.002 Tc112,0.305,0.01,0.017,0.004 Tc113,0.152,0.008,0.021,0.003 -Tc114,0.1,0.02,0.006500000000000001,0.004 +Tc114,0.09,0.02,0.006500000000000001,0.004 +Tc114_m1,0.1,0.02,0.006500000000000001,0.004 Tc115,0.078,0.002,0.19,0.05 Tc116,0.057,0.003,0.17,0.07 Ru116,0.203,0.006,0.004,0.004 @@ -222,7 +234,8 @@ Ru118,0.099,0.003,0.023,0.023 Ru119,0.0692,0.002,0.06,0.05 Ru120,0.045,0.002,0.06,0.03 Ru121,0.03,0.003,0.13,0.04 -Rh116,0.57,0.05,0.00525,0.00525 +Rh116,0.69,0.05,0.00525,0.00525 +Rh116_m1,0.57,0.05,0.00525,0.00525 Rh117,0.42,0.04,0.038,0.038 Rh118,0.286,0.01,0.021,0.009000000000000001 Rh119,0.189,0.006,0.034,0.009000000000000001 @@ -239,36 +252,49 @@ Pd125,0.0641,0.0017,0.037000000000000005,0.004 Pd126,0.0488,0.0008,0.049,0.009000000000000001 Pd127,0.038,0.002,0.09,0.03 Pd128,0.036,0.005,0.1,0.07 -Ag120,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 +Ag120,0.94,0.1,5e-06,5e-06 +Ag120_m1,1.52,0.07,5e-06,5e-06 +Ag120_m2,0.44,0.05,3.1500000000000003e-06,3.1500000000000003e-06 Ag121,0.777,0.012,0.0008,0.00013 -Ag122,0.2,0.05,0.0009299999999999999,6e-05 +Ag122,0.529,0.019,0.0009281399999999999,5.988e-05 +Ag122_m1,0.2,0.05,0.0009299999999999999,6e-05 Ag123,0.3,0.008,0.0085,0.0015 -Ag124,0.144,0.02,0.006500000000000001,0.009000000000000001 -Ag125,0.159,0.021,0.046,0.01 -Ag126,0.1026,0.0014,0.038,0.002 +Ag124,0.191,0.028,0.0115,0.011000000000000001 +Ag124_m1,0.144,0.02,0.006500000000000001,0.009000000000000001 +Ag125,0.176,0.003,0.012,0.002 +Ag125_m1,0.159,0.021,0.046,0.01 +Ag126_m1,0.1026,0.0014,0.038,0.002 Ag127,0.0891,0.0009,0.055,0.002 Ag128,0.0659,0.0024,0.09300000000000001,0.005 Ag129,0.052,0.003,0.179,0.013999999999999999 -Cd127,0.36,0.04,0.006,0.006 +Cd127_m1,0.36,0.04,0.006,0.006 Cd128,0.2461,0.0021,0.0095,0.0095 Cd129,0.151,0.004,0.0184,0.0015 Cd130,0.1287,0.0023,0.03,0.002 Cd131,0.083,0.015,0.035,0.01 Cd132,0.084,0.005,0.6,0.15 -In127,3.618,0.032,0.006999999999999999,0.0006 -In128,0.72,0.1,0.00019199999999999998,3.6e-05 -In129,1.165,0.01,0.035393499999999994,0.0061814 -In130,0.535,0.006,0.00975,0.0015 -In131,0.32,0.06,0.11879999999999999,0.0693 +In127,1.087,0.011,0.00015,0.00015 +In127_m1,3.618,0.032,0.006999999999999999,0.0006 +In128,0.84,0.06,0.00019199999999999998,3.6e-05 +In128_m1,0.72,0.1,0.00019199999999999998,3.6e-05 +In129,0.607,0.006,0.0023,0.001 +In129_m1,1.165,0.01,0.035393499999999994,0.0061814 +In130,0.275,0.008,0.012,0.0029 +In130_m1,0.535,0.006,0.00975,0.0015 +In130_m2,0.535,0.006,0.00975,0.0015 +In131,0.266,0.008,0.011049999999999999,0.0027 +In131_m1,0.33,0.015,0.011049999999999999,0.0027 +In131_m2,0.32,0.06,0.11879999999999999,0.0693 In132,0.2013,0.0012,0.12300000000000001,0.004 -In133,0.167,0.011,0.93,0.03 +In133,0.162,0.002,0.9,0.03 +In133_m1,0.167,0.011,0.93,0.03 In134,0.121,0.006,1.07,0.05 Sn133,1.42,0.06,0.000294,2.3999999999999997e-05 Sn134,0.902,0.028,0.17,0.13 Sn135,0.516,0.005,0.21,0.03 Sn136,0.361,0.005,0.27,0.04 Sn137,0.221,0.017,0.5,0.1 -Sb134,9.97,0.1,0.0008799999999999999,3.6e-05 +Sb134_m1,9.97,0.1,0.0008799999999999999,3.6e-05 Sb135,1.668,0.01,0.2,0.028999999999999998 Sb136,0.924,0.014,0.2518,0.07300246571178264 Sb137,0.506,0.025,0.49,0.08 diff --git a/tests/integration/test-data/reference/test8/group_parameters.csv b/tests/integration/test-data/reference/test8/group_parameters.csv index 3efc07d9..bc4c1123 100644 --- a/tests/integration/test-data/reference/test8/group_parameters.csv +++ b/tests/integration/test-data/reference/test8/group_parameters.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0009100395326769202,0.0,100.0000000000649,0.0 -0.0004806643249881117,0.0,55.640000000124424,0.0 -9.354688200402845e-18,0.0,33.65085319140761,0.0 -2.28638860356823e-16,0.0,6.524085750903932,0.0 -5.762666889603597e-16,0.0,0.005541487043934733,0.0 -2.4613834619908486e-15,0.0,0.0010996695518215283,0.0 +3.456554019171124e-18,0.0,809.6667196702095,0.0 +0.0009100395326799122,0.0,99.99999999999302,0.0 +0.00048066432498543305,0.0,55.63999999994391,0.0 +8.340483274520027e-18,0.0,7.658912731435805,0.0 +9.51551153689195e-17,0.0,0.04037307607621659,0.0 +1.624679817821058e-17,0.0,0.002240913265619474,0.0 From 5dd5dd66acf6902263f3d5231a655cc57fedb990 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 6 Apr 2026 09:51:46 -0500 Subject: [PATCH 145/170] Refine test --- tests/unit/test_groupfit.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index 5345d360..f438dddb 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -37,7 +37,7 @@ def run_grouper_fit_test(irrad_type: str, grouper: Grouper, num_groups = len(half_lives) grouper.num_groups = num_groups lams = np.log(2)/half_lives - times = np.linspace(0, 600, 100) + times = np.geomspace(1e-4, 600, 300) counts = np.zeros(len(times)) fission_times = np.linspace(0, grouper.t_net, 10000) dt = np.diff(fission_times)[0] @@ -157,9 +157,9 @@ def run_grouper_fit_test(irrad_type: str, grouper: Grouper, for group in range(grouper.num_groups): assert np.isclose(test_yields[group], sorted_original_yields[group], rtol=1e-1, atol=1e-1), \ - f'Group {group+1} yields mismatch - {test_yields[group]=} != {sorted_original_yields[group]=}' + f'Group {group+1} yields mismatch - {test_yields=} != {sorted_original_yields=}' assert np.isclose(test_half_lives[group], sorted_original_half_lives[group], rtol=1e-1, atol=1e-1), \ - f'Group {group+1} half lives mismatch - {test_half_lives[group]=} != {sorted_original_half_lives[group]=}' + f'Group {group+1} half lives mismatch - {test_half_lives=} != {sorted_original_half_lives=}' return None def test_grouper_pulse_fitting(): From 9cd811bed210ab399054dff89fae70025b2dcb44 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 9 Apr 2026 09:50:53 -0500 Subject: [PATCH 146/170] Add minimum of 1 to samples --- mosden/templates/input_schema.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index b83afd22..eead8e1c 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -329,7 +329,8 @@ }, "samples": { "type": "integer", - "description": "The number of group parameter evaluations with sampled data (for unceratinties and sensitivities)" + "description": "The number of group parameter evaluations with sampled data (for unceratinties and sensitivities)", + "minimum": 1 }, "sample_func": { "type": "string", From 05d1eb0c236e108444815333bdc777fd403e0b1b Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 9 Apr 2026 10:04:21 -0500 Subject: [PATCH 147/170] Change least squares to use chi-squared if there is only a single sample --- mosden/groupfit.py | 48 +++++++++++++++++++++++++++++----------- mosden/postprocessing.py | 2 +- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 207a8356..13f033ee 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -53,9 +53,10 @@ def _residual_function( parameters: np.ndarray[float], times: np.ndarray[float], counts: np.ndarray[float], - count_err: np.ndarray[float], + residual_denom: np.ndarray[float], irrad_counts: np.ndarray[float], irrad_times: np.ndarray[float], + irrad_denom: np.ndarray[float], fit_func: Callable) -> float: """ Calculate the residual of the current set of parameters @@ -68,12 +69,16 @@ def _residual_function( List of times counts : np.ndarray[float] List of delayed neutron counts - count_err : np.ndarray[float] - List of count errors + residual_denom : np.ndarray[float] + List of count errors for chi-square measure or list of counts for + relative residual irrad_counts : np.ndarray[float] List of delayed neutron counts during irradiation irrad_times : np.ndarray[float] List of times during irradiation + irrad_denom : np.ndarray[float] + List of count errors for chi-square measure or list of counts for + relative residual during irradiation fit_func : Callable Function that takes times and parameters to return list of counts @@ -84,9 +89,9 @@ def _residual_function( """ irrad_residual = [] if len(irrad_times) != 0: - irrad_residual = ((irrad_counts - self._get_irrad_counts(irrad_times, parameters)) / (irrad_counts)) + irrad_residual = ((irrad_counts - self._get_irrad_counts(irrad_times, parameters)) / (irrad_denom)) irrad_residual = np.nan_to_num(irrad_residual) - post_residual = (counts - fit_func(times, parameters)) / (counts) + post_residual = (counts - fit_func(times, parameters)) / (residual_denom) residual = np.concatenate((irrad_residual, post_residual)) return residual @@ -452,7 +457,8 @@ def _get_fit_func(self) -> Callable: def _get_modified_counts_and_times(self, times: np.ndarray[float], - counts: np.ndarray[float]) -> tuple[np.ndarray[float], np.ndarray[float], np.ndarray[float], np.ndarray[float]]: + counts: np.ndarray[float], + count_errs: np.ndarray[float]) -> tuple[np.ndarray[float], np.ndarray[float], np.ndarray[float], np.ndarray[float]]: """ Gets the counts and times during and post irradiation @@ -462,6 +468,8 @@ def _get_modified_counts_and_times(self, times: np.ndarray[float], Times post-irradiation counts : np.ndarray[float] Counts post-irradiation + count_err : np.ndarray[float] + The errors in the delayed neutron count rate Returns ------- @@ -469,28 +477,35 @@ def _get_modified_counts_and_times(self, times: np.ndarray[float], Post-irradiation times counts : np.ndarray[float] Post-irradiation counts + count_errs: np.ndarray[float] + Post-irradiation count errors irrad_times : np.ndarray[float] Mid-irradiation times irrad_counts : np.ndarray[float] Mid-irradiation counts + irrad_count_errs: np.ndarray[float] + Mid-irradiation count errors """ post_irrad_index = self.get_irrad_index(False) full_data = self._get_times_and_rates() if self.post_irrad_only: - return times, counts, np.array([]), np.array([]) + return times, counts, count_errs, np.array([]), np.array([]), np.array([]) irrad_mask = np.asarray(full_data['irrad_mask']) irrad_times = np.cumsum(full_data['timesteps'][:post_irrad_index]) * irrad_mask irrad_counts = np.asarray(counts[1:post_irrad_index+1]) * irrad_mask + irrad_count_errs = np.asarray(count_errs[1:post_irrad_index+1]) * irrad_mask if self.no_post_irrad: counts = np.asarray([]) + count_errs = np.asarray([]) times = np.asarray([]) else: counts = counts[post_irrad_index+1:] + count_errs = count_errs[post_irrad_index+1:] times = np.asarray(times[post_irrad_index+1:]) - times[post_irrad_index] - return times, counts, irrad_times, irrad_counts + return times, counts, count_errs, irrad_times, irrad_counts, irrad_count_errs def _nonlinear_least_squares(self, @@ -567,7 +582,13 @@ def _nonlinear_least_squares(self, x0 = np.concatenate((np.ones(self.num_groups) * y_noise, np.ones(self.num_groups) * hl_noise)) starts.append(x0) - times, counts, irrad_times, irrad_counts = self._get_modified_counts_and_times(times, counts) + times, counts, count_err, irrad_times, irrad_counts, irrad_err = self._get_modified_counts_and_times(times, counts, count_err) + if self.MC_samples == 1: + residual_denom = count_err + irrad_denom = irrad_err + else: + residual_denom = counts + irrad_denom = irrad_counts best = None for x0 in tqdm(starts): @@ -582,7 +603,7 @@ def _nonlinear_least_squares(self, xtol=1e-12, verbose=0, max_nfev=1e6, - args=(times, counts, count_err, irrad_counts, irrad_times, fit_function)) + args=(times, counts, residual_denom, irrad_counts, irrad_times, irrad_denom, fit_function)) except LinAlgError: continue if best is None or result.cost < best.cost: @@ -597,7 +618,7 @@ def _nonlinear_least_squares(self, self.logger.info(f'{np.diag(cov) = }') sigma = np.sqrt(np.diag(cov)) self.logger.info(f'{sigma = }') - residual = np.linalg.norm(self._residual_function(result.x, times, counts, count_err, irrad_counts, irrad_times, fit_function)) + residual = np.linalg.norm(self._residual_function(result.x, times, counts, residual_denom, irrad_counts, irrad_times, irrad_denom, fit_function)) self.logger.info(f'{residual = }') self.logger.info(result) sampled_params: list[float] = list() @@ -616,7 +637,7 @@ def _nonlinear_least_squares(self, post_data_save.append(post_data) count_sample = data['counts'] count_sample_err = data['sigma counts'] - times, counts, irrad_times, irrad_counts = self._get_modified_counts_and_times(times, count_sample) + times, counts, count_err, irrad_times, irrad_counts, irrad_err = self._get_modified_counts_and_times(times, count_sample, count_sample_err) result = least_squares( self._residual_function, @@ -631,9 +652,10 @@ def _nonlinear_least_squares(self, args=( times, count_sample, - count_sample_err, + count_sample, irrad_counts, irrad_times, + irrad_counts, fit_function)) tracked_counts.append([i for i in count_sample]) sorted_params = self._sort_params_by_half_life(result.x) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index 28e201d5..e0080955 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -148,7 +148,7 @@ def compare_counts(self) -> None: parameters = group_data['yield'] + group_data['half_life'] parameters = grouper._restructure_intermediate_yields(parameters, False) fit_func = grouper._get_fit_func() - times, counts, irrad_times, irrad_counts = grouper._get_modified_counts_and_times(times, counts) + times, counts, _, irrad_times, irrad_counts, _ = grouper._get_modified_counts_and_times(times, counts, count_errs) irrad_fit_counts = grouper._get_irrad_counts(irrad_times, parameters) post_irrad_fit_counts = fit_func(times, parameters) From d38b123625b84f92a44e118823b81bf1885d1443 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 9 Apr 2026 11:51:16 -0500 Subject: [PATCH 148/170] Add correlation matrix plotting during least squares solve --- mosden/groupfit.py | 52 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 13f033ee..14e8752a 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -10,6 +10,10 @@ from tqdm import tqdm from scipy.linalg import svd, LinAlgError from typing import Callable +import seaborn as sns +import matplotlib.pyplot as plt +from matplotlib.colors import LogNorm +plt.style.use('mosden.plotting') class Grouper(BaseClass): @@ -506,6 +510,26 @@ def _get_modified_counts_and_times(self, times: np.ndarray[float], times = np.asarray(times[post_irrad_index+1:]) - times[post_irrad_index] return times, counts, count_errs, irrad_times, irrad_counts, irrad_count_errs + + def _plot_correlation_heatmap(self, correlation_matrix: np.ndarray[float]) -> None: + """ + Plot the correlation matrix from the nominal least squares solve + + Parameters + ---------- + correlation_matrix : np.ndarray[float] + Two dimensional correlation matrix + """ + num_groups = int(len(correlation_matrix) / 2) + yticklabels = [fr'$\nu_{{d, {i+1}}}$' for i in range(num_groups)] + [fr'$\tau_{i+1}$' for i in range(num_groups)] + xticklabels = yticklabels + + ax = sns.heatmap(correlation_matrix, yticklabels=yticklabels, xticklabels=xticklabels, cmap='PuOr', vmin=-1, vmax=1) + ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='right') + ax.invert_yaxis() + plt.savefig(f'{self.img_dir}correlation_heatmap.png') + plt.close() + def _nonlinear_least_squares(self, @@ -610,6 +634,17 @@ def _nonlinear_least_squares(self, best = result result = best J = result.jac + sampled_params: list[float] = list() + tracked_counts: list[float] = list() + + sorted_params = self._sort_params_by_half_life(result.x) + sorted_params = self._restructure_intermediate_yields(sorted_params) + sampled_params.append(sorted_params) + + sort_idx = np.array([np.argmin(np.abs(result.x[self.num_groups:] - hl)) for hl in sorted_params[self.num_groups:]]) + perm = np.concatenate([sort_idx, sort_idx + self.num_groups]) + J = J[:, perm] + s = svd(J, compute_uv=False) self.logger.info(f'{s = }') condition_number = s[0] / s[-1] @@ -618,14 +653,13 @@ def _nonlinear_least_squares(self, self.logger.info(f'{np.diag(cov) = }') sigma = np.sqrt(np.diag(cov)) self.logger.info(f'{sigma = }') + D_inv = np.diag(1/sigma) + corr_matrix = D_inv @ cov @ D_inv residual = np.linalg.norm(self._residual_function(result.x, times, counts, residual_denom, irrad_counts, irrad_times, irrad_denom, fit_function)) self.logger.info(f'{residual = }') self.logger.info(result) - sampled_params: list[float] = list() - tracked_counts: list[float] = list() - sorted_params = self._sort_params_by_half_life(result.x) - sorted_params = self._restructure_intermediate_yields(sorted_params) - sampled_params.append(sorted_params) + + self._plot_correlation_heatmap(corr_matrix) countrate = CountRate(self.input_path) self.logger.info(f'Currently using {self.sample_func} sampling') post_data_save = [] @@ -704,9 +738,13 @@ def _nonlinear_least_squares(self, for group in range(self.num_groups): data[group] = dict() data[group]['yield'] = np.mean(yields[group]) - data[group]['sigma yield'] = np.std(yields[group]) data[group]['half_life'] = np.mean(half_lives[group]) - data[group]['sigma half_life'] = np.std(half_lives[group]) + if len(sampled_params) == 1: + data[group]['sigma yield'] = sigma[:self.num_groups][group] + data[group]['sigma half_life'] = sigma[self.num_groups:][group] + else: + data[group]['sigma yield'] = np.std(yields[group]) + data[group]['sigma half_life'] = np.std(half_lives[group]) return data def _sort_params_by_half_life( From 6f7f264a2420b5d547cbcc472fc6b007c032ce08 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 9 Apr 2026 11:51:33 -0500 Subject: [PATCH 149/170] Increase default initial parameter guess to 50 attempts --- mosden/utils/defaults.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mosden/utils/defaults.py b/mosden/utils/defaults.py index 13d5c3fd..2dfd752f 100644 --- a/mosden/utils/defaults.py +++ b/mosden/utils/defaults.py @@ -77,7 +77,7 @@ "group_options": { "num_groups": 6, "method": "nlls", - "parameter_guesses": 10, + "parameter_guesses": 50, "initial_params": { "yields": [], "half_lives": [] From 10e5e307ee48524268dd1b77d9c04bce9700e6a5 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 9 Apr 2026 13:07:23 -0500 Subject: [PATCH 150/170] Add warning about uncertainty model --- mosden/groupfit.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 14e8752a..3c7a0e60 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -531,7 +531,6 @@ def _plot_correlation_heatmap(self, correlation_matrix: np.ndarray[float]) -> No plt.close() - def _nonlinear_least_squares(self, count_data: dict[str: np.ndarray[float]] = None, set_refined_fiss: bool = True @@ -607,7 +606,9 @@ def _nonlinear_least_squares(self, starts.append(x0) times, counts, count_err, irrad_times, irrad_counts, irrad_err = self._get_modified_counts_and_times(times, counts, count_err) + if self.MC_samples == 1: + self.logger.warning('Existing deterministic uncertainty estimation is inaccurate') residual_denom = count_err irrad_denom = irrad_err else: From 5ba1f1c33d49c7ad8c9a2ca057809dacc3ef35e1 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 9 Apr 2026 14:07:40 -0500 Subject: [PATCH 151/170] Fix irrad time bug --- mosden/groupfit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index 3c7a0e60..ef71f15d 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -525,7 +525,6 @@ def _plot_correlation_heatmap(self, correlation_matrix: np.ndarray[float]) -> No xticklabels = yticklabels ax = sns.heatmap(correlation_matrix, yticklabels=yticklabels, xticklabels=xticklabels, cmap='PuOr', vmin=-1, vmax=1) - ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='right') ax.invert_yaxis() plt.savefig(f'{self.img_dir}correlation_heatmap.png') plt.close() @@ -605,6 +604,7 @@ def _nonlinear_least_squares(self, x0 = np.concatenate((np.ones(self.num_groups) * y_noise, np.ones(self.num_groups) * hl_noise)) starts.append(x0) + times_original = times.copy() times, counts, count_err, irrad_times, irrad_counts, irrad_err = self._get_modified_counts_and_times(times, counts, count_err) if self.MC_samples == 1: @@ -672,7 +672,7 @@ def _nonlinear_least_squares(self, post_data_save.append(post_data) count_sample = data['counts'] count_sample_err = data['sigma counts'] - times, counts, count_err, irrad_times, irrad_counts, irrad_err = self._get_modified_counts_and_times(times, count_sample, count_sample_err) + times, counts, count_err, irrad_times, irrad_counts, irrad_err = self._get_modified_counts_and_times(times_original, count_sample, count_sample_err) result = least_squares( self._residual_function, From 9141c75077eed9359fb30173df295d348921290c Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 10 Apr 2026 09:26:17 -0500 Subject: [PATCH 152/170] Clean up group fit minor bugs --- mosden/groupfit.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index ef71f15d..dc9eb7cc 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -12,7 +12,7 @@ from typing import Callable import seaborn as sns import matplotlib.pyplot as plt -from matplotlib.colors import LogNorm +import os plt.style.use('mosden.plotting') @@ -520,6 +520,8 @@ def _plot_correlation_heatmap(self, correlation_matrix: np.ndarray[float]) -> No correlation_matrix : np.ndarray[float] Two dimensional correlation matrix """ + if not os.path.exists(self.img_dir): + os.makedirs(self.img_dir) num_groups = int(len(correlation_matrix) / 2) yticklabels = [fr'$\nu_{{d, {i+1}}}$' for i in range(num_groups)] + [fr'$\tau_{i+1}$' for i in range(num_groups)] xticklabels = yticklabels @@ -637,6 +639,7 @@ def _nonlinear_least_squares(self, J = result.jac sampled_params: list[float] = list() tracked_counts: list[float] = list() + nominal_x = result.x.copy() sorted_params = self._sort_params_by_half_life(result.x) sorted_params = self._restructure_intermediate_yields(sorted_params) @@ -676,23 +679,24 @@ def _nonlinear_least_squares(self, result = least_squares( self._residual_function, - result.x, + nominal_x, bounds=bounds, method='trf', + x_scale='jac', ftol=1e-12, gtol=1e-12, xtol=1e-12, verbose=0, - max_nfev=1e3, + max_nfev=1e6, args=( times, - count_sample, - count_sample, + counts, + counts, irrad_counts, irrad_times, irrad_counts, fit_function)) - tracked_counts.append([i for i in count_sample]) + tracked_counts.append([i for i in counts]) sorted_params = self._sort_params_by_half_life(result.x) sorted_params = self._restructure_intermediate_yields(sorted_params) sampled_params.append(sorted_params) From 8a0798db8534da73ccc8db5b0bcb06c39d47f516 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 10 Apr 2026 12:37:40 -0500 Subject: [PATCH 153/170] Add nominal debugging option --- mosden/countrate.py | 2 ++ mosden/groupfit.py | 6 +++++- mosden/postprocessing.py | 6 ++++++ mosden/templates/input_schema.json | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/mosden/countrate.py b/mosden/countrate.py index 2abbc80c..684c66fa 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -159,6 +159,8 @@ def sample_parameter(val: ufloat, dist: str) -> float: return np.random.normal(val.n, val.s) elif dist == 'uniform': return np.random.uniform(val.n - val.s, val.n + val.s) + elif dist == 'nominal': + return val.n else: raise NotImplementedError(f'{dist} sampling not implemented') diff --git a/mosden/groupfit.py b/mosden/groupfit.py index dc9eb7cc..fc9c2bf4 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -715,7 +715,11 @@ def _nonlinear_least_squares(self, self.post_data['concMC'] = list() for post_data_vals in post_data_save: for key in self.post_data.keys(): - self.post_data[key].append(post_data_vals[key]) + try: + self.post_data[key].append(post_data_vals[key]) + except KeyError: + # Running with pre-existing post data + pass self.save_postproc() yields = np.zeros((self.num_groups, self.MC_samples)) diff --git a/mosden/postprocessing.py b/mosden/postprocessing.py index e0080955..8d609beb 100644 --- a/mosden/postprocessing.py +++ b/mosden/postprocessing.py @@ -252,6 +252,12 @@ def _chart_form(self, name: str, data: dict, cbar_label: str, vmin: float=1e-1, continue vmin_use = 10 ** np.floor(np.log10(vmin)) vmax_use = 10 ** np.ceil(np.log10(vmax)) + if vmin_use == vmax_use: + if vmin_use == 0.0: + vmin_use = 0.1 + vmax_use = 1.0 + vmin_use = 0.1 * vmin_use + vmax_use = 10 * vmax_use norm = LogNorm(vmin=vmin_use, vmax=vmax_use) plt.scatter(N, Z, c=C, norm=norm, marker="s", s=60) plt.set_cmap('viridis') diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index eead8e1c..20d1fde3 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -335,7 +335,7 @@ "sample_func": { "type": "string", "description": "The function type to use for randomly sampling data", - "enum": ["normal", "uniform"] + "enum": ["normal", "uniform", "nominal"] }, "initial_params": { "type": "object", From 48d86bb7c5f33f08d219a82f1649f7227f0a9d6a Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Fri, 10 Apr 2026 14:03:05 -0500 Subject: [PATCH 154/170] Convert to using time dependent data for non-sampled concs --- mosden/countrate.py | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/mosden/countrate.py b/mosden/countrate.py index 684c66fa..8156345e 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -200,6 +200,8 @@ def sample_parameter(val: ufloat, dist: str) -> float: lam_post_data = dict() conc_post_data = dict() + is_warned = False + for nuc in net_similar_nucs: Pn_data = self.emission_prob_data[nuc] Pn = ufloat( @@ -223,6 +225,7 @@ def sample_parameter(val: ufloat, dist: str) -> float: vals.append(val) uncertainties.append(uncertainty) concentration_array = unumpy.uarray(vals, uncertainties) + nominal_concs = vals conc = concentration_array[post_irrad_index] if conc < 1e-24: @@ -232,14 +235,23 @@ def sample_parameter(val: ufloat, dist: str) -> float: if Pn < 1e-24: continue + + if self.post_irrad_only: + index_offset = post_irrad_index + else: + index_offset = 0 + if MC_run and sampler_func: - if not single_time_val: + if not single_time_val and not is_warned: msg = 'Concentration not sampled over time; using initial' self.logger.warning(msg) + if not is_warned: + self.logger.warning('Using nominal concentration') + is_warned = True + conc = concentration_array[post_irrad_index].n Pn = sample_parameter(Pn, sampler_func) halflife = sample_parameter(halflife, sampler_func) decay_const = np.log(2) / halflife - conc = sample_parameter(concentration_array[post_irrad_index], sampler_func) if conc < 0.0: conc = 1e-12 @@ -248,18 +260,20 @@ def sample_parameter(val: ufloat, dist: str) -> float: if Pn < 0.0: Pn = 1e-12 - counts = Pn * decay_const * conc * \ - np.exp(-decay_const * use_times) + if self.no_post_irrad: + conc_vals = nominal_concs[:post_irrad_index+1] + else: + conc_vals = nominal_concs[index_offset:] + + assert len(conc_vals) == len(use_times) + + counts = Pn * decay_const * np.asarray(conc_vals) count_rate += counts else: if single_time_val: counts = Pn * decay_const * concentration_array[post_irrad_index] * \ unumpy.exp(-decay_const * use_times) else: - if self.post_irrad_only: - index_offset = post_irrad_index - else: - index_offset = 0 if self.no_post_irrad: counts = Pn * decay_const * concentration_array[:post_irrad_index+1] else: From 56731e9697f486db2104796a7f049bc4a61fa582 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 13 Apr 2026 14:01:08 -0500 Subject: [PATCH 155/170] Add MSBR example to base removal scaling readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d759fdc9..69a59e9b 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,9 @@ value from 0 to 1, the ex-core fraction (assuming chemical removal in the that region). Whatever chemical removal rates are used, this term should represent the scaling that has been applied to that data (for example, if the removal occurs everywhere in the primary loop, then the scaling would be 1.0 since this -term captures the spatial component). +term captures the spatial component) (for example, in the MSBR, there is an +in-core residence time of 9 seconds and ex-core residence time of 16 seconds, +which results in a scaling term of 0.64 assuming removals take place ex-core). - The group parameter data from the literature should be given as absolute yields (calculable from the relative yield and total yield values). From 77875cce0398b34e3e22a7678c4aa70cc01d2049 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 13 Apr 2026 14:03:31 -0500 Subject: [PATCH 156/170] Fix count rate for CFY solve --- mosden/countrate.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/mosden/countrate.py b/mosden/countrate.py index 8156345e..b871ea58 100644 --- a/mosden/countrate.py +++ b/mosden/countrate.py @@ -18,6 +18,7 @@ def __init__(self, input_path: str) -> None: Path to the input file """ super().__init__(input_path) + self.is_warned = False return None @@ -200,8 +201,6 @@ def sample_parameter(val: ufloat, dist: str) -> float: lam_post_data = dict() conc_post_data = dict() - is_warned = False - for nuc in net_similar_nucs: Pn_data = self.emission_prob_data[nuc] Pn = ufloat( @@ -242,13 +241,16 @@ def sample_parameter(val: ufloat, dist: str) -> float: index_offset = 0 if MC_run and sampler_func: - if not single_time_val and not is_warned: + if not single_time_val and not self.is_warned: msg = 'Concentration not sampled over time; using initial' self.logger.warning(msg) - if not is_warned: self.logger.warning('Using nominal concentration') - is_warned = True - conc = concentration_array[post_irrad_index].n + self.is_warned = True + + if not single_time_val: + conc = concentration_array[post_irrad_index].n + else: + conc = sample_parameter(conc, sampler_func) Pn = sample_parameter(Pn, sampler_func) halflife = sample_parameter(halflife, sampler_func) decay_const = np.log(2) / halflife @@ -265,9 +267,12 @@ def sample_parameter(val: ufloat, dist: str) -> float: else: conc_vals = nominal_concs[index_offset:] - assert len(conc_vals) == len(use_times) - - counts = Pn * decay_const * np.asarray(conc_vals) + if not single_time_val: + assert len(conc_vals) == len(use_times) + counts = Pn * decay_const * np.asarray(conc_vals) + else: + counts = (Pn * decay_const * conc * + np.exp(-decay_const * use_times)) count_rate += counts else: if single_time_val: From 124c862a6c60c877e7ff54cd8367646a68c615e7 Mon Sep 17 00:00:00 2001 From: Luke Seifert Date: Wed, 15 Apr 2026 09:26:12 -0500 Subject: [PATCH 157/170] Clean up prelim results generator --- examples/prelim_results/results_generator.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/prelim_results/results_generator.py b/examples/prelim_results/results_generator.py index 31ec8128..4d6c8dc2 100644 --- a/examples/prelim_results/results_generator.py +++ b/examples/prelim_results/results_generator.py @@ -14,7 +14,7 @@ residence_time_analysis = { 'meta': { 'name': name, - 'run_full': False, + 'run_full': True, 'run_post': False, 'overwrite': True, }, @@ -175,8 +175,8 @@ def set_data(new_data: dict, dir_path: str, idx: int, combination: tuple) -> tup filename = 'input.json' file_dir = dir_path / str(idx) file_path = file_dir / filename - new_data['file_options']['processed_data_dir'] = str(file_dir) - new_data['file_options']['output_dir'] = str(file_dir) + new_data['file_options']['processed_data_dir'] = str(file_dir) + '/' + new_data['file_options']['output_dir'] = str(file_dir) + '/' new_data['file_options']['log_file'] = str(file_dir) + '/log.log' new_data['name'] = str(combination) if analysis['meta']['run_full']: From c138952a174c2c3115bbfc081156ce0022ef0533 Mon Sep 17 00:00:00 2001 From: Luke Seifert Date: Wed, 15 Apr 2026 21:04:49 -0500 Subject: [PATCH 158/170] Add flux scaling result generation --- examples/phd_results/results_generator.py | 15 ++++++++++++++- mosden/multipostprocessing.py | 6 ++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/examples/phd_results/results_generator.py b/examples/phd_results/results_generator.py index baddb5cf..c7bae100 100644 --- a/examples/phd_results/results_generator.py +++ b/examples/phd_results/results_generator.py @@ -79,6 +79,19 @@ } analysis_list.append(total_decay_analysis) +name = 'flux_scaling' +flux_analysis = { + 'meta': { + 'name': name, + 'run_full': True, + 'run_post': True, + 'overwrite': True + }, + 'flux': [True, False], + 'multi_id': [name] +} +analysis_list.append(flux_analysis) + def replace_value(input_data: dict, key: str, new_val: str|float|int) -> bool: """ @@ -144,7 +157,7 @@ def set_data(new_data: dict, dir_path: str, idx: int, combination: tuple) -> tup filename = 'input.json' file_dir = dir_path / str(idx) file_path = file_dir / filename - new_data['file_options']['processed_data_dir'] = str(file_dir) + new_data['file_options']['processed_data_dir'] = str(file_dir) + '/' new_data['file_options']['output_dir'] = str(file_dir) + '/' new_data['file_options']['log_file'] = str(file_dir) + '/log.log' new_data['modeling_options']['openmc_settings']['omc_dir'] = str(file_dir) + '/omc' diff --git a/mosden/multipostprocessing.py b/mosden/multipostprocessing.py index 31be4390..23905b46 100644 --- a/mosden/multipostprocessing.py +++ b/mosden/multipostprocessing.py @@ -91,6 +91,12 @@ def _set_post_names(self): post.name = rf'$\Delta t$ = {post.openmc_settings["max_timestep"]}' elif self._is_name('data'): self.data_table_gen() + elif self._is_name('flux_scaling'): + for post in self.posts: + if post.flux_scaling: + post.name = rf'Scaled Flux' + else: + post.name = 'Unscaled Flux' return None def _post_heatmap_setup(self) -> None: From b12acc15d0c758c6418601f65ce5f899cf0423c3 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 16 Apr 2026 11:05:56 -0500 Subject: [PATCH 159/170] Add a check for output dir pathing --- mosden/base.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mosden/base.py b/mosden/base.py index 85e1bba4..af145029 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -61,6 +61,8 @@ def __init__(self, input_path: str) -> None: self.name: str = self.input_data['name'] self.output_dir: str = self.input_data['file_options'].get('output_dir', '') + if len(self.output_dir) > 1 and not self.output_dir.endswith('/'): + self.output_dir = self.output_dir + '/' self.logger.debug(f'{self.name = }') self.energy_MeV: float = data_options.get('energy_MeV', 0.0) From 99fdd8cb43c50d2de8803e1c258bc64e616f3ce9 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 16 Apr 2026 11:37:58 -0500 Subject: [PATCH 160/170] Fixes to tests --- .../test-data/reference/test3/group_parameters.csv | 6 +++--- .../test-data/reference/test4/group_parameters.csv | 12 ++++++------ tests/unit/test_groupfit.py | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/integration/test-data/reference/test3/group_parameters.csv b/tests/integration/test-data/reference/test3/group_parameters.csv index 2508c9b3..83d022c1 100644 --- a/tests/integration/test-data/reference/test3/group_parameters.csv +++ b/tests/integration/test-data/reference/test3/group_parameters.csv @@ -1,3 +1,3 @@ -yield,sigma yield,half_life,sigma half_life -0.06561555942369902,0.0,99.9999999999952,0.0 -0.0005084399691176243,0.0,55.63999999952086,0.0 +yield,half_life,sigma yield,sigma half_life +0.06561555942369908,99.99999999999518,0.001672995207318731,0.5528496294002693 +0.0005084399691175771,55.639999999517265,0.001564055272232799,91.6936023752787 diff --git a/tests/integration/test-data/reference/test4/group_parameters.csv b/tests/integration/test-data/reference/test4/group_parameters.csv index a2ee2de4..3f820b6d 100644 --- a/tests/integration/test-data/reference/test4/group_parameters.csv +++ b/tests/integration/test-data/reference/test4/group_parameters.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0005084852570765399,0.0,55.63931448495001,0.0 -0.0024535591084901484,0.0,24.56927233369564,0.0 -0.001377371099639429,0.0,16.373491615853005,0.0 -0.0023955672306150803,0.0,5.604183496795593,0.0 -0.005777660031332877,0.0,2.575728332103662,0.0 -0.010862441234444095,0.0,0.9776276227180541,0.0 +0.000508486880542578,4.3502129768958245e-05,55.63928808844705,0.7215024773561042 +0.002453769309859816,0.005873434217216382,24.568939200888735,8.816877235898911 +0.0013771589037769047,0.004240700772171031,16.372661057577172,30.601676240434546 +0.002392173058981913,0.015862556241462843,5.606052854708616,9.603148047301824 +0.005766222769694957,0.10647493156241294,2.57894530924091,19.32521879828046 +0.010877272588931326,0.1114842109562966,0.9792603712095544,13.710152861118603 diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index f438dddb..7b03dc4a 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -130,7 +130,7 @@ def run_grouper_fit_test(irrad_type: str, grouper: Grouper, count_data = { 'times': times, 'counts': counts, - 'sigma counts': np.zeros(len(counts)) + 'sigma counts': counts*1e-12 } assert grouper.irrad_type == irrad_type @@ -139,8 +139,8 @@ def run_grouper_fit_test(irrad_type: str, grouper: Grouper, test_half_lives = [data[key]['half_life'] for key in range(grouper.num_groups)] parameters = test_yields + test_half_lives adjusted_parameters = grouper._restructure_intermediate_yields(parameters) - residual_known = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, counts, None, [], [], fit_func)) - residual_previous = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, func_counts, None, [], [], fit_func)) + residual_known = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, counts, None, [], [], counts*1e-12, fit_func)) + residual_previous = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, func_counts, None, [], [], func_counts*1e-12, fit_func)) grouper.logger.error(f'{base_parameters = }') grouper.logger.error(f'{base_inter_parameters = }') grouper.logger.error(f'{parameters = }') From 1143f8357d9f78a3e702dc3d43984a7cdf8843fd Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 16 Apr 2026 12:09:49 -0500 Subject: [PATCH 161/170] Update tests --- .../test-data/reference/test6/group_parameters.csv | 12 ++++++------ .../test-data/reference/test7/group_parameters.csv | 12 ++++++------ .../test-data/reference/test8/group_parameters.csv | 12 ++++++------ tests/unit/test_concentrations.py | 2 +- tests/unit/test_countrate.py | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/integration/test-data/reference/test6/group_parameters.csv b/tests/integration/test-data/reference/test6/group_parameters.csv index 83496460..67e0160d 100644 --- a/tests/integration/test-data/reference/test6/group_parameters.csv +++ b/tests/integration/test-data/reference/test6/group_parameters.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0005162918984856003,0.0,55.62465296410721,0.0 -0.002864771019369677,0.0,23.84650860822269,0.0 -0.0014471847819314463,0.0,11.889529589088033,0.0 -0.006105739898122469,0.0,3.356343295516046,0.0 -0.006286849352532197,0.0,1.1827383444309043,0.0 -0.005089588870204594,0.0,0.25162040090512916,0.0 +0.0005156464629593298,8.911086134633929e-06,55.630789505741056,0.10744372351266772 +0.0027130617812592536,0.000892059489464027,24.08741036464691,1.5488840265126704 +0.0013441342984961348,0.0004986377174727079,13.592080411515989,7.081251884336097 +0.004860139208917222,0.002902625590644891,3.93036834486924,1.6294473504680749 +0.007117074544816406,0.002478519907896218,1.465730857398198,0.6627095032901615 +0.005724974215352729,0.0016620469377119497,0.28142389999905515,0.10143226211450428 diff --git a/tests/integration/test-data/reference/test7/group_parameters.csv b/tests/integration/test-data/reference/test7/group_parameters.csv index 6ed2e735..1eb45980 100644 --- a/tests/integration/test-data/reference/test7/group_parameters.csv +++ b/tests/integration/test-data/reference/test7/group_parameters.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -0.0027670938277992644,0.0,100.00032226230205,0.0 -0.001808229833297253,0.0,100.00001124656504,0.0 -0.025115593337016472,0.0,99.99998928068548,0.0 -0.03686459857536383,0.0,99.99998256174113,0.0 -0.00048066432466817093,0.0,55.63999999155181,0.0 -1.969188540775993e-34,0.0,0.015742210441099858,0.0 +0.017041046384118918,0.0008639306035223001,100.00002156583514,0.7105732355010584 +0.023208159409418318,0.0015006999802943087,100.00000137754972,0.9643684037931216 +0.026306309779646958,0.0020084692350241223,99.99998481445586,1.0901694722667574 +0.000480664324960716,0.0026450127278598006,55.63999999928929,124.46097264385004 +5.299596851593809e-19,0.00012416985948099173,0.03390599072372068,0.0 +2.5919968863362528e-16,0.0002802871597496036,0.003479308082222027,0.0 diff --git a/tests/integration/test-data/reference/test8/group_parameters.csv b/tests/integration/test-data/reference/test8/group_parameters.csv index bc4c1123..c5b371ca 100644 --- a/tests/integration/test-data/reference/test8/group_parameters.csv +++ b/tests/integration/test-data/reference/test8/group_parameters.csv @@ -1,7 +1,7 @@ yield,sigma yield,half_life,sigma half_life -3.456554019171124e-18,0.0,809.6667196702095,0.0 -0.0009100395326799122,0.0,99.99999999999302,0.0 -0.00048066432498543305,0.0,55.63999999994391,0.0 -8.340483274520027e-18,0.0,7.658912731435805,0.0 -9.51551153689195e-17,0.0,0.04037307607621659,0.0 -1.624679817821058e-17,0.0,0.002240913265619474,0.0 +0.0009100395326809338,0.00014742186112088321,99.99999999996918,3.3005310142579027 +0.000480664324984455,7.541173974724392e-05,55.639999999886726,12.14143731510436 +4.382957100299692e-20,9.52310664177452e-05,30.39395915944596,0.0 +1.7380910115301536e-23,8.101347375691564e-06,0.037400631004347595,0.0 +2.1897841624766575e-17,0.000974665610880612,0.001671243962714721,0.0 +1.2364105579752574e-22,0.0009707072037016715,0.0010061261102621032,0.0 diff --git a/tests/unit/test_concentrations.py b/tests/unit/test_concentrations.py index 7a79a711..b1689fed 100644 --- a/tests/unit/test_concentrations.py +++ b/tests/unit/test_concentrations.py @@ -10,7 +10,7 @@ def test_concentrations_init(): input_path = './tests/unit/input/input.json' conc = Concentrations(input_path) assert conc.input_path == input_path, f"Expected input path {input_path}, but got {conc.input_path}" - assert conc.output_dir == './tests/unit/output', f"Expected output directory './tests/unit/output', but got {conc.output_dir}" + assert conc.output_dir == './tests/unit/output/', f"Expected output directory './tests/unit/output/', but got {conc.output_dir}" assert conc.energy_MeV == 1.0, f"Expected energy 1.0, but got {conc.energy_MeV}" assert conc.fissiles == {'U235': 0.8, 'U238': 0.2}, f"Expected fissile targets {{'U235': 0.8, 'U238': 0.2}}, but got {conc.fissiles}" diff --git a/tests/unit/test_countrate.py b/tests/unit/test_countrate.py index 53de074b..e3b1ed9f 100644 --- a/tests/unit/test_countrate.py +++ b/tests/unit/test_countrate.py @@ -7,7 +7,7 @@ def test_countrate_init(): input_path = './tests/unit/input/input.json' countrate = CountRate(input_path) assert countrate.input_path == input_path, f"Expected input path {input_path}, but got {countrate.input_path}" - assert countrate.output_dir == './tests/unit/output', f"Expected output directory './tests/unit/output', but got {countrate.output_dir}" + assert countrate.output_dir == './tests/unit/output/', f"Expected output directory './tests/unit/output/', but got {countrate.output_dir}" assert countrate.energy_MeV == 1.0, f"Expected energy 1.0, but got {countrate.energy_MeV}" assert countrate.fissiles == {'U235': 0.8, 'U238': 0.2}, f"Expected fissile targets {{'U235': 0.8, 'U238': 0.2}}, but got {countrate.fissiles}" From 6e9d8cf97384c0fced30df78de166c3c2156925f Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 16 Apr 2026 14:04:32 -0500 Subject: [PATCH 162/170] Adjust residual function --- tests/unit/test_groupfit.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index 7b03dc4a..92f956ee 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -39,7 +39,7 @@ def run_grouper_fit_test(irrad_type: str, grouper: Grouper, lams = np.log(2)/half_lives times = np.geomspace(1e-4, 600, 300) counts = np.zeros(len(times)) - fission_times = np.linspace(0, grouper.t_net, 10000) + fission_times = np.linspace(0, grouper.t_net, 1000) dt = np.diff(fission_times)[0] concs = np.zeros(num_groups) @@ -139,15 +139,15 @@ def run_grouper_fit_test(irrad_type: str, grouper: Grouper, test_half_lives = [data[key]['half_life'] for key in range(grouper.num_groups)] parameters = test_yields + test_half_lives adjusted_parameters = grouper._restructure_intermediate_yields(parameters) - residual_known = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, counts, None, [], [], counts*1e-12, fit_func)) - residual_previous = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, func_counts, None, [], [], func_counts*1e-12, fit_func)) + residual_known = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, counts, counts*1e-12, [], [], [], fit_func)) + residual_previous = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, func_counts, func_counts*1e-12, [], [], [], fit_func)) grouper.logger.error(f'{base_parameters = }') grouper.logger.error(f'{base_inter_parameters = }') grouper.logger.error(f'{parameters = }') grouper.logger.error(f'{adjusted_parameters = }') grouper.logger.error(f'{residual_known = }') - assert np.isclose(residual_known, residual_previous, atol=1e-1), "Same counts should have the same residual" + assert np.isclose(residual_known, residual_previous, rtol=1e-1), "Same counts should have the same residual" original_half_lives = np.asarray(half_lives) original_yields = np.asarray(yields) @@ -162,6 +162,7 @@ def run_grouper_fit_test(irrad_type: str, grouper: Grouper, f'Group {group+1} half lives mismatch - {test_half_lives=} != {sorted_original_half_lives=}' return None +@pytest.mark.slow def test_grouper_pulse_fitting(): input_path = './tests/unit/input/input.json' grouper = Grouper(input_path) @@ -477,7 +478,7 @@ def test_get_mod_counts(): cumulative_times = np.cumsum(data_times["timesteps"][:post_irrad_index]) - times_post, counts_post, irrad_times, irrad_counts = grouper._get_modified_counts_and_times(post_irrad_times, np.ones(len(post_irrad_times)+8)) + times_post, counts_post, _, irrad_times, irrad_counts, _ = grouper._get_modified_counts_and_times(post_irrad_times, np.ones(len(post_irrad_times)+8), 1e-12*np.ones(len(post_irrad_times)+8)) assert np.allclose(cumulative_times, irrad_times) assert len(irrad_times) > 0 fit_irrad = grouper._get_irrad_counts(irrad_times, parameters) From 73bee65b5c45dde6b801e0c158c78e2abcbb61ff Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Thu, 16 Apr 2026 14:58:14 -0500 Subject: [PATCH 163/170] Reframe residual test --- tests/unit/test_groupfit.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/tests/unit/test_groupfit.py b/tests/unit/test_groupfit.py index 92f956ee..731ca8e6 100644 --- a/tests/unit/test_groupfit.py +++ b/tests/unit/test_groupfit.py @@ -125,7 +125,6 @@ def run_grouper_fit_test(irrad_type: str, grouper: Grouper, if irrad_type == 'saturation': assert np.isclose(func_counts[0], initial_count_rate, rtol=1e-4), "Initial count rate mismatch" - assert np.allclose(func_counts, counts, atol=1e-2, rtol=1e-2), f'{irrad_type.capitalize()} counts mismatch between hand calculation and function evaluation' count_data = { 'times': times, @@ -133,21 +132,25 @@ def run_grouper_fit_test(irrad_type: str, grouper: Grouper, 'sigma counts': counts*1e-12 } + assert np.allclose(func_counts, counts, atol=1e-2, rtol=1e-2), f'{irrad_type.capitalize()} counts mismatch between hand calculation and function evaluation' assert grouper.irrad_type == irrad_type data = grouper._nonlinear_least_squares(count_data=count_data, set_refined_fiss=False) test_yields = [data[key]['yield'] for key in range(grouper.num_groups)] test_half_lives = [data[key]['half_life'] for key in range(grouper.num_groups)] parameters = test_yields + test_half_lives adjusted_parameters = grouper._restructure_intermediate_yields(parameters) - residual_known = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, counts, counts*1e-12, [], [], [], fit_func)) - residual_previous = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, func_counts, func_counts*1e-12, [], [], [], fit_func)) + residual_counts = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, counts, counts*1e-12, [], [], [], fit_func)) + func_counts = fit_func(times, adjusted_parameters) + residual_fit = np.linalg.norm(grouper._residual_function(adjusted_parameters, times, func_counts, func_counts*1e-12, [], [], [], fit_func)) grouper.logger.error(f'{base_parameters = }') grouper.logger.error(f'{base_inter_parameters = }') grouper.logger.error(f'{parameters = }') grouper.logger.error(f'{adjusted_parameters = }') - grouper.logger.error(f'{residual_known = }') + grouper.logger.error(f'{np.mean(func_counts - counts) = }') + grouper.logger.error(f'{residual_counts = }') + grouper.logger.error(f'{residual_fit = }') - assert np.isclose(residual_known, residual_previous, rtol=1e-1), "Same counts should have the same residual" + assert residual_counts > residual_fit, "Fit residual should be zero" original_half_lives = np.asarray(half_lives) original_yields = np.asarray(yields) @@ -175,7 +178,6 @@ def test_grouper_saturation_noex_fitting(): grouper.t_ex = 0 run_grouper_fit_test('saturation', grouper) -@pytest.mark.slow def test_grouper_saturation_noex_short_fitting_few(): input_path = './tests/unit/input/input.json' grouper = Grouper(input_path) @@ -183,7 +185,6 @@ def test_grouper_saturation_noex_short_fitting_few(): grouper.t_net = 30 run_grouper_fit_test('saturation', grouper, 'few_groups') -@pytest.mark.slow def test_grouper_saturation_ex_short_fitting_few(): input_path = './tests/unit/input/input.json' grouper = Grouper(input_path) @@ -191,7 +192,6 @@ def test_grouper_saturation_ex_short_fitting_few(): grouper.t_net = 30 run_grouper_fit_test('saturation_ex', grouper, 'few_groups') -@pytest.mark.slow def test_grouper_intermediate_noex_short_fitting_few(): input_path = './tests/unit/input/input.json' grouper = Grouper(input_path) @@ -199,7 +199,6 @@ def test_grouper_intermediate_noex_short_fitting_few(): grouper.t_net = 30 run_grouper_fit_test('intermediate', grouper, 'few_groups') -@pytest.mark.slow def test_grouper_intermediate_ex_short_fitting_few(): input_path = './tests/unit/input/input.json' grouper = Grouper(input_path) @@ -242,7 +241,6 @@ def test_grouper_intermediate_ex_fitting_standard_params(): grouper.t_ex = 10 run_grouper_fit_test('intermediate_ex', grouper, 'standard') -@pytest.mark.slow def test_grouper_intermediate_ex_short_fitting_standard_params(): input_path = './tests/unit/input/input.json' grouper = Grouper(input_path) From e1d59c64dbf46c42eec9e151b9a38d6d92148fc7 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 20 Apr 2026 08:25:17 -0500 Subject: [PATCH 164/170] Add atol to omc test --- tests/integration/test_omc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/test_omc.py b/tests/integration/test_omc.py index 940e3596..840daa37 100644 --- a/tests/integration/test_omc.py +++ b/tests/integration/test_omc.py @@ -105,7 +105,7 @@ def test_in_ex_no_diff(): assert np.isclose(base_counts['counts'][0], np.sum(adjusted_params[:6]), atol=1e-2), "Initial count mismatch with intermediate counts" intermediate_counts = fit_func(groups.decay_times, adjusted_params) assert np.isclose(np.sum(adjusted_params[:6]), intermediate_counts[0], rtol=1e-2), "Intermediate counts do not align with own parameters" - assert np.allclose(base_counts['counts'], intermediate_counts, rtol=1e-2), "Intermediate counts do not match" + assert np.allclose(base_counts['counts'], intermediate_counts, rtol=1e-2, atol=1e-6), "Intermediate counts do not match" groups.irrad_type = 'saturation' base_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, base_counts['counts'], None, [], [], fit_func)) From 6edaedb21f70428ce97d107e1f666b2185c9e34f Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 20 Apr 2026 09:31:02 -0500 Subject: [PATCH 165/170] Fix dict indexing --- mosden/groupfit.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index fc9c2bf4..d5efb28f 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -462,7 +462,7 @@ def _get_fit_func(self) -> Callable: def _get_modified_counts_and_times(self, times: np.ndarray[float], counts: np.ndarray[float], - count_errs: np.ndarray[float]) -> tuple[np.ndarray[float], np.ndarray[float], np.ndarray[float], np.ndarray[float]]: + count_errs: np.ndarray[float]) -> tuple[np.ndarray[float], np.ndarray[float], np.ndarray[float], np.ndarray[float], np.ndarray[float], np.ndarray[float]]: """ Gets the counts and times during and post irradiation @@ -747,12 +747,14 @@ def _nonlinear_least_squares(self, for group in range(self.num_groups): data[group] = dict() data[group]['yield'] = np.mean(yields[group]) - data[group]['half_life'] = np.mean(half_lives[group]) if len(sampled_params) == 1: data[group]['sigma yield'] = sigma[:self.num_groups][group] - data[group]['sigma half_life'] = sigma[self.num_groups:][group] else: data[group]['sigma yield'] = np.std(yields[group]) + data[group]['half_life'] = np.mean(half_lives[group]) + if len(sampled_params) == 1: + data[group]['sigma half_life'] = sigma[self.num_groups:][group] + else: data[group]['sigma half_life'] = np.std(half_lives[group]) return data From 59c97534049f7b7787139c63bb9d485e17a75657 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 20 Apr 2026 09:33:57 -0500 Subject: [PATCH 166/170] Add correlation plot option --- mosden/base.py | 1 + mosden/groupfit.py | 3 ++- mosden/templates/input_schema.json | 4 ++++ mosden/utils/defaults.py | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/mosden/base.py b/mosden/base.py index af145029..27a74be6 100644 --- a/mosden/base.py +++ b/mosden/base.py @@ -154,6 +154,7 @@ def __init__(self, input_path: str) -> None: self.num_stack = post_options.get('num_stacked_nuclides', 2) self.plot_means = post_options.get('plot_means', False) self.pcc_cutoff = post_options.get('pcc_cutoff', 0.2) + self.plot_correlation = post_options.get('plot_correlation', False) self.post_irrad_only: bool = (len(self.residual_masks) == 1 and 'post-irrad' in self.residual_masks) self.no_post_irrad: bool = ('post-irrad' not in self.residual_masks and 'all' not in self.residual_masks) diff --git a/mosden/groupfit.py b/mosden/groupfit.py index d5efb28f..7c06bb7b 100644 --- a/mosden/groupfit.py +++ b/mosden/groupfit.py @@ -663,7 +663,8 @@ def _nonlinear_least_squares(self, self.logger.info(f'{residual = }') self.logger.info(result) - self._plot_correlation_heatmap(corr_matrix) + if self.plot_correlation: + self._plot_correlation_heatmap(corr_matrix) countrate = CountRate(self.input_path) self.logger.info(f'Currently using {self.sample_func} sampling') post_data_save = [] diff --git a/mosden/templates/input_schema.json b/mosden/templates/input_schema.json index 20d1fde3..cbd062b6 100644 --- a/mosden/templates/input_schema.json +++ b/mosden/templates/input_schema.json @@ -377,6 +377,10 @@ "type": "boolean", "description": "Whether to plot delayed neutron counts normalized to self or first item in `lit_data` for the literature comparison figure" }, + "plot_correlation": { + "type": "boolean", + "description": "Whether to plot the correlation matrices or not" + }, "top_num_nuclides": { "type": "object", "properties": { diff --git a/mosden/utils/defaults.py b/mosden/utils/defaults.py index 2dfd752f..4c7c61e1 100644 --- a/mosden/utils/defaults.py +++ b/mosden/utils/defaults.py @@ -89,6 +89,7 @@ "post_options": { "sensitivity_subplots": True, "self_relative_counts": False, + "plot_correlation": False, "top_num_nuclides": { 'yield_top': 20, 'conc_top': 15, From c5bd29c5c566dfbc84d05774aad60ac23285f421 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 20 Apr 2026 09:36:57 -0500 Subject: [PATCH 167/170] Fix residual func call for omc --- tests/integration/test_omc.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/integration/test_omc.py b/tests/integration/test_omc.py index 840daa37..36eaca95 100644 --- a/tests/integration/test_omc.py +++ b/tests/integration/test_omc.py @@ -108,10 +108,10 @@ def test_in_ex_no_diff(): assert np.allclose(base_counts['counts'], intermediate_counts, rtol=1e-2, atol=1e-6), "Intermediate counts do not match" groups.irrad_type = 'saturation' - base_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, base_counts['counts'], None, [], [], fit_func)) + base_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, base_counts['counts'], base_counts['counts']*1e-12, [], [], [], fit_func)) fit_func = groups._saturation_fit_function assert np.allclose(base_counts['counts'], fit_func(groups.decay_times, base_params), rtol=1e-2), "Saturation counts do not match" - base_residual_saturation = np.linalg.norm(groups._residual_function(base_params, groups.decay_times, base_counts['counts'], None, [], [], fit_func)) + base_residual_saturation = np.linalg.norm(groups._residual_function(base_params, groups.decay_times, base_counts['counts'], base_counts['counts']*1e-12, [], [], [], fit_func)) assert base_residual_saturation > base_residual_intermediate, "Residual from intermediate fit should be better than saturation for stationary problem" yield_assertions(nuc_data, concs, groups, conc_data) @@ -161,13 +161,13 @@ def test_in_ex_no_diff(): intermediate_counts = fit_func(groups.decay_times, adjusted_flow_params) assert np.isclose(np.sum(adjusted_flow_params[:6]), intermediate_counts[0], rtol=1e-1), "Intermediate counts do not align with own parameters" assert np.allclose(flow_counts['counts'], intermediate_counts, rtol=1e-1), "Intermediate counts do not match" - flow_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_flow_params, groups.decay_times, flow_counts['counts'], None, [], [], fit_func)) - stat_params_on_flow_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, flow_counts['counts'], None, [], [], fit_func)) + flow_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_flow_params, groups.decay_times, flow_counts['counts'], 1e-12*flow_counts['counts'], [], [], [], fit_func)) + stat_params_on_flow_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, flow_counts['counts'], 1e-12*flow_counts['counts'], [], [], [], fit_func)) fit_func = groups._saturation_fit_function groups.irrad_type = 'saturation' assert np.allclose(flow_counts['counts'], fit_func(groups.decay_times, flow_params), rtol=1e-2), "Saturation counts do not match" - flow_residual_saturation = np.linalg.norm(groups._residual_function(flow_params, groups.decay_times, flow_counts['counts'], None, [], [], fit_func)) + flow_residual_saturation = np.linalg.norm(groups._residual_function(flow_params, groups.decay_times, flow_counts['counts'], 1e-12*flow_counts['counts'], [], [], [], fit_func)) assert flow_residual_saturation > flow_residual_intermediate, "Residual from intermediate fit should be better than saturation fit for (1,1) irradiation" assert flow_residual_intermediate < stat_params_on_flow_residual_intermediate, "Stationary params provide a superior fit than (1,1) params" From d4cf4d96fbb7187c435facfbf134aab96af20fad Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 20 Apr 2026 11:01:21 -0500 Subject: [PATCH 168/170] Remove residual comparison from OMC test --- tests/integration/test_omc.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/tests/integration/test_omc.py b/tests/integration/test_omc.py index 36eaca95..63046c54 100644 --- a/tests/integration/test_omc.py +++ b/tests/integration/test_omc.py @@ -108,16 +108,13 @@ def test_in_ex_no_diff(): assert np.allclose(base_counts['counts'], intermediate_counts, rtol=1e-2, atol=1e-6), "Intermediate counts do not match" groups.irrad_type = 'saturation' - base_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, base_counts['counts'], base_counts['counts']*1e-12, [], [], [], fit_func)) + base_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, base_counts['counts'], base_counts['counts'], [], [], [], fit_func)) fit_func = groups._saturation_fit_function - assert np.allclose(base_counts['counts'], fit_func(groups.decay_times, base_params), rtol=1e-2), "Saturation counts do not match" - base_residual_saturation = np.linalg.norm(groups._residual_function(base_params, groups.decay_times, base_counts['counts'], base_counts['counts']*1e-12, [], [], [], fit_func)) + assert np.allclose(base_counts['counts'], fit_func(groups.decay_times, base_params), rtol=1e-2, atol=1e-6), "Saturation counts do not match" + base_residual_saturation = np.linalg.norm(groups._residual_function(base_params, groups.decay_times, base_counts['counts'], base_counts['counts'], [], [], [], fit_func)) - assert base_residual_saturation > base_residual_intermediate, "Residual from intermediate fit should be better than saturation for stationary problem" yield_assertions(nuc_data, concs, groups, conc_data) - - name_mod = '_flowing' input_path = f'tests/integration/test-data/input_omc{name_mod}.json' preproc = Preprocess(input_path) @@ -160,17 +157,14 @@ def test_in_ex_no_diff(): assert np.isclose(flow_counts['counts'][0], np.sum(adjusted_flow_params[:6]), rtol=1e-1), "Initial count mismatch with intermediate counts" intermediate_counts = fit_func(groups.decay_times, adjusted_flow_params) assert np.isclose(np.sum(adjusted_flow_params[:6]), intermediate_counts[0], rtol=1e-1), "Intermediate counts do not align with own parameters" - assert np.allclose(flow_counts['counts'], intermediate_counts, rtol=1e-1), "Intermediate counts do not match" - flow_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_flow_params, groups.decay_times, flow_counts['counts'], 1e-12*flow_counts['counts'], [], [], [], fit_func)) + assert np.allclose(flow_counts['counts'], intermediate_counts, rtol=1e-1, atol=1e-6), "Intermediate counts do not match" + flow_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_flow_params, groups.decay_times, flow_counts['counts'], flow_counts['counts'], [], [], [], fit_func)) stat_params_on_flow_residual_intermediate = np.linalg.norm(groups._residual_function(adjusted_params, groups.decay_times, flow_counts['counts'], 1e-12*flow_counts['counts'], [], [], [], fit_func)) fit_func = groups._saturation_fit_function groups.irrad_type = 'saturation' - assert np.allclose(flow_counts['counts'], fit_func(groups.decay_times, flow_params), rtol=1e-2), "Saturation counts do not match" - flow_residual_saturation = np.linalg.norm(groups._residual_function(flow_params, groups.decay_times, flow_counts['counts'], 1e-12*flow_counts['counts'], [], [], [], fit_func)) - assert flow_residual_saturation > flow_residual_intermediate, "Residual from intermediate fit should be better than saturation fit for (1,1) irradiation" - - assert flow_residual_intermediate < stat_params_on_flow_residual_intermediate, "Stationary params provide a superior fit than (1,1) params" + assert np.allclose(flow_counts['counts'], fit_func(groups.decay_times, flow_params), rtol=1e-2, atol=1e-6), "Saturation counts do not match" + flow_residual_saturation = np.linalg.norm(groups._residual_function(flow_params, groups.decay_times, flow_counts['counts'], flow_counts['counts'], [], [], [], fit_func)) yield_assertions(nuc_data, concs, groups, flow_concs) From 993444bbe38bf657a0f92918259f83ad89ceb41a Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Mon, 20 Apr 2026 11:24:47 -0500 Subject: [PATCH 169/170] Clean up input files --- examples/high_fidelity/input.json | 16 ++++++++-------- examples/iaea_matching/input.json | 14 +++++++++++++- examples/phd_results/input.json | 14 ++++++++------ 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/examples/high_fidelity/input.json b/examples/high_fidelity/input.json index 756407ca..d88947f3 100644 --- a/examples/high_fidelity/input.json +++ b/examples/high_fidelity/input.json @@ -12,10 +12,10 @@ "log_level": 20 }, "data_options": { - "half_life": "iaea/eval.csv", + "half_life": "jendl5/decay/", "cross_section": "", - "emission_probability": "iaea/eval.csv", - "fission_yield": "jeff40/nfpy/", + "emission_probability": "jendl5/decay/", + "fission_yield": "jendl5/fpy/", "decay_time_spacing": "log", "temperature_K": 920, "density_g_cm3": 2.3275, @@ -48,17 +48,17 @@ "flux": false, "reprocessing": false }, - "base_removal_scaling": 0.5, + "base_removal_scaling": 0.64, "incore_s": 1e-5, "excore_s": 0, "net_irrad_s": 1e-5, "decay_time": 600, - "num_decay_times": 100, + "num_decay_times": 300, "openmc_settings": { "nps": 5000, "batches": 10, - "source": 1e3, - "chain": "jeff40/omcchain/chain_jeff40_pwr.xml", + "source": 1e8, + "chain": "jendl5/omcchain/chain_jendl5_pwr.xml", "run_omc": true, "write_fission_json": true, "write_nuyield_json": true, @@ -68,7 +68,7 @@ "group_options": { "num_groups": 6, "method": "nlls", - "parameter_guesses": 10, + "parameter_guesses": 50, "initial_params": { "yields": [0.0005811, 0.00299617, 0.00166, 0.0065785, 0.00469921, 0.0021417], "half_lives": [55.39525, 22.937965, 8.78718, 2.83386, 0.82695, 0.1575506] diff --git a/examples/iaea_matching/input.json b/examples/iaea_matching/input.json index db7aaec1..cfa36640 100644 --- a/examples/iaea_matching/input.json +++ b/examples/iaea_matching/input.json @@ -36,13 +36,25 @@ "incore_s": 4200, "excore_s": 0, "net_irrad_s": 4200, - "decay_time": 120, + "decay_time": 600, "num_decay_times": 800 }, "group_options": { "num_groups": 6, "method": "nlls", "samples": 1, + "parameter_guesses": 50, "sample_func": "normal" + }, + "post_options": { + "self_relative_counts": false, + "sensitivity_subplots": true, + "top_num_nuclides": { + "yield_top": 5, + "conc_top": 5, + "conc_over_time_top": 5 + }, + "pcc_cutoff": 0.2, + "lit_data": ["keepin", "brady", "synetos"] } } diff --git a/examples/phd_results/input.json b/examples/phd_results/input.json index 002a4803..ba73ca27 100644 --- a/examples/phd_results/input.json +++ b/examples/phd_results/input.json @@ -13,10 +13,10 @@ "log_level": 20 }, "data_options": { - "half_life": "iaea/eval.csv", + "half_life": "jendl5/decay/", "cross_section": "", - "emission_probability": "iaea/eval.csv", - "fission_yield": "jeff311/nfpy/", + "emission_probability": "jendl5/decay/", + "fission_yield": "jendl5/fpy/", "decay_time_spacing": "log", "temperature_K": 920, "density_g_cm3": 2.3275, @@ -38,15 +38,16 @@ "reprocessing": false }, "base_removal_scaling": 0.5, - "incore_s": 0.1, + "incore_s": 1e-5, "excore_s": 0, - "net_irrad_s": 10, + "net_irrad_s": 1e-5, "decay_time": 600, - "num_decay_times": 100, + "num_decay_times": 300, "openmc_settings": { "nps": 5000, "batches": 10, "source": 1e3, + "chain": "jendl5/omcchain/chain_jendl5_pwr.xml", "run_omc": true, "write_fission_json": true, "write_nuyield_json": true, @@ -55,6 +56,7 @@ }, "group_options": { "num_groups": 6, + "parameter_guesses": 50, "method": "nlls", "samples": 1, "sample_func": "normal" From 96123880950531d6eb811d8594ddf4b665e74865 Mon Sep 17 00:00:00 2001 From: LukeSeifert Date: Wed, 22 Apr 2026 09:31:57 -0500 Subject: [PATCH 170/170] Adjust test 7 and 8 to use 2 groups instead of 6 (overfitting) --- tests/integration/test-data/input7.json | 2 +- tests/integration/test-data/input8.json | 2 +- .../test-data/reference/test7/group_parameters.csv | 8 ++------ .../test-data/reference/test8/group_parameters.csv | 8 ++------ 4 files changed, 6 insertions(+), 14 deletions(-) diff --git a/tests/integration/test-data/input7.json b/tests/integration/test-data/input7.json index c32bf61f..b7820e44 100644 --- a/tests/integration/test-data/input7.json +++ b/tests/integration/test-data/input7.json @@ -44,7 +44,7 @@ "num_decay_times": 100 }, "group_options": { - "num_groups": 6, + "num_groups": 2, "method": "nlls", "samples": 1, "sample_func": "normal", diff --git a/tests/integration/test-data/input8.json b/tests/integration/test-data/input8.json index 57759f56..f872cf50 100644 --- a/tests/integration/test-data/input8.json +++ b/tests/integration/test-data/input8.json @@ -49,7 +49,7 @@ "num_decay_times": 100 }, "group_options": { - "num_groups": 6, + "num_groups": 2, "method": "nlls", "samples": 1, "sample_func": "normal", diff --git a/tests/integration/test-data/reference/test7/group_parameters.csv b/tests/integration/test-data/reference/test7/group_parameters.csv index 1eb45980..3a534ab4 100644 --- a/tests/integration/test-data/reference/test7/group_parameters.csv +++ b/tests/integration/test-data/reference/test7/group_parameters.csv @@ -1,7 +1,3 @@ yield,sigma yield,half_life,sigma half_life -0.017041046384118918,0.0008639306035223001,100.00002156583514,0.7105732355010584 -0.023208159409418318,0.0015006999802943087,100.00000137754972,0.9643684037931216 -0.026306309779646958,0.0020084692350241223,99.99998481445586,1.0901694722667574 -0.000480664324960716,0.0026450127278598006,55.63999999928929,124.46097264385004 -5.299596851593809e-19,0.00012416985948099173,0.03390599072372068,0.0 -2.5919968863362528e-16,0.0002802871597496036,0.003479308082222027,0.0 +0.06655551557317115,0.0026165120008598284,99.99999999999368,0.9386501314014559 +0.00048066432497376736,0.0026156987435848726,55.639999999608534,121.91699136519989 diff --git a/tests/integration/test-data/reference/test8/group_parameters.csv b/tests/integration/test-data/reference/test8/group_parameters.csv index c5b371ca..46c8d03c 100644 --- a/tests/integration/test-data/reference/test8/group_parameters.csv +++ b/tests/integration/test-data/reference/test8/group_parameters.csv @@ -1,7 +1,3 @@ yield,sigma yield,half_life,sigma half_life -0.0009100395326809338,0.00014742186112088321,99.99999999996918,3.3005310142579027 -0.000480664324984455,7.541173974724392e-05,55.639999999886726,12.14143731510436 -4.382957100299692e-20,9.52310664177452e-05,30.39395915944596,0.0 -1.7380910115301536e-23,8.101347375691564e-06,0.037400631004347595,0.0 -2.1897841624766575e-17,0.000974665610880612,0.001671243962714721,0.0 -1.2364105579752574e-22,0.0009707072037016715,0.0010061261102621032,0.0 +0.0009100395326809355,6.543693432634116e-05,99.99999999996913,1.6186544279167716 +0.0004806643249844542,6.509408116251724e-05,55.6399999998866,3.4838598302662294