diff --git a/applications/compute_loop_velocity.py b/applications/compute_loop_velocity.py new file mode 100644 index 00000000..f30968b2 --- /dev/null +++ b/applications/compute_loop_velocity.py @@ -0,0 +1,87 @@ +import argparse +import csv +import json +import os + +from bird import logger +from bird.postprocess.post_quantities import ( + build_loop_direction_field, + build_loop_direction_field_from_path, + compute_loop_velocity, + propose_loop_boxes_block_rect, +) +from bird.utilities.ofio import get_case_times, read_cell_centers + + +def build_direction_field(args, cell_centers): + """Loop-direction field from the box, path, or block-rect proposer source.""" + if args.boxes is not None: + with open(args.boxes) as f: + boxes = json.load(f) + return build_loop_direction_field(cell_centers, boxes) + if args.path is not None: + with open(args.path) as f: + spec = json.load(f) + return build_loop_direction_field_from_path( + cell_centers, spec["points"], spec["max_dist"] + ) + with open(args.mesh) as f: + geometry = json.load(f)["Geometry"] + boxes = propose_loop_boxes_block_rect(geometry, rescale=args.rescale) + return build_loop_direction_field(cell_centers, boxes) + + +def main(): + parser = argparse.ArgumentParser(description="Loop (circulation) velocity") + parser.add_argument( + "-c", "--case", type=str, default=".", help="case folder" + ) + source = parser.add_mutually_exclusive_group(required=True) + source.add_argument( + "-b", "--boxes", type=str, help="JSON list of {min, max, direction}" + ) + source.add_argument( + "-p", + "--path", + type=str, + help='JSON {"points": [[x,y,z], ...], "max_dist": float}', + ) + source.add_argument( + "-m", "--mesh", type=str, help="mesh.json for the block-rect proposer" + ) + parser.add_argument( + "-r", + "--rescale", + type=float, + default=None, + help="rescale factor for the proposer (default 1.0)", + ) + parser.add_argument( + "-o", + "--output", + type=str, + default=None, + help="output CSV (default /Uliq_loop.csv)", + ) + args = parser.parse_args() + + cell_centers, _ = read_cell_centers(args.case) + direction_field = build_direction_field(args, cell_centers) + + time_values, time_names = get_case_times(args.case, remove_zero=True) + output = args.output or os.path.join(args.case, "Uliq_loop.csv") + with open(output, "w", newline="") as f: + writer = csv.writer(f) + writer.writerow(["time", "U_loop"]) + for time_value, time_name in zip(time_values, time_names): + # fresh cache per time (the caller must reset it) + u_loop, _ = compute_loop_velocity( + args.case, time_name, direction_field, field_dict={} + ) + writer.writerow([time_value, u_loop]) + logger.info(f"t={time_value:.4g}: U_loop={u_loop:.6g}") + logger.info(f"Wrote {output}") + + +if __name__ == "__main__": + main() diff --git a/bird/postprocess/post_quantities/__init__.py b/bird/postprocess/post_quantities/__init__.py index 23ecfc38..7e8be921 100644 --- a/bird/postprocess/post_quantities/__init__.py +++ b/bird/postprocess/post_quantities/__init__.py @@ -5,17 +5,59 @@ _get_ind_slice, _weighted_average, ) -from .kla import compute_fitted_kla, compute_instantaneous_kla -from .phase import compute_ave_bubble_diam, compute_gas_holdup +from .dimensionless import ( + compute_froude_number, + compute_sherwood_number, + compute_weber_number, + froude, + sherwood, + weber, +) +from .kla import ( + compute_fitted_kl, + compute_fitted_kla, + compute_instantaneous_kl, + compute_instantaneous_kla, +) +from .loop_velocity import ( + build_loop_direction_field, + build_loop_direction_field_from_path, + compute_loop_velocity, + propose_loop_boxes_block_rect, +) +from .phase import ( + compute_ave_bubble_diam, + compute_ave_liquid_density, + compute_ave_liquid_velocity, + compute_gas_holdup, + interfacial_area, +) from .species import compute_ave_conc_liq, compute_ave_y_liq from .superficial_velocity import compute_superficial_gas_velocity +from .transport import compute_turbulent_diffusivity __all__ = [ + "build_loop_direction_field", + "build_loop_direction_field_from_path", "compute_ave_bubble_diam", "compute_ave_conc_liq", + "compute_ave_liquid_density", + "compute_ave_liquid_velocity", "compute_ave_y_liq", + "compute_fitted_kl", "compute_fitted_kla", + "compute_froude_number", "compute_gas_holdup", + "compute_instantaneous_kl", "compute_instantaneous_kla", + "compute_loop_velocity", + "compute_sherwood_number", "compute_superficial_gas_velocity", + "compute_turbulent_diffusivity", + "compute_weber_number", + "froude", + "interfacial_area", + "propose_loop_boxes_block_rect", + "sherwood", + "weber", ] diff --git a/bird/postprocess/post_quantities/dimensionless.py b/bird/postprocess/post_quantities/dimensionless.py new file mode 100644 index 00000000..9b3730c5 --- /dev/null +++ b/bird/postprocess/post_quantities/dimensionless.py @@ -0,0 +1,235 @@ +import numpy as np + +from bird.utilities.ofio import ( + read_global_vars, + read_gravity, + read_surface_tension, +) + +from .kla import compute_instantaneous_kl +from .phase import compute_ave_liquid_density, compute_ave_liquid_velocity + + +def froude(velocity: float, length: float, gravity: float = 9.81) -> float: + r"""Froude number :math:`Fr = U / \sqrt{g\,L}`. + + Parameters + ---------- + velocity: float + Characteristic velocity :math:`U`, in :math:`m.s^{-1}` + length: float + Characteristic length :math:`L`, in :math:`m` + gravity: float + Gravitational acceleration :math:`g`, in :math:`m.s^{-2}` + + Returns + ---------- + froude_number: float + Froude number (dimensionless) + """ + return velocity / np.sqrt(gravity * length) + + +def weber( + density: float, velocity: float, length: float, surface_tension: float +) -> float: + r"""Weber number :math:`We = \rho\,U^2\,L / \sigma`. + + Parameters + ---------- + density: float + Fluid density :math:`\rho`, in :math:`kg.m^{-3}` + velocity: float + Characteristic velocity :math:`U`, in :math:`m.s^{-1}` + length: float + Characteristic length :math:`L`, in :math:`m` + surface_tension: float + Surface tension :math:`\sigma`, in :math:`N.m^{-1}` + + Returns + ---------- + weber_number: float + Weber number (dimensionless) + """ + return density * velocity**2 * length / surface_tension + + +def sherwood(kl: float, length: float, diffusivity: float) -> float: + r"""Sherwood number :math:`Sh = k_L\,L / D`. + + Parameters + ---------- + kl: float + Mass-transfer coefficient :math:`k_L`, in :math:`m.s^{-1}` + length: float + Characteristic length :math:`L`, in :math:`m` + diffusivity: float + Mass diffusivity :math:`D`, in :math:`m^2.s^{-1}` + + Returns + ---------- + sherwood_number: float + Sherwood number (dimensionless) + """ + return kl * length / diffusivity + + +def compute_froude_number( + case_folder: str, + time_folder: str, + length: float, + n_cells: int | None = None, + volume_time: str | None = None, + field_dict: dict | None = None, +) -> tuple[float, dict]: + r"""Froude number from the liquid-averaged velocity and a given length. + + :math:`Fr = U / \sqrt{g L}` with :math:`U` the liquid-volume-averaged + :math:`|U_{\rm liq}|` at ``time_folder``, :math:`g` from ``constant/g``, and + :math:`L` the passed length. + + Parameters + ---------- + case_folder: str + Path to case folder + time_folder: str + Name of the time folder to analyze + length: float + Characteristic length :math:`L`, in :math:`m` + n_cells : int | None + Number of cells in the domain. + If None, it will deduced from the field reading + volume_time : str | None + Time folder to read to get the cell volumes. + If None, finds volume time automatically + field_dict : dict + Dictionary of fields used to avoid rereading the same fields to calculate different quantities + + Returns + ---------- + froude_number: float + Froude number (dimensionless) + field_dict : dict + Dictionary of fields read + """ + if field_dict is None: + field_dict = {} + velocity, field_dict = compute_ave_liquid_velocity( + case_folder, time_folder, n_cells, volume_time, field_dict + ) + gravity = read_gravity(case_folder) + return froude(velocity, length, gravity=gravity), field_dict + + +def compute_weber_number( + case_folder: str, + time_folder: str, + length: float, + n_cells: int | None = None, + volume_time: str | None = None, + field_dict: dict | None = None, +) -> tuple[float, dict]: + r"""Weber number from the liquid-averaged velocity/density and a given length. + + :math:`We = \rho U^2 L / \sigma` with :math:`U` and :math:`\rho` the + liquid-volume-averaged velocity magnitude and density at ``time_folder``, + :math:`\sigma` from ``constant/phaseProperties``, and :math:`L` the passed + length. + + Parameters + ---------- + case_folder: str + Path to case folder + time_folder: str + Name of the time folder to analyze + length: float + Characteristic length :math:`L`, in :math:`m` + n_cells : int | None + Number of cells in the domain. + If None, it will deduced from the field reading + volume_time : str | None + Time folder to read to get the cell volumes. + If None, finds volume time automatically + field_dict : dict + Dictionary of fields used to avoid rereading the same fields to calculate different quantities + + Returns + ---------- + weber_number: float + Weber number (dimensionless) + field_dict : dict + Dictionary of fields read + """ + if field_dict is None: + field_dict = {} + velocity, field_dict = compute_ave_liquid_velocity( + case_folder, time_folder, n_cells, volume_time, field_dict + ) + density, field_dict = compute_ave_liquid_density( + case_folder, time_folder, n_cells, volume_time, field_dict + ) + surface_tension = read_surface_tension(case_folder) + return weber(density, velocity, length, surface_tension), field_dict + + +def compute_sherwood_number( + case_folder: str, + time_folder: str, + length: float, + species_name: str, + n_cells: int | None = None, + volume_time: str | None = None, + field_dict: dict | None = None, +) -> tuple[float, dict]: + r"""Sherwood number for one species from the instantaneous kL. + + :math:`Sh = k_L L / D` with :math:`k_L` from + :func:`compute_instantaneous_kl` at ``time_folder`` and the molecular + diffusivity :math:`D` read as ``D_`` from globalVars (the standard + Sherwood definition; the turbulent contribution is deliberately excluded). + + Parameters + ---------- + case_folder: str + Path to case folder + time_folder: str + Name of the time folder to analyze + length: float + Characteristic length :math:`L`, in :math:`m` + species_name: str + Species for which to compute kL and use D_ + n_cells : int | None + Number of cells in the domain. + If None, it will deduced from the field reading + volume_time : str | None + Time folder to read to get the cell volumes. + If None, finds volume time automatically + field_dict : dict + Dictionary of fields used to avoid rereading the same fields to calculate different quantities + + Returns + ---------- + sherwood_number: float + Sherwood number (dimensionless) + field_dict : dict + Dictionary of fields read + """ + if field_dict is None: + field_dict = {} + kl_spec, _, field_dict = compute_instantaneous_kl( + case_folder, + time_folder, + species_name, + n_cells=n_cells, + volume_time=volume_time, + field_dict=field_dict, + ) + diffusivity = float( + read_global_vars(case_folder=case_folder, cross_ref=True)[ + f"D_{species_name}" + ] + ) + # kL from compute_instantaneous_kl is in m/h, but D is in m2/s, so kL must + # be converted back to m/s for Sh to come out dimensionless. + kl_m_per_s = kl_spec[species_name] / 3600 + return sherwood(kl_m_per_s, length, diffusivity), field_dict diff --git a/bird/postprocess/post_quantities/kla.py b/bird/postprocess/post_quantities/kla.py index c60a666b..82082f03 100644 --- a/bird/postprocess/post_quantities/kla.py +++ b/bird/postprocess/post_quantities/kla.py @@ -1,5 +1,3 @@ -import os - import numpy as np from bird import logger @@ -16,9 +14,194 @@ from ..kla_utils import compute_kla from ._cell_filter import _field_filter, _get_ind_liq, _weighted_average +from .phase import ( + _read_liquid_density_field, + compute_ave_bubble_diam, + compute_gas_holdup, + interfacial_area, +) from .species import compute_ave_conc_liq +def _instantaneous_kl_field( + case_folder: str, + time_folder: str, + species_names: str | list[str], + n_cells: int | None = None, + field_dict: dict | None = None, +) -> tuple[dict, dict]: + """Per-cell mass-transfer coefficient kL over the liquid, per species.""" + if field_dict is None: + field_dict = {} + if isinstance(species_names, str): + species_names = [species_names] + + kwargs = { + "case_folder": case_folder, + "time_folder": time_folder, + "n_cells": n_cells, + } + globalVars = read_global_vars(case_folder=case_folder, cross_ref=True) + ind_liq, field_dict = _get_ind_liq(field_dict=field_dict, **kwargs) + + rho_liq, field_dict = _read_liquid_density_field( + case_folder, time_folder, n_cells, field_dict + ) + U_gas, field_dict = read_field( + field_name="U.gas", field_dict=field_dict, **kwargs + ) + U_liq, field_dict = read_field( + field_name="U.liquid", field_dict=field_dict, **kwargs + ) + d_gas, field_dict = read_bubble_diameter(field_dict=field_dict, **kwargs) + mu_liq, field_dict = read_mu_liquid(field_dict=field_dict, **kwargs) + + rho_liq = _field_filter(rho_liq, ind=ind_liq, field_type="scalar") + U_gas = _field_filter(U_gas, ind=ind_liq, field_type="vector") + U_liq = _field_filter(U_liq, ind=ind_liq, field_type="vector") + d_gas = _field_filter(d_gas, ind=ind_liq, field_type="scalar") + mu_liq = _field_filter(mu_liq, ind=ind_liq, field_type="scalar") + + # Magnitude of the slip velocity. Using the last axis keeps this valid + # whether the velocities are uniform, shape (3,), or per cell, shape (N,3) + mag_U_diff = np.linalg.norm(U_gas - U_liq, axis=-1) + Re = rho_liq * mag_U_diff * d_gas / mu_liq + + kl_spec_field = {} + for species_name in species_names: + if not f"D_{species_name}" in globalVars: + err_msg = f"D_{species_name} was not found in globalVars." + err_msg += f'\nIf you add it, it should be looking like #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_{species_name},0.6)";' + raise KeyError(err_msg) + kl_spec_field[species_name] = ( + (2 / np.pi**0.5) + * 3600 + * (Re**0.5) + * (((mu_liq / rho_liq) / globalVars[f"D_{species_name}"]) ** 0.5) + * (globalVars[f"D_{species_name}"] / d_gas) + ) + return kl_spec_field, field_dict + + +def _instantaneous_a_field( + case_folder: str, + time_folder: str, + n_cells: int | None = None, + field_dict: dict | None = None, +) -> tuple[np.ndarray | float, dict]: + """Per-cell interfacial area a = 6 alpha_gas / d over the liquid.""" + if field_dict is None: + field_dict = {} + kwargs = { + "case_folder": case_folder, + "time_folder": time_folder, + "n_cells": n_cells, + } + ind_liq, field_dict = _get_ind_liq(field_dict=field_dict, **kwargs) + alpha_gas, field_dict = read_field( + field_name="alpha.gas", field_dict=field_dict, **kwargs + ) + d_gas, field_dict = read_bubble_diameter(field_dict=field_dict, **kwargs) + alpha_gas = _field_filter(alpha_gas, ind=ind_liq, field_type="scalar") + d_gas = _field_filter(d_gas, ind=ind_liq, field_type="scalar") + return (6.0 / d_gas) * alpha_gas, field_dict + + +def _instantaneous_kla_field( + case_folder: str, + time_folder: str, + species_names: str | list[str], + n_cells: int | None = None, + field_dict: dict | None = None, +) -> tuple[dict, dict]: + """Per-cell kLa = kL * a over the liquid, per species.""" + if field_dict is None: + field_dict = {} + if isinstance(species_names, str): + species_names = [species_names] + kl_spec_field, field_dict = _instantaneous_kl_field( + case_folder, time_folder, species_names, n_cells, field_dict + ) + a_field, field_dict = _instantaneous_a_field( + case_folder, time_folder, n_cells, field_dict + ) + kla_spec_field = { + species_name: kl_spec_field[species_name] * a_field + for species_name in species_names + } + return kla_spec_field, field_dict + + +def _instantaneous_cstar( + case_folder: str, + time_folder: str, + species_names: str | list[str], + n_cells: int | None = None, + volume_time: str | None = None, + field_dict: dict | None = None, +) -> tuple[dict, dict]: + """Volume-averaged saturation concentration C* over the liquid, per species.""" + if field_dict is None: + field_dict = {} + if isinstance(species_names, str): + species_names = [species_names] + kwargs = { + "case_folder": case_folder, + "time_folder": time_folder, + "n_cells": n_cells, + } + kwargs_vol = { + "case_folder": case_folder, + "time_folder": volume_time, + "n_cells": n_cells, + } + globalVars = read_global_vars(case_folder=case_folder, cross_ref=True) + mw_species = {} + for species_name in species_names: + if not f"He_{species_name}" in globalVars: + err_msg = f"He_{species_name} was not found in globalVars." + err_msg += f'\nIf you add it, it should be looking like #calc "$H_{species_name}_298 * exp($DH_{species_name} *(1. / $T0 - 1./298.15))";' + raise KeyError(err_msg) + mw_species[species_name] = species_name_to_mw( + case_folder=case_folder, species_name=species_name + ) + ind_liq, field_dict = _get_ind_liq(field_dict=field_dict, **kwargs) + alpha_gas, field_dict = read_field( + field_name="alpha.gas", field_dict=field_dict, **kwargs + ) + rho_gas, field_dict = read_field( + field_name="thermo:rho.gas", field_dict=field_dict, **kwargs + ) + species_gas = {} + for species_name in species_names: + species_gas[species_name], field_dict = read_field( + field_name=f"{species_name}.gas", field_dict=field_dict, **kwargs + ) + alpha_gas = _field_filter(alpha_gas, ind=ind_liq, field_type="scalar") + alpha_liq = 1 - alpha_gas + rho_gas = _field_filter(rho_gas, ind=ind_liq, field_type="scalar") + for species_name in species_names: + species_gas[species_name] = _field_filter( + species_gas[species_name], ind=ind_liq, field_type="scalar" + ) + cell_volume, field_dict = read_cell_volumes( + field_dict=field_dict, **kwargs_vol + ) + cell_volume = _field_filter(cell_volume, ind=ind_liq, field_type="scalar") + + cstar_spec = {} + for species_name in species_names: + cstar_field = ( + rho_gas + * species_gas[species_name] + * globalVars[f"He_{species_name}"] + ) / mw_species[species_name] + cstar_spec[species_name] = _weighted_average( + cstar_field, cell_volume * alpha_liq + ) + return cstar_spec, field_dict + + def compute_instantaneous_kla( case_folder: str, time_folder: str, @@ -98,11 +281,11 @@ def compute_instantaneous_kla( Returns ---------- kla_spec: dict - Instantaneous volume averaged kLa for each species + Instantaneous volume averaged kLa for each species, in :math:`h^{-1}` Keys are species names Values are the kLa values cstar_spec: dict - Instantaneous volume averaged cstar for each species + Instantaneous volume averaged cstar for each species, in :math:`mol.m^{-3}` Keys are species names Values are the cstar values field_dict : dict @@ -110,11 +293,9 @@ def compute_instantaneous_kla( """ if field_dict is None: field_dict = {} - if isinstance(species_names, str): species_names = [species_names] - # Read relevant fields kwargs = { "case_folder": case_folder, "time_folder": time_folder, @@ -126,118 +307,137 @@ def compute_instantaneous_kla( "n_cells": n_cells, } - # Read globarVars into a python dict - # Replace all the #calc entries with their numeral values - globalVars = read_global_vars(case_folder=case_folder, cross_ref=True) - - # Check that global vars has the values we want and provide a useful error message otherwise - mw_species = {} - for species_name in species_names: - if not f"He_{species_name}" in globalVars: - err_msg = f"He_{species_name} was not found in globalVars." - err_msg += f'\nIf you add it, it should be looking like #calc "$H_{species_name}_298 * exp($DH_{species_name} *(1. / $T0 - 1./298.15))";' - raise KeyError(err_msg) - if not f"D_{species_name}" in globalVars: - err_msg = f"D_{species_name} was not found in globalVars." - err_msg += f'\nIf you add it, it should be looking like #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_{species_name},0.6)";' - raise KeyError(err_msg) - mw_species[species_name] = species_name_to_mw( - case_folder=case_folder, species_name=species_name - ) + kla_spec_field, field_dict = _instantaneous_kla_field( + case_folder, time_folder, species_names, n_cells, field_dict + ) - # Get liquid domain + # Volume average over the liquid ind_liq, field_dict = _get_ind_liq(field_dict=field_dict, **kwargs) - - # Read all the fields - alpha_gas, field_dict = read_field( - field_name="alpha.gas", field_dict=field_dict, **kwargs + cell_volume, field_dict = read_cell_volumes( + field_dict=field_dict, **kwargs_vol ) - try: - rho_liq, field_dict = read_field( - field_name="thermo:rho.liquid", field_dict=field_dict, **kwargs - ) - except FileNotFoundError: - abs_time_path = os.path.join(case_folder, time_folder) - logger.warning( - f"thermo:rho.liquid not found in {abs_time_path}, assuming it is 1000kg/m3" + cell_volume = _field_filter(cell_volume, ind=ind_liq, field_type="scalar") + kla_spec = { + species_name: _weighted_average( + kla_spec_field[species_name], cell_volume ) - rho_liq = 1000.0 - field_dict["rho_liq"] = rho_liq - - rho_gas, field_dict = read_field( - field_name="thermo:rho.gas", field_dict=field_dict, **kwargs - ) - U_gas, field_dict = read_field( - field_name="U.gas", field_dict=field_dict, **kwargs - ) - U_liq, field_dict = read_field( - field_name="U.liquid", field_dict=field_dict, **kwargs + for species_name in species_names + } + cstar_spec, field_dict = _instantaneous_cstar( + case_folder, + time_folder, + species_names, + n_cells, + volume_time, + field_dict, ) - d_gas, field_dict = read_bubble_diameter(field_dict=field_dict, **kwargs) + return kla_spec, cstar_spec, field_dict - mu_liq, field_dict = read_mu_liquid(field_dict=field_dict, **kwargs) - species_gas = {} - for species_name in species_names: - species_gas[species_name], field_dict = read_field( - field_name=f"{species_name}.gas", field_dict=field_dict, **kwargs - ) - # Only compute over the liquid - alpha_gas = _field_filter(alpha_gas, ind=ind_liq, field_type="scalar") - alpha_liq = 1 - alpha_gas - rho_liq = _field_filter(rho_liq, ind=ind_liq, field_type="scalar") - rho_gas = _field_filter(rho_gas, ind=ind_liq, field_type="scalar") - U_gas = _field_filter(U_gas, ind=ind_liq, field_type="vector") - U_liq = _field_filter(U_liq, ind=ind_liq, field_type="vector") - d_gas = _field_filter(d_gas, ind=ind_liq, field_type="scalar") - mu_liq = _field_filter(mu_liq, ind=ind_liq, field_type="scalar") - for species_name in species_names: - species_gas[species_name] = _field_filter( - species_gas[species_name], ind=ind_liq, field_type="scalar" - ) +def compute_instantaneous_kl( + case_folder: str, + time_folder: str, + species_names: str | list[str], + n_cells: int | None = None, + volume_time: str | None = None, + field_dict: dict | None = None, +) -> tuple[dict, dict]: + r""" + Calculate the mass-transfer coefficient (:math:`kL_{\rm spec}`) and saturation concentration (:math:`C^*_{\rm spec}`) for a list of species from instantaneous data (rather than doing a fit over time). - # Magnitude of the slip velocity. Using the last axis keeps this valid - # whether the velocities are uniform, shape (3,), or per cell, shape (N,3) - mag_U_diff = np.linalg.norm(U_gas - U_liq, axis=-1) + :math:`kL_{\rm spec}` is the penetration-theory coefficient that + :func:`compute_instantaneous_kla` multiplies by the interfacial area + :math:`a = 6 \alpha_{\rm gas} / d_{\rm gas}` to form :math:`kLa_{\rm spec}` + (i.e. :math:`kLa_{\rm spec} = kL_{\rm spec}\, a`), volume averaged over the liquid. - # Compute kLa - Re = rho_liq * mag_U_diff * d_gas / mu_liq - kla_spec_field = {} - for species_name in species_names: - kla_spec_field[species_name] = ( - (2 / np.pi**0.5) - * 3600 - * (Re**0.5) - * (((mu_liq / rho_liq) / globalVars[f"D_{species_name}"]) ** 0.5) - * (globalVars[f"D_{species_name}"] / d_gas) - * (6.0 / d_gas) - * alpha_gas - ) - cstar_spec_field = {} - for species_name in species_names: - cstar_spec_field[species_name] = ( - rho_gas - * species_gas[species_name] - * globalVars[f"He_{species_name}"] - ) / mw_species[species_name] + .. math:: + + \frac{1}{V_{\rm liq, tot}} \int_{V_{\rm liq}} kL_{\rm spec} dV + + .. math:: + + kL_{\rm spec} = 3600 \sqrt{\frac{4 D_{\rm spec} |u_{\rm slip}|}{\pi d_{\rm gas}}} + + where: + - :math:`kL_{\rm spec}` is the mass transfer coefficient in :math:`m.h^{-1}` + - :math:`d_{\rm gas}` is the bubble diameter in :math:`m`. Either read from the time folder, or looked up from phaseProperties + - :math:`D_{\rm spec}` is the species molecular diffusivity in :math:`m^2.s^{-1}`. Read from globalVars + - :math:`|u_{\rm slip}|` is the magnitude of the slip velocity in :math:`m.s^{-1}`. Read from the time folder. + - :math:`V_{\rm liq}` is the volume of liquid in :math:`m^3`. Read from the time folder. + + :math:`C^*_{\rm spec}` is computed as in :func:`compute_instantaneous_kla`. + + Parameters + ---------- + case_folder: str + Path to case folder + time_folder: str + Name of time folder to analyze + species_names: str | list[str] + List of species name for which to compute kL + n_cells : int | None + Number of cells in the domain. + If None, it will deduced from the field reading + volume_time : str | None + Time folder to read to get the cell volumes. + If None, finds volume time automatically + field_dict : dict + Dictionary of fields used to avoid rereading the same fields to calculate different quantities + + Returns + ---------- + kl_spec: dict + Instantaneous volume averaged kL for each species, in :math:`m.h^{-1}` + Keys are species names + Values are the kL values + cstar_spec: dict + Instantaneous volume averaged cstar for each species, in :math:`mol.m^{-3}` + Keys are species names + Values are the cstar values + field_dict : dict + Dictionary of fields read + """ + if field_dict is None: + field_dict = {} + if isinstance(species_names, str): + species_names = [species_names] + + kwargs = { + "case_folder": case_folder, + "time_folder": time_folder, + "n_cells": n_cells, + } + kwargs_vol = { + "case_folder": case_folder, + "time_folder": volume_time, + "n_cells": n_cells, + } - # Do volume average + kl_spec_field, field_dict = _instantaneous_kl_field( + case_folder, time_folder, species_names, n_cells, field_dict + ) + + # Volume average over the liquid + ind_liq, field_dict = _get_ind_liq(field_dict=field_dict, **kwargs) cell_volume, field_dict = read_cell_volumes( field_dict=field_dict, **kwargs_vol ) cell_volume = _field_filter(cell_volume, ind=ind_liq, field_type="scalar") - - kla_spec = {} - cstar_spec = {} - for species_name in species_names: - kla_spec[species_name] = _weighted_average( - kla_spec_field[species_name], cell_volume + kl_spec = { + species_name: _weighted_average( + kl_spec_field[species_name], cell_volume ) - cstar_spec[species_name] = _weighted_average( - cstar_spec_field[species_name], cell_volume * alpha_liq - ) - - return kla_spec, cstar_spec, field_dict + for species_name in species_names + } + cstar_spec, field_dict = _instantaneous_cstar( + case_folder, + time_folder, + species_names, + n_cells, + volume_time, + field_dict, + ) + return kl_spec, cstar_spec, field_dict def compute_fitted_kla( @@ -291,11 +491,11 @@ def compute_fitted_kla( Returns ---------- kla_spec: dict - Instantaneous volume averaged kLa for each species + Instantaneous volume averaged kLa for each species, in :math:`h^{-1}` Keys are species names Values are dictionaries with key 'mean' (mean kLa value) and 'std' (1 standard deviation for the kLa value) cstar_spec: dict - Instantaneous volume averaged cstar for each species + Instantaneous volume averaged cstar for each species, in :math:`mol.m^{-3}` Keys are species names Values are dictionaries with key 'mean' (mean cstar value) and 'std' (1 standard deviation for the cstar value) field_dict : dict @@ -317,10 +517,6 @@ def compute_fitted_kla( # Get all the time folders time_float_sorted, time_str_sorted = get_case_times(case_folder) - # Read globarVars into a python dict - # Replace all the #calc entries with their numeral values - globalVars = read_global_vars(case_folder=case_folder, cross_ref=True) - # Get Mw of the species mw_species = {} for species_name in species_names: @@ -386,3 +582,83 @@ def compute_fitted_kla( } return kla_spec, cstar_spec, field_dict + + +def compute_fitted_kl( + case_folder: str, + species_names: str | list[str], + n_cells: int | None = None, + volume_time: str | None = None, + num_warmup: int = 4000, + num_samples: int = 1000, + field_dict: dict | None = None, +) -> tuple[dict, dict, dict]: + r"""Fitted mass-transfer coefficient :math:`kL = kLa / a`. + + Same as :func:`compute_fitted_kla` but the fitted mean and std of each + species are divided by the interfacial area :math:`a = 6\,\epsilon / d`, + evaluated at the last time folder. + + Parameters + ---------- + case_folder: str + Path to case folder + species_names: str | list[str] + List of species name for which to compute kL + n_cells : int | None + Number of cells in the domain. + If None, it will deduced from the field reading + volume_time : str | None + Time folder to read to get the cell volumes. + If None, finds volume time automatically + num_warmup: int + Number of MCMC samples in the warmup phase + Defaults to 4000 + num_samples: int + Number of posterior MCMC samples generated + Defaults to 1000 + field_dict : dict + Dictionary of fields used to avoid rereading the same fields to calculate different quantities + + Returns + ---------- + kl_spec: dict + Fitted volume averaged kL for each species, in :math:`m.h^{-1}` + Keys are species names + Values are dictionaries with key 'mean' (mean kL value) and 'std' (1 standard deviation for the kL value) + cstar_spec: dict + Fitted volume averaged cstar for each species, in :math:`mol.m^{-3}` + Keys are species names + Values are dictionaries with key 'mean' (mean cstar value) and 'std' (1 standard deviation for the cstar value) + field_dict : dict + Dictionary of fields read + """ + if field_dict is None: + field_dict = {} + + kla_spec, cstar_spec, field_dict = compute_fitted_kla( + case_folder, + species_names, + n_cells=n_cells, + volume_time=volume_time, + num_warmup=num_warmup, + num_samples=num_samples, + field_dict=field_dict, + ) + # interfacial area at the last time folder + _, time_str_sorted = get_case_times(case_folder) + last_time = time_str_sorted[-1] + area_cache: dict = {} + gas_holdup, area_cache = compute_gas_holdup( + case_folder, last_time, n_cells, volume_time, area_cache + ) + bubble_diam, area_cache = compute_ave_bubble_diam( + case_folder, last_time, n_cells, volume_time, area_cache + ) + area = interfacial_area(gas_holdup, bubble_diam) + + kl_spec = { + species: {"mean": kla["mean"] / area, "std": kla["std"] / area} + for species, kla in kla_spec.items() + } + return kl_spec, cstar_spec, field_dict diff --git a/bird/postprocess/post_quantities/loop_velocity.py b/bird/postprocess/post_quantities/loop_velocity.py new file mode 100644 index 00000000..25a2b8b4 --- /dev/null +++ b/bird/postprocess/post_quantities/loop_velocity.py @@ -0,0 +1,303 @@ +import numpy as np + +from bird import logger +from bird.meshing.block_rect_mesh import from_block_rect_to_seg +from bird.utilities.ofio import read_cell_volumes, read_field + +from ._cell_filter import _weighted_average + + +def _normalize(vector: np.ndarray) -> np.ndarray: + """Unit vector along ``vector`` (raises on a zero vector).""" + norm = np.linalg.norm(vector) + if norm == 0: + raise ValueError("Cannot normalize a zero-length direction vector") + return vector / norm + + +def _report_coverage(covered: np.ndarray) -> None: + """Warn about the fraction of uncovered cells; list their ids in debug.""" + n_cells = len(covered) + n_uncovered = int(np.count_nonzero(~covered)) + if n_uncovered: + logger.warning( + f"{n_uncovered}/{n_cells} cells " + f"({100.0 * n_uncovered / n_cells:.2f}%) have no loop direction " + f"and are excluded from the loop velocity" + ) + logger.debug( + f"Uncovered cell ids: {np.flatnonzero(~covered).tolist()}" + ) + + +def build_loop_direction_field( + cell_centers: np.ndarray, boxes: list[dict] +) -> np.ndarray: + """Per-cell loop-direction field from labelled axis-aligned boxes. + + Each cell inherits the (unit) direction of the box that contains its centre. + Cells in no box keep ``NaN`` (excluded from the average); a cell in more than + one box is ambiguous and raises. + + Parameters + ---------- + cell_centers: np.ndarray + Cell centres, shape ``(N, 3)`` + boxes: list[dict] + List of ``{"min": [x, y, z], "max": [x, y, z], "direction": [dx, dy, dz]}``; + ``direction`` is normalized internally + + Returns + ---------- + direction_field: np.ndarray + Direction field, shape ``(N, 3)``, ``NaN`` where uncovered + """ + cell_centers = np.asarray(cell_centers, dtype=float) + n_cells = len(cell_centers) + direction_field = np.full((n_cells, 3), np.nan) + coverage_count = np.zeros(n_cells, dtype=int) + + for box in boxes: + box_min = np.asarray(box["min"], dtype=float) + box_max = np.asarray(box["max"], dtype=float) + direction = _normalize(np.asarray(box["direction"], dtype=float)) + inside = np.all( + (cell_centers >= box_min) & (cell_centers <= box_max), axis=1 + ) + coverage_count += inside + direction_field[inside] = direction + + n_overlap = int(np.count_nonzero(coverage_count > 1)) + if n_overlap: + raise ValueError( + f"{n_overlap} cells fall in more than one box; loop-direction " + f"boxes must not overlap" + ) + + covered = coverage_count > 0 + if not np.any(covered): + raise ValueError( + "No cell falls within any loop box; the boxes and the mesh are in " + "different coordinate frames. For a block-rectangular case this " + "usually means the 'rescale' parameter is missing from mesh.json " + "(assumed 1.0) - supply the rescale used to build the mesh." + ) + + _report_coverage(covered) + return direction_field + + +def build_loop_direction_field_from_path( + cell_centers: np.ndarray, path_points: np.ndarray, max_dist: float +) -> np.ndarray: + """Per-cell loop-direction field from a centerline polyline. + + Each cell within ``max_dist`` of the polyline gets the unit tangent of its + nearest segment; cells farther away keep ``NaN`` (excluded). The polyline + ordering sets the circulation sense. + + Parameters + ---------- + cell_centers: np.ndarray + Cell centres, shape ``(N, 3)`` + path_points: np.ndarray + Ordered centerline vertices, shape ``(M, 3)`` + max_dist: float + Cells beyond this distance from the path are left uncovered + + Returns + ---------- + direction_field: np.ndarray + Direction field, shape ``(N, 3)``, ``NaN`` where uncovered + """ + cell_centers = np.asarray(cell_centers, dtype=float) + path_points = np.asarray(path_points, dtype=float) + if len(path_points) < 2: + raise ValueError("path_points must contain at least two vertices") + + n_cells = len(cell_centers) + best_distance = np.full(n_cells, np.inf) + direction_field = np.full((n_cells, 3), np.nan) + + for start, end in zip(path_points[:-1], path_points[1:]): + segment = end - start + length_sq = float(segment @ segment) + if length_sq == 0.0: + continue + tangent = segment / np.sqrt(length_sq) + # Projection parameter of each cell onto the segment, clamped to [0, 1] + param = np.clip( + ((cell_centers - start) @ segment) / length_sq, 0.0, 1.0 + ) + projection = start + param[:, None] * segment + distance = np.linalg.norm(cell_centers - projection, axis=1) + closer = distance < best_distance + best_distance[closer] = distance[closer] + direction_field[closer] = tangent + + uncovered = best_distance > max_dist + direction_field[uncovered] = np.nan + if np.all(uncovered): + raise ValueError( + "No cell lies within max_dist of the path; the path and the mesh " + "are in different coordinate frames, or max_dist is too small" + ) + _report_coverage(~uncovered) + return direction_field + + +def propose_loop_boxes_block_rect( + mesh_geometry: dict, rescale: float | None = None +) -> list[dict]: + """Candidate loop-direction boxes for a block-rectangular loop reactor. + + Builds one box per mesh segment (leg) from + :func:`bird.meshing.block_rect_mesh.from_block_rect_to_seg`. Each box spans the + leg along its axis, trimmed half a block at each end so adjacent legs do not + overlap and the ambiguous junction cells stay uncovered. The proposed direction + is each leg's own axis orientation (``end - start``). + + The mesh scale is never inferred: the box coordinates are scaled by ``rescale``, + which the caller must set to the factor used to build the mesh (e.g. the + ``transformPoints`` scale). A mismatch surfaces downstream as a zero-coverage + error in :func:`build_loop_direction_field`. + + Parameters + ---------- + mesh_geometry: dict + The ``"Geometry"`` dict from the case ``mesh.json`` + rescale: float | None + Uniform scale factor applied to the box coordinates; ``None`` assumes + 1.0 (base units) + + Returns + ---------- + boxes: list[dict] + Box list consumable by :func:`build_loop_direction_field` + """ + factor = 1.0 if rescale is None else float(rescale) + segment_data = from_block_rect_to_seg(mesh_geometry, rescale=False) + segments = segment_data["segments"] + block_size = segment_data["blocksize"] + + boxes = [] + for segment in segments.values(): + start = np.asarray(segment["start"], dtype=float) + end = np.asarray(segment["end"], dtype=float) + normal_dir = int(segment["normal_dir"]) + max_rad = float(segment["max_rad"]) + + box_min = np.empty(3) + box_max = np.empty(3) + for axis in range(3): + if axis == normal_dir: + low = min(start[axis], end[axis]) + 0.5 * block_size[axis] + high = max(start[axis], end[axis]) - 0.5 * block_size[axis] + else: + low = start[axis] - max_rad + high = start[axis] + max_rad + box_min[axis] = low + box_max[axis] = high + + boxes.append( + { + "min": (box_min * factor).tolist(), + "max": (box_max * factor).tolist(), + "direction": _normalize(end - start).tolist(), + } + ) + return boxes + + +def _read_liquid_fraction( + case_folder: str, time_folder: str, n_cells: int, field_dict: dict +) -> tuple[np.ndarray | float, dict]: + """Liquid fraction from alpha.gas (1 - alpha.gas) or alpha.liquid.""" + try: + alpha_gas, field_dict = read_field( + case_folder, time_folder, "alpha.gas", n_cells, field_dict + ) + return 1.0 - np.asarray(alpha_gas), field_dict + except FileNotFoundError: + pass + try: + alpha_liquid, field_dict = read_field( + case_folder, time_folder, "alpha.liquid", n_cells, field_dict + ) + return alpha_liquid, field_dict + except FileNotFoundError: + raise FileNotFoundError( + "Need alpha.gas or alpha.liquid to average over the liquid" + ) + + +def compute_loop_velocity( + case_folder: str, + time_folder: str, + loop_direction_field: np.ndarray, + volume_time: str | None = None, + field_dict: dict | None = None, +) -> tuple[float, dict]: + r"""Loop velocity: liquid velocity projected on the loop direction. + + .. math:: + \frac{\int_{V_{\rm loop}} \alpha_{\rm liq}\, (\mathbf{U}_{\rm liq} \cdot + \hat{\mathbf{e}}_{\rm loop})\, dV}{\int_{V_{\rm loop}} \alpha_{\rm liq}\, dV} + + Averaged over the liquid on the covered cells. Positive follows the prescribed + circulation, negative is reversed. + + Parameters + ---------- + case_folder: str + Path to case folder + time_folder: str + Name of the time folder to analyze + loop_direction_field: np.ndarray + ``(N, 3)`` field from a builder, ``NaN`` on uncovered cells + volume_time : str | None + Time folder to read to get the cell volumes. + If None, finds volume time automatically + field_dict : dict + Dictionary of fields used to avoid rereading the same fields to calculate different quantities + + Returns + ---------- + loop_velocity: float + Volume averaged loop velocity, in :math:`m.s^{-1}` + field_dict : dict + Dictionary of fields read + """ + if field_dict is None: + field_dict = {} + + loop_direction_field = np.asarray(loop_direction_field, dtype=float) + n_cells = len(loop_direction_field) + covered = ~np.isnan(loop_direction_field).any(axis=1) + if not np.any(covered): + raise ValueError("The loop-direction field covers no cell") + + u_liquid, field_dict = read_field( + case_folder, time_folder, "U.liquid", n_cells, field_dict + ) + # A uniform vector field is read as shape (3,); broadcast to one per cell + if np.ndim(u_liquid) == 1: + u_liquid = np.broadcast_to(u_liquid, (n_cells, 3)) + + cell_volume, field_dict = read_cell_volumes( + case_folder, volume_time, n_cells, field_dict + ) + alpha_liquid, field_dict = _read_liquid_fraction( + case_folder, time_folder, n_cells, field_dict + ) + + # Liquid velocity projected on the loop direction, averaged over the liquid + weights = np.asarray(cell_volume) * np.asarray(alpha_liquid) + if weights.ndim == 0: + weights = np.full(n_cells, float(weights)) + projected = np.sum( + u_liquid[covered] * loop_direction_field[covered], axis=1 + ) + loop_velocity = _weighted_average(projected, weights[covered]) + + return float(loop_velocity), field_dict diff --git a/bird/postprocess/post_quantities/phase.py b/bird/postprocess/post_quantities/phase.py index 23e30b8c..bfbdd0c5 100644 --- a/bird/postprocess/post_quantities/phase.py +++ b/bird/postprocess/post_quantities/phase.py @@ -1,12 +1,45 @@ +import os + +import numpy as np + +from bird import logger from bird.utilities.ofio import ( read_bubble_diameter, read_cell_volumes, read_field, + read_global_vars, ) from ._cell_filter import _field_filter, _get_ind_liq, _weighted_average +def _read_liquid_density_field( + case_folder: str, + time_folder: str, + n_cells: int | None, + field_dict: dict, +) -> tuple[np.ndarray | float, dict]: + """Liquid density field: thermo:rho.liquid, then rho.liquid; if neither is + written, globalVars rho0MixLiq (then 1000).""" + for rho_name in ("thermo:rho.liquid", "rho.liquid"): + try: + rho_liquid, field_dict = read_field( + case_folder, time_folder, rho_name, n_cells, field_dict + ) + return rho_liquid, field_dict + except FileNotFoundError: + continue + try: + rho0 = float(read_global_vars(case_folder).get("rho0MixLiq", 1000.0)) + except FileNotFoundError: + rho0 = 1000.0 + logger.warning( + f"No liquid density field in " + f"{os.path.join(case_folder, time_folder)}, assuming {rho0} kg/m3" + ) + return rho0, field_dict + + def compute_gas_holdup( case_folder: str, time_folder: str, @@ -157,3 +190,124 @@ def compute_ave_bubble_diam( diam = _weighted_average(d_gas, alpha_liq * cell_volume) return diam, field_dict + + +def interfacial_area(gas_holdup: float, bubble_diam: float) -> float: + r"""Gas-liquid interfacial area per unit volume :math:`a = 6\,\epsilon / d`. + + Parameters + ---------- + gas_holdup: float + Gas holdup :math:`\epsilon` (dimensionless) + bubble_diam: float + Bubble diameter :math:`d`, in :math:`m` + + Returns + ---------- + interfacial_area: float + Interfacial area :math:`a`, in :math:`m^{-1}` + """ + return 6.0 * gas_holdup / bubble_diam + + +def compute_ave_liquid_density( + case_folder: str, + time_folder: str, + n_cells: int | None = None, + volume_time: str | None = None, + field_dict: dict | None = None, +) -> tuple[float, dict]: + r"""Volume-averaged liquid density over the liquid. + + Reads ``thermo:rho.liquid`` (then ``rho.liquid``); returns 1000 kg/m3 if + neither field is written. + + Parameters + ---------- + case_folder: str + Path to case folder + time_folder: str + Name of the time folder to analyze + n_cells : int | None + Number of cells in the domain. + If None, it will deduced from the field reading + volume_time : str | None + Time folder to read to get the cell volumes. + If None, finds volume time automatically + field_dict : dict + Dictionary of fields used to avoid rereading the same fields to calculate different quantities + + Returns + ---------- + density: float + Volume averaged liquid density, in :math:`kg.m^{-3}` + field_dict : dict + Dictionary of fields read + """ + if field_dict is None: + field_dict = {} + + ind_liq, field_dict = _get_ind_liq( + case_folder, time_folder, n_cells=n_cells, field_dict=field_dict + ) + rho_liquid, field_dict = _read_liquid_density_field( + case_folder, time_folder, n_cells, field_dict + ) + cell_volume, field_dict = read_cell_volumes( + case_folder, volume_time, n_cells, field_dict + ) + rho_liquid = _field_filter(rho_liquid, ind=ind_liq, field_type="scalar") + cell_volume = _field_filter(cell_volume, ind=ind_liq, field_type="scalar") + return _weighted_average(rho_liquid, cell_volume), field_dict + + +def compute_ave_liquid_velocity( + case_folder: str, + time_folder: str, + n_cells: int | None = None, + volume_time: str | None = None, + field_dict: dict | None = None, +) -> tuple[float, dict]: + r"""Volume-averaged liquid velocity magnitude :math:`|U_{\rm liq}|` over the liquid. + + Parameters + ---------- + case_folder: str + Path to case folder + time_folder: str + Name of the time folder to analyze + n_cells : int | None + Number of cells in the domain. + If None, it will deduced from the field reading + volume_time : str | None + Time folder to read to get the cell volumes. + If None, finds volume time automatically + field_dict : dict + Dictionary of fields used to avoid rereading the same fields to calculate different quantities + + Returns + ---------- + velocity_magnitude: float + Volume averaged liquid velocity magnitude, in :math:`m.s^{-1}` + field_dict : dict + Dictionary of fields read + """ + if field_dict is None: + field_dict = {} + + ind_liq, field_dict = _get_ind_liq( + case_folder, time_folder, n_cells=n_cells, field_dict=field_dict + ) + u_liquid, field_dict = read_field( + case_folder, time_folder, "U.liquid", n_cells, field_dict + ) + cell_volume, field_dict = read_cell_volumes( + case_folder, volume_time, n_cells, field_dict + ) + if np.ndim(u_liquid) == 1: # uniform field, shape (3,) + u_magnitude = float(np.linalg.norm(u_liquid)) + else: + u_magnitude = np.linalg.norm(u_liquid, axis=1) + u_magnitude = _field_filter(u_magnitude, ind=ind_liq, field_type="scalar") + cell_volume = _field_filter(cell_volume, ind=ind_liq, field_type="scalar") + return _weighted_average(u_magnitude, cell_volume), field_dict diff --git a/bird/postprocess/post_quantities/species.py b/bird/postprocess/post_quantities/species.py index a3f8da37..476cfb0c 100644 --- a/bird/postprocess/post_quantities/species.py +++ b/bird/postprocess/post_quantities/species.py @@ -1,5 +1,3 @@ -import os - from bird import logger from bird.utilities.ofio import ( read_cell_volumes, @@ -8,6 +6,7 @@ ) from ._cell_filter import _field_filter, _get_ind_liq, _weighted_average +from .phase import _read_liquid_density_field def compute_ave_y_liq( @@ -168,17 +167,9 @@ def compute_ave_conc_liq( cell_volume, field_dict = read_cell_volumes( field_dict=field_dict, **kwargs_vol ) - try: - rho_liq, field_dict = read_field( - field_name="thermo:rho.liquid", field_dict=field_dict, **kwargs - ) - except FileNotFoundError: - abs_time_path = os.path.join(case_folder, time_folder) - logger.warning( - f"thermo:rho.liquid not found in {abs_time_path}, assuming it is 1000kg/m3" - ) - rho_liq = 1000.0 - field_dict["rho_liq"] = rho_liq + rho_liq, field_dict = _read_liquid_density_field( + case_folder, time_folder, n_cells, field_dict + ) # Only compute over the liquid alpha_liq = _field_filter(alpha_liq, ind=ind_liq, field_type="scalar") diff --git a/bird/postprocess/post_quantities/transport.py b/bird/postprocess/post_quantities/transport.py new file mode 100644 index 00000000..6371b4a9 --- /dev/null +++ b/bird/postprocess/post_quantities/transport.py @@ -0,0 +1,78 @@ +import numpy as np + +from bird.utilities.ofio import read_cell_volumes, read_field + +from ._cell_filter import _field_filter, _get_ind_liq, _weighted_average +from .phase import _read_liquid_density_field + +# Turbulent Prandtl (= turbulent Schmidt) for the nut/Prt fallback +TURBULENT_PRANDTL = 0.85 + + +def compute_turbulent_diffusivity( + case_folder: str, + time_folder: str, + n_cells: int | None = None, + field_dict: dict | None = None, +) -> tuple[float, dict]: + r"""Liquid-averaged turbulent mass diffusivity. + + .. math:: + D_{\rm turb} = \frac{\alpha_t^{\rm liq}}{\rho^{\rm liq}} + + averaged over the liquid [m^2/s]. ``alphat.liquid`` already carries the + solver's turbulent Prandtl number; if it was not written, the field falls + back to :math:`\nu_t^{\rm liq} / Pr_t` with :math:`Pr_t = 0.85`. The density + is read from ``thermo:rho.liquid`` (then ``rho.liquid``), falling back to + ``rho0MixLiq`` from ``globalVars`` and then 1000. + + Parameters + ---------- + case_folder: str + Path to case folder + time_folder: str + Name of the time folder to analyze + n_cells : int | None + Number of cells in the domain. + If None, it will deduced from the field reading + field_dict : dict + Dictionary of fields used to avoid rereading the same fields to calculate different quantities + + Returns + ---------- + turbulent_diffusivity: float + Volume averaged turbulent mass diffusivity, in :math:`m^2.s^{-1}` + field_dict : dict + Dictionary of fields read + """ + if field_dict is None: + field_dict = {} + + ind_liq, field_dict = _get_ind_liq( + case_folder, time_folder, n_cells=n_cells, field_dict=field_dict + ) + cell_volume, field_dict = read_cell_volumes( + case_folder, time_folder, n_cells, field_dict + ) + + rho_liquid, field_dict = _read_liquid_density_field( + case_folder, time_folder, n_cells, field_dict + ) + + # Turbulent diffusivity field: alphat.liquid / rho, else nut.liquid / Prt + try: + alphat_liquid, field_dict = read_field( + case_folder, time_folder, "alphat.liquid", n_cells, field_dict + ) + diffusivity = np.asarray(alphat_liquid) / np.asarray(rho_liquid) + except FileNotFoundError: + nut_liquid, field_dict = read_field( + case_folder, time_folder, "nut.liquid", n_cells, field_dict + ) + diffusivity = np.asarray(nut_liquid) / TURBULENT_PRANDTL + if diffusivity.ndim == 0: + diffusivity = float(diffusivity) + + diffusivity = _field_filter(diffusivity, ind=ind_liq, field_type="scalar") + cell_volume = _field_filter(cell_volume, ind=ind_liq, field_type="scalar") + return _weighted_average(diffusivity, cell_volume), field_dict diff --git a/bird/postprocess/stats.py b/bird/postprocess/stats.py index 8f5a941e..963556e1 100644 --- a/bird/postprocess/stats.py +++ b/bird/postprocess/stats.py @@ -184,3 +184,56 @@ def calc_mean( unc_val = np.sqrt(sigsq * T0 / N) return mean_val, unc_val * 1.96 + + +def steady_stat( + time_series: np.ndarray | list, + time_values: np.ndarray | list, + window: float | None = None, +) -> tuple[float, float]: + """(mean, 1-sigma uncertainty) over the tail window of a time series. + + The statistic is computed over the last ``window`` (in time units) of the + series via the T0 estimator (:func:`calc_mean`), with its 95% (1.96 sigma) + uncertainty converted to 1 sigma. ``window`` defaults to 10% of the total + simulation time. Returns (nan, nan) for an empty or all-nan series and + (value, 0.0) when a single sample falls in the window. + + Parameters + ---------- + time_series: np.ndarray | list + Time series of the signal + time_values: np.ndarray | list + Sampling times of the series + window: float | None + Length of the end window in time units. + If None, 10% of the total time span is used + + Returns + ---------- + mean_val: float + Mean value over the tail window + unc_val: float + 1-sigma uncertainty about the mean + """ + time_series = np.asarray(time_series, dtype=float) + time_values = np.asarray(time_values, dtype=float) + if time_series.size == 0 or np.all(np.isnan(time_series)): + return np.nan, np.nan + + if window is None: + window = 0.1 * (time_values.max() - time_values.min()) + logger.warning(f"Steady state assumed over last {window}s") + + in_window = time_values >= time_values.max() - window + windowed_series = time_series[in_window] + windowed_values = time_values[in_window] + if np.all(np.isnan(windowed_series)): + return np.nan, np.nan + if windowed_series.size < 2 or np.all( + windowed_series == windowed_series[0] + ): + return float(windowed_series[0]), 0.0 + + mean_value, uncertainty_95 = calc_mean(windowed_series, windowed_values) + return float(mean_value), float(uncertainty_95 / 1.96) diff --git a/bird/preprocess/dynamic_mixer/io_fvModels.py b/bird/preprocess/dynamic_mixer/io_fvModels.py index f8b02d38..b78fb49c 100644 --- a/bird/preprocess/dynamic_mixer/io_fvModels.py +++ b/bird/preprocess/dynamic_mixer/io_fvModels.py @@ -374,11 +374,16 @@ def write_mixer_ball( ): """Append one ``ball`` mixer block to ``fvModels``. - :param mixer: a ready :class:`~bird.preprocess.dynamic_mixer.mixer.ActuatorMixer`. - :param power_mode: ``"from_P"`` (drive by ``mixer.power``) or - ``"from_Np_Vtip"`` (drive by ``mixer.Np`` and ``mixer.Vtip``). - :param momentum_mode: ``"axial"`` (thrust only) or ``"axial_and_swirl"`` - (thrust + tangential source using ``mixer.sigma``). + Parameters + ---------- + mixer: ActuatorMixer + A ready :class:`~bird.preprocess.dynamic_mixer.mixer.ActuatorMixer`. + power_mode: str + ``"from_P"`` (drive by ``mixer.power``) or ``"from_Np_Vtip"`` (drive by + ``mixer.Np`` and ``mixer.Vtip``). + momentum_mode: str + ``"axial"`` (thrust only) or ``"axial_and_swirl"`` (thrust + tangential + source using ``mixer.sigma``). """ if power_mode not in ("from_P", "from_Np_Vtip"): raise ValueError(f"unknown power_mode {power_mode!r}") @@ -542,8 +547,10 @@ def write_static_mixer_ball(mixer, output_folder): energy-neutral axial reaction; a lumped axial drag adds the viscous loss. The source is inactive when the inflow opposes the mixer orientation. - :param mixer: a ready - :class:`~bird.preprocess.dynamic_mixer.mixer.StaticMixer`. + Parameters + ---------- + mixer: StaticMixer + A ready :class:`~bird.preprocess.dynamic_mixer.mixer.StaticMixer`. """ nd = int(mixer.normal_dir) dn = ["dx", "dy", "dz"][nd] diff --git a/bird/preprocess/dynamic_mixer/mixer.py b/bird/preprocess/dynamic_mixer/mixer.py index 92c99dd5..d8a190f0 100644 --- a/bird/preprocess/dynamic_mixer/mixer.py +++ b/bird/preprocess/dynamic_mixer/mixer.py @@ -171,10 +171,13 @@ def update_from_expl_dict(self, mixer_dict: dict) -> None: def update_from_loop_dict(self, mixer_dict: dict, geom_dict: dict) -> None: """Populate from a loop mixer dict. - :param mixer_dict: mixer entry with ``branch_id``, ``frac_space`` and, - optionally, ``radius`` as a fraction of the branch cross-section. - :param geom_dict: output of ``from_block_rect_to_seg`` (``segments`` and - ``blocksize``). + Parameters + ---------- + mixer_dict: dict + Mixer entry with ``branch_id``, ``frac_space`` and, optionally, + ``radius`` as a fraction of the branch cross-section. + geom_dict: dict + Output of ``from_block_rect_to_seg`` (``segments`` and ``blocksize``). """ segment = geom_dict["segments"][mixer_dict["branch_id"]] pos = segment["start"] + mixer_dict["frac_space"] * segment["conn"] @@ -274,11 +277,14 @@ def update_from_expl_dict(self, mixer_dict: dict) -> None: def update_from_loop_dict(self, mixer_dict: dict, geom_dict: dict) -> None: """Populate from a loop mixer dict. - :param mixer_dict: mixer entry with ``branch_id``, ``frac_space`` and, - optionally, ``radius`` as a fraction of the branch cross-section - (``0.5`` spans the whole tube). - :param geom_dict: output of ``from_block_rect_to_seg`` (``segments`` and - ``blocksize``). + Parameters + ---------- + mixer_dict: dict + Mixer entry with ``branch_id``, ``frac_space`` and, optionally, + ``radius`` as a fraction of the branch cross-section (``0.5`` spans + the whole tube). + geom_dict: dict + Output of ``from_block_rect_to_seg`` (``segments`` and ``blocksize``). """ segment = geom_dict["segments"][mixer_dict["branch_id"]] pos = segment["start"] + mixer_dict["frac_space"] * segment["conn"] diff --git a/bird/preprocess/json_gen/design_io.py b/bird/preprocess/json_gen/design_io.py index 7846bbff..7607f8e1 100644 --- a/bird/preprocess/json_gen/design_io.py +++ b/bird/preprocess/json_gen/design_io.py @@ -13,8 +13,11 @@ def generate_stl_patch(filename, bc_dict, geom_dict): def generate_dynamic_mixer(filename, mixers_list, geom_dict, model=None): """Write a mixers.json. - :param model: optional dict of top-level model selectors written verbatim - (e.g. ``{"volumetric_source": "ball", "power": "from_Np_Vtip", + Parameters + ---------- + model: + Optional dict of top-level model selectors written verbatim (e.g. + ``{"volumetric_source": "ball", "power": "from_Np_Vtip", "momentum_source": "axial_and_swirl"}``). ``None`` keeps the legacy pancake output. """ diff --git a/bird/preprocess/json_gen/generate_designs.py b/bird/preprocess/json_gen/generate_designs.py index 254b722f..f05b1040 100644 --- a/bird/preprocess/json_gen/generate_designs.py +++ b/bird/preprocess/json_gen/generate_designs.py @@ -87,11 +87,18 @@ def sample_placement_designs( :func:`check_config` keeps only designs with at least one inlet and :func:`compare_config` rejects duplicates. Keys are contiguous ``0..n-1``. - :param branches_com: branch ids on which choices are placed. - :param branchcom_spots: ``branch_id -> array`` of candidate spot fractions. - :param n_designs: number of distinct valid designs to return. - :param choices: per-spot categorical choices (e.g. mixer/sparger/none). - :param max_attempts: give up after this many draws. + Parameters + ---------- + branches_com: + Branch ids on which choices are placed. + branchcom_spots: + ``branch_id -> array`` of candidate spot fractions. + n_designs: + Number of distinct valid designs to return. + choices: + Per-spot categorical choices (e.g. mixer/sparger/none). + max_attempts: + Give up after this many draws. """ config_dict = {} attempts = 0 @@ -706,9 +713,14 @@ def overwrite_qoi_params(case_folder, rhog, cstar_co2, cstar_h2): own values (the mixer power is NOT touched here -- get_qoi.py reads it from mixers.json). - :param rhog: gas density [kg/m3] used in the injection-power estimate. - :param cstar_co2: (low, high) uniform-prior bounds for the CO2 c*. - :param cstar_h2: (low, high) uniform-prior bounds for the H2 c*. + Parameters + ---------- + rhog: + Gas density in :math:`kg.m^{-3}` used in the injection-power estimate. + cstar_co2: + (low, high) uniform-prior bounds for the CO2 c*. + cstar_h2: + (low, high) uniform-prior bounds for the H2 c*. """ co2_lo, co2_hi = cstar_co2 h2_lo, h2_hi = cstar_h2 @@ -751,8 +763,11 @@ def overwrite_ncores(case_folder, n): def overwrite_controldict(case_folder, params): """Rewrite time-stepping entries in system/controlDict. - :param params: dict with any of ``deltaT``, ``endTime``, ``maxCo``, - ``maxDeltaT``; each present key overwrites its scalar entry. + Parameters + ---------- + params: + Dict with any of ``deltaT``, ``endTime``, ``maxCo``, ``maxDeltaT``; + each present key overwrites its scalar entry. """ filename = os.path.join(case_folder, "system", "controlDict") with open(filename, "r+") as f: diff --git a/bird/utilities/ofio/__init__.py b/bird/utilities/ofio/__init__.py index ec90e6d5..66618409 100644 --- a/bird/utilities/ofio/__init__.py +++ b/bird/utilities/ofio/__init__.py @@ -4,6 +4,7 @@ get_case_times, ) from .foam_dict_io import ( + read_gravity, read_openfoam_dict, write_openfoam_dict, ) @@ -24,6 +25,7 @@ ) from .global_vars import ( read_global_vars, + read_surface_tension, ) from .thermo import ( get_species_name, @@ -39,10 +41,12 @@ "read_cell_volumes", "read_field", "read_global_vars", + "read_gravity", "read_mu_liquid", "read_openfoam_dict", "read_size_groups", "read_surface_field_value", + "read_surface_tension", "species_name_to_mw", "write_openfoam_dict", ] diff --git a/bird/utilities/ofio/foam_dict_io.py b/bird/utilities/ofio/foam_dict_io.py index fe1ebc8a..a2c94b96 100644 --- a/bird/utilities/ofio/foam_dict_io.py +++ b/bird/utilities/ofio/foam_dict_io.py @@ -1,3 +1,4 @@ +import os import re @@ -193,6 +194,16 @@ def read_openfoam_dict(filename: str) -> dict: return foam_dict +def read_gravity(case_folder: str) -> float: + """Gravity magnitude [m/s2] from constant/g; 9.81 if the file is absent.""" + try: + g_dict = read_openfoam_dict(os.path.join(case_folder, "constant", "g")) + except FileNotFoundError: + return 9.81 + gravity_vector = [float(component) for component in g_dict["value"]] + return sum(component**2 for component in gravity_vector) ** 0.5 + + def write_openfoam_dict(data: dict, filename: str, indent: int = 0) -> None: """ Save a Python dictionary back to an OpenFOAM-style file. diff --git a/bird/utilities/ofio/global_vars.py b/bird/utilities/ofio/global_vars.py index ec2f9bd0..eb3fdfc4 100644 --- a/bird/utilities/ofio/global_vars.py +++ b/bird/utilities/ofio/global_vars.py @@ -6,6 +6,8 @@ from bird import logger +from .foam_dict_io import read_openfoam_dict + def _cross_reference_math(expr): """ @@ -207,3 +209,24 @@ def read_global_vars( globalVars_dict = _cross_reference_global_vars(globalVars_dict) return globalVars_dict + + +def read_surface_tension(case_folder: str) -> float: + """Surface tension [N/m] from constant/phaseProperties. + + Resolves a ``$var`` reference (e.g. ``sigma $sigmaLiq;``) against globalVars. + """ + phase_properties = read_openfoam_dict( + os.path.join(case_folder, "constant", "phaseProperties") + ) + sigma = None + for entry in phase_properties["surfaceTension"].values(): + if isinstance(entry, dict) and "sigma" in entry: + sigma = entry["sigma"] + break + if sigma is None: + raise KeyError("No sigma found in surfaceTension of phaseProperties") + + if isinstance(sigma, str) and sigma.startswith("$"): + return float(read_global_vars(case_folder, cross_ref=True)[sigma[1:]]) + return float(sigma) diff --git a/bird/version.py b/bird/version.py index cfeacc5a..57285602 100644 --- a/bird/version.py +++ b/bird/version.py @@ -1,3 +1,3 @@ """Bio reactor design version""" -__version__ = "0.0.57" +__version__ = "0.0.59" diff --git a/papers/scaleup/SA_optimization/README.md b/papers/scaleup/SA_optimization/README.md new file mode 100644 index 00000000..ff88756f --- /dev/null +++ b/papers/scaleup/SA_optimization/README.md @@ -0,0 +1,19 @@ + +# Optim + +`python get_optimal_all_qois.py --plot-only` regenerates the optimization plots + +`python get_optimal_all_qois.py` recomputes the optimization + +# Constrained optim + +`python get_optimal_constrained.py` redoes the constrained optimization (constrains the number of spargers) + +`python plot_marginal_gain.py` plots the results of the constrained optimization + +# Latex tables + +`python make_hyperparam_tables.py` makes the latex tables with the optimal hyperpar + +`python make_val_rmse_table.py` makes the surrogate perf tables + diff --git a/papers/scaleup/SA_optimization/configs.pkl b/papers/scaleup/SA_optimization/configs.pkl new file mode 100644 index 00000000..b4bd9b37 Binary files /dev/null and b/papers/scaleup/SA_optimization/configs.pkl differ diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/X_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/X_data.csv new file mode 100644 index 00000000..7e52590c --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/X_data.csv @@ -0,0 +1,289 @@ +1,2,2,0,1,1,1,1,0,1,2 +2,1,1,1,1,0,0,1,0,0,0 +0,1,2,1,1,0,2,2,1,1,1 +1,2,2,0,0,1,1,2,1,1,2 +0,2,0,0,2,2,1,2,0,0,0 +0,2,2,1,0,0,2,2,1,2,0 +0,2,0,0,2,1,0,2,1,1,0 +0,2,0,1,1,0,1,2,1,0,2 +0,0,2,2,0,2,1,1,2,1,1 +0,0,2,1,1,1,1,1,1,1,2 +0,0,1,2,0,2,0,0,0,1,1 +2,2,2,1,0,2,1,2,1,1,2 +1,0,1,0,2,1,1,2,2,1,0 +1,1,2,0,1,0,0,2,1,0,0 +1,0,1,0,2,2,1,2,1,0,0 +2,2,0,2,2,2,1,0,0,2,2 +2,1,2,2,2,0,2,1,1,0,0 +0,1,2,1,0,0,2,2,0,1,2 +1,0,2,1,2,0,2,0,1,0,0 +2,0,1,1,1,1,1,0,2,2,0 +2,2,1,0,1,0,2,1,2,0,0 +1,0,1,2,0,1,0,0,1,1,2 +1,0,0,2,2,1,1,2,2,2,0 +2,2,0,2,2,2,1,2,1,2,2 +2,1,0,1,2,0,2,1,2,0,1 +2,0,2,2,1,2,1,0,1,1,2 +2,2,2,0,2,2,2,0,1,2,0 +2,0,1,0,2,0,2,0,0,2,1 +2,0,1,2,1,2,1,1,1,1,2 +0,0,0,0,0,1,2,1,0,2,0 +0,1,1,1,1,1,1,2,0,0,0 +2,0,1,2,0,1,0,1,1,2,2 +1,2,2,2,1,0,1,0,0,1,2 +2,2,1,2,1,2,0,0,1,0,1 +0,2,1,1,2,0,1,0,2,2,1 +2,1,2,0,1,0,2,1,1,0,0 +0,1,0,0,2,0,0,2,0,2,0 +1,0,1,2,0,0,0,0,0,1,2 +2,2,2,0,1,1,0,1,1,1,2 +2,1,2,1,1,0,0,2,0,1,1 +1,2,2,0,1,0,2,1,1,0,2 +1,1,1,2,0,0,0,1,0,1,1 +1,0,0,1,1,0,2,1,0,1,1 +1,0,0,2,0,0,1,2,2,1,2 +2,2,1,0,2,2,1,0,0,1,1 +0,0,1,0,2,2,1,2,2,2,2 +0,2,1,2,2,0,2,0,1,1,2 +1,2,1,2,2,0,2,1,2,0,1 +0,0,1,0,1,1,2,2,1,1,0 +0,0,0,1,0,0,0,0,2,1,2 +1,0,2,1,0,2,0,2,0,0,0 +2,1,0,2,2,0,1,2,2,1,2 +2,2,2,0,0,1,1,0,0,2,2 +0,1,0,1,0,0,1,1,0,1,0 +1,0,0,0,2,2,1,2,1,1,2 +2,1,2,0,1,2,1,2,1,1,1 +0,1,1,1,0,0,2,2,2,1,2 +0,0,2,2,2,1,1,2,1,1,2 +2,1,1,0,1,1,2,0,2,2,2 +1,0,2,2,2,0,0,2,1,2,2 +0,1,2,1,0,0,2,0,1,2,2 +0,0,2,1,1,0,2,2,0,2,1 +1,1,1,0,0,1,1,1,1,2,0 +2,0,2,0,1,2,1,2,1,1,1 +2,2,2,1,0,2,0,0,2,2,1 +2,1,1,1,1,1,1,1,0,1,0 +0,2,2,2,1,1,0,1,2,1,1 +0,0,1,2,0,1,2,0,0,2,1 +1,2,2,1,0,0,0,1,2,1,1 +0,2,0,0,1,2,1,2,0,2,0 +2,0,2,1,0,2,2,0,0,0,1 +1,1,2,1,2,2,0,0,1,1,1 +0,0,2,0,2,0,1,2,2,1,1 +2,0,2,2,1,2,1,2,0,1,0 +2,0,1,0,2,0,1,2,1,1,0 +1,2,0,1,0,1,2,2,1,0,2 +2,0,2,2,1,1,0,2,0,1,0 +1,1,2,0,2,2,1,1,2,2,2 +1,0,2,1,0,2,1,1,0,1,0 +0,1,2,1,1,2,1,0,2,1,1 +1,0,2,1,1,2,2,2,0,2,1 +1,0,1,2,2,1,2,1,1,1,0 +2,1,2,1,0,0,2,2,0,1,0 +0,1,0,0,0,2,2,2,0,2,1 +2,2,2,0,1,1,1,0,0,0,1 +1,1,0,2,0,0,0,1,1,2,0 +0,2,1,2,0,0,1,0,2,2,0 +2,1,2,2,0,2,2,0,2,1,0 +1,0,0,2,2,2,2,1,2,2,1 +1,0,0,1,2,1,2,2,0,1,0 +1,0,0,2,2,0,1,2,1,1,1 +0,2,1,1,1,2,2,0,0,1,1 +1,0,0,1,2,1,2,2,0,2,1 +0,1,2,1,1,1,2,1,1,0,0 +1,2,0,1,2,1,0,0,0,2,2 +2,0,0,1,2,0,2,1,0,1,2 +2,1,1,2,0,0,2,1,1,2,1 +0,2,1,1,2,0,2,2,0,2,2 +2,2,1,1,0,0,2,2,1,1,0 +2,1,0,0,2,2,1,1,0,1,0 +0,0,1,2,1,0,2,1,2,1,0 +1,2,2,1,1,1,1,1,0,2,0 +2,2,2,0,2,2,0,2,0,1,0 +1,2,2,1,0,0,0,0,1,0,2 +0,0,1,2,1,2,1,2,0,1,0 +1,0,1,0,1,1,1,2,1,1,0 +1,0,0,2,2,2,0,0,2,1,1 +2,2,2,0,2,1,0,2,1,2,0 +0,0,2,0,2,2,1,2,1,1,1 +2,1,2,2,1,1,2,0,0,0,0 +1,0,2,0,2,1,2,0,1,1,2 +0,1,1,2,2,0,2,1,0,2,2 +0,0,1,2,1,2,2,0,0,0,1 +1,1,0,0,1,2,2,1,0,0,0 +1,0,0,2,2,1,2,0,1,1,1 +2,1,1,2,2,1,0,1,1,1,2 +1,2,1,0,1,0,1,0,1,1,1 +1,1,1,0,0,0,1,0,0,2,2 +2,1,2,1,0,1,2,0,2,2,0 +0,2,2,0,2,2,0,1,2,0,1 +0,1,0,1,2,0,1,2,2,1,2 +2,1,1,2,0,0,1,2,0,1,2 +2,2,1,1,1,0,0,0,1,1,1 +2,0,2,2,0,1,0,1,0,2,2 +2,2,2,1,0,1,2,2,1,0,0 +0,2,2,2,0,2,1,0,1,1,1 +1,2,1,2,1,1,2,2,2,2,0 +1,2,2,0,0,0,0,1,0,2,2 +0,1,1,2,1,1,1,1,0,0,1 +1,1,0,1,1,2,2,2,0,1,0 +1,1,1,1,1,2,2,2,0,0,1 +2,1,2,1,2,0,2,0,1,2,2 +2,2,0,0,1,1,2,2,1,0,1 +0,2,2,0,0,1,1,0,2,0,1 +2,0,2,2,0,1,2,1,2,1,2 +2,0,2,0,0,0,2,2,2,2,1 +1,0,2,1,1,2,0,2,0,1,0 +0,1,1,1,0,0,0,2,1,2,0 +2,0,1,2,2,0,0,1,2,1,1 +0,2,0,2,1,0,0,2,2,0,1 +1,0,0,2,0,1,1,1,0,1,2 +1,0,0,1,2,2,0,0,1,1,2 +2,2,2,2,0,1,1,0,2,2,1 +1,2,2,2,0,0,2,0,1,2,1 +2,2,2,0,2,1,1,2,1,0,0 +1,0,2,2,1,1,1,1,2,2,0 +0,2,0,1,1,2,0,2,2,0,0 +0,0,0,1,2,0,1,0,0,0,2 +2,0,2,1,1,1,0,2,1,0,0 +2,1,0,1,0,2,0,2,0,0,1 +0,0,0,1,2,1,2,2,2,0,2 +0,1,2,2,1,1,2,0,2,1,0 +2,2,0,0,2,1,2,2,0,1,2 +2,2,0,0,1,1,2,2,0,0,0 +0,2,0,1,1,0,1,1,2,0,1 +2,1,2,1,1,1,0,0,0,2,1 +1,1,1,0,0,2,1,1,0,1,2 +1,2,1,2,1,1,0,1,1,2,2 +1,2,2,0,1,0,1,2,2,0,0 +2,0,1,0,2,2,1,1,1,0,0 +0,1,0,1,2,1,2,0,1,2,1 +2,2,1,2,2,0,1,0,1,1,0 +2,0,2,2,2,1,1,1,0,1,2 +1,2,2,1,0,1,1,1,1,2,1 +2,2,2,1,1,2,0,1,2,0,0 +0,2,0,1,1,2,0,1,0,2,2 +1,0,0,2,2,1,0,2,1,2,1 +2,1,2,1,0,1,2,0,1,0,0 +0,2,1,1,2,2,2,1,1,0,1 +0,2,2,1,1,1,2,0,2,2,1 +2,2,1,1,0,2,1,1,2,0,0 +2,0,2,2,0,0,0,0,2,2,1 +0,1,0,2,0,1,0,1,0,0,2 +1,1,1,1,1,1,1,0,0,0,0 +1,1,2,1,0,1,1,0,0,2,2 +1,0,1,0,1,2,2,0,1,0,0 +1,2,2,2,1,2,1,0,2,1,2 +2,0,2,0,0,2,1,2,0,1,0 +1,1,1,2,0,0,2,1,0,1,0 +1,2,2,0,2,1,1,0,0,1,2 +1,0,2,1,1,0,1,2,1,2,0 +1,0,1,2,1,0,1,1,0,2,2 +1,2,0,2,0,1,2,1,1,1,2 +2,1,2,0,2,2,2,2,2,2,0 +1,1,1,0,1,2,0,1,2,0,2 +0,1,0,2,1,0,0,2,1,0,1 +1,0,1,1,2,2,0,0,1,0,2 +2,0,2,0,2,2,2,2,1,2,1 +2,0,0,0,1,2,2,2,1,0,0 +2,0,0,0,1,1,1,2,2,2,0 +2,1,1,1,2,0,2,0,0,2,2 +2,2,0,2,1,2,0,1,2,0,1 +2,1,0,2,2,0,1,1,2,0,0 +1,1,2,0,1,1,2,2,2,2,0 +2,2,0,0,2,0,2,1,2,0,0 +0,0,2,0,0,2,1,0,1,2,2 +1,1,1,2,2,2,1,0,2,0,0 +1,2,1,1,2,2,2,1,0,1,2 +2,2,2,0,1,1,2,2,2,0,1 +2,1,1,2,1,1,2,0,0,0,1 +0,2,0,2,2,1,0,2,2,2,2 +1,2,2,0,1,2,0,0,2,0,1 +2,1,2,1,2,1,0,2,0,0,0 +1,0,2,1,1,2,2,1,2,2,2 +2,1,1,2,0,2,2,0,2,1,2 +1,1,2,1,1,2,0,2,0,0,1 +1,0,1,2,1,2,2,2,2,2,1 +2,0,1,1,2,0,0,2,2,0,1 +1,1,0,1,1,1,2,2,1,0,2 +1,0,2,2,1,0,0,1,1,0,2 +2,2,1,2,1,2,2,0,2,0,1 +2,1,0,0,0,0,1,1,0,2,1 +2,1,2,0,0,0,0,1,1,0,1 +0,0,0,1,2,1,2,2,1,1,0 +1,0,0,2,0,1,1,0,1,1,0 +2,1,1,1,0,0,0,1,1,2,2 +1,2,1,1,2,0,0,1,1,1,1 +2,2,0,1,0,0,0,2,1,1,0 +2,1,2,1,2,0,0,2,1,1,0 +2,1,0,0,1,2,2,2,2,2,1 +2,1,1,0,2,1,2,0,1,0,0 +0,0,0,2,1,2,1,2,2,0,0 +0,2,1,1,2,0,0,1,0,0,1 +2,1,0,1,0,1,1,1,2,0,0 +2,2,2,0,0,1,2,1,1,2,2 +0,1,1,0,0,1,2,1,1,0,0 +0,2,2,0,1,0,1,0,0,0,2 +1,0,1,2,2,2,0,2,0,2,0 +2,1,0,0,2,0,0,2,1,1,1 +1,2,0,2,0,2,0,2,2,0,1 +2,1,1,2,1,0,2,2,1,0,0 +0,1,1,0,2,2,2,2,0,2,0 +2,1,1,2,0,1,0,0,0,2,2 +0,2,1,2,2,1,0,1,0,2,0 +1,1,1,0,0,0,2,1,1,2,0 +1,0,2,0,1,2,2,0,1,0,2 +0,2,1,1,2,1,0,1,1,1,2 +1,2,2,0,0,1,1,0,1,2,2 +2,0,1,1,0,0,2,2,1,2,2 +1,1,1,1,0,0,0,0,1,0,0 +2,0,1,2,1,1,0,0,2,1,2 +1,1,2,2,0,2,1,0,0,0,0 +0,2,2,1,1,2,0,1,0,0,0 +1,0,1,0,0,1,2,1,1,2,2 +2,2,1,0,0,1,2,1,0,0,2 +2,0,2,1,0,1,0,2,1,1,0 +2,2,2,0,2,1,0,0,1,1,1 +1,2,2,2,1,2,0,1,2,1,0 +2,2,1,0,2,0,2,1,1,0,0 +1,0,1,2,0,1,2,2,2,1,1 +0,0,1,0,2,1,2,2,2,2,2 +0,1,0,0,1,1,1,2,1,1,0 +1,1,1,1,0,1,1,2,2,0,1 +2,1,1,2,2,2,1,0,1,0,0 +2,2,2,1,1,2,0,0,2,2,2 +0,1,1,1,1,1,1,2,2,1,0 +0,2,2,2,2,0,0,2,1,0,1 +0,2,1,1,1,2,0,2,1,0,1 +1,1,2,0,0,2,2,1,2,2,0 +0,0,2,0,0,1,2,2,2,2,0 +2,2,1,0,0,1,2,1,1,1,1 +2,2,1,2,0,1,1,0,1,1,0 +2,0,2,1,1,0,2,1,2,0,2 +2,0,1,1,1,2,0,2,2,2,2 +2,0,1,0,2,2,2,2,1,1,2 +0,2,0,0,2,1,1,0,2,0,0 +0,2,1,0,1,0,2,1,1,0,2 +2,0,2,1,1,1,0,2,0,0,0 +1,2,2,2,2,0,1,2,2,1,0 +0,2,2,1,2,2,2,0,1,1,1 +2,2,0,1,0,0,1,2,1,2,0 +1,1,1,2,2,2,0,1,0,0,2 +0,0,1,2,0,0,0,0,2,1,0 +0,1,2,1,1,2,0,0,2,0,0 +1,2,1,1,2,0,0,1,0,1,2 +2,1,1,2,1,0,2,0,1,1,0 +1,1,1,1,2,0,1,1,2,1,2 +2,0,1,1,0,2,2,0,1,1,1 +1,2,0,0,0,1,1,0,1,0,2 +0,0,2,1,1,0,0,1,1,2,0 +2,0,2,1,0,1,0,2,1,2,0 +1,0,1,2,0,1,2,2,1,1,0 +1,1,1,1,0,2,0,1,2,1,0 +1,0,2,2,2,2,2,1,2,1,0 +0,2,1,0,2,2,0,0,0,0,1 +1,0,1,1,2,0,2,1,1,2,2 +0,0,0,1,2,1,0,1,0,0,0 +0,2,2,2,0,1,1,0,2,2,0 +2,1,2,2,1,0,0,1,1,0,0 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/Y_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/Y_data.csv new file mode 100644 index 00000000..ad313b36 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/Y_data.csv @@ -0,0 +1,290 @@ +sim_id,qoi,qoi_err,qoi_kla,qoi_kla_err,qoi_sum,qoi_sum_err,qoi_sum_kla,qoi_sum_kla_err +0,0.8487526939377138,0.01656949194171468,2.9909813125869897e-13,5.839043706218415e-15,7.946850089142567,0.025497179227772664,4.717493249828551e-06,1.5135905364695813e-08 +1,0.13986873573365227,0.0014898683647153843,2.999529559044579e-13,3.195070131726368e-15,4.831218756223047,0.023246673306116166,7.074943093870579e-06,3.404294010713565e-08 +3,1.4548986233772985,0.03496587715754348,5.127023013077327e-13,1.2321879612684873e-14,9.76984173927086,0.03645232320844685,5.799676845530673e-06,2.1639213870582863e-08 +4,1.2834545942382423,0.028090393613937226,4.5228589370664217e-13,9.898977990562709e-15,9.806549039666159,0.03755565939561043,5.8214674218202264e-06,2.22941879750152e-08 +5,0.12476884209926023,0.0014130758107424016,3.8415357526872876e-13,4.35075068173346e-15,4.73972338580929,0.025376836836159617,8.316725433410812e-06,4.45283758471421e-08 +7,0.22126177300245445,0.002648634351233923,3.050419869722074e-13,3.65153308815923e-15,5.791803528136829,0.027104373237389026,6.8004936221354485e-06,3.182482217108931e-08 +8,0.07486796413573417,0.0005572230370345343,1.605567322120592e-13,1.194982539893085e-15,4.168110995499623,0.016756341414355152,6.103873492803041e-06,2.4538355217956554e-08 +9,0.2339204746107969,0.002942259918763595,3.224938739733736e-13,4.056339236731605e-15,5.303515403178335,0.023542250556858994,6.227166113485919e-06,2.7642326600015338e-08 +10,0.2253358548484626,0.0014086616215969602,1.7604798502461758e-13,1.1005440755552585e-15,6.883474205974429,0.024443273879674026,6.084264253260918e-06,2.1605272722557404e-08 +11,1.0668098712693732,0.018531415014249746,3.7594088498722166e-13,6.530420038420718e-15,9.558628355154706,0.033710722083997294,5.674294121127235e-06,2.0011715596937605e-08 +12,0.04700328669677217,0.0003046633013196554,1.4471946926229905e-13,9.380346433031094e-16,3.3974656461774373,0.012815943884931133,5.961484801801398e-06,2.2487955036931108e-08 +13,8.008555512997793,0.2974993691668416,7.370385672546028e-13,2.7379283124654228e-14,23.24079496369458,0.11113592638437028,7.050484968852478e-06,3.371494734567096e-08 +15,0.7170633896476518,0.014163266485194101,5.602196106720284e-13,1.1065325256778867e-14,8.215850236213196,0.0382214839881391,7.261943955164593e-06,3.37837553783137e-08 +16,0.12859588694568513,0.0015140434571801063,2.757779728672025e-13,3.246914387163378e-15,4.588659520955508,0.01992561695082073,6.719734010547239e-06,2.9179512076259965e-08 +17,0.3484472421322411,0.00577352690777609,4.80385913962992e-13,7.959658350027487e-15,6.13600911582002,0.026899671658161393,7.2046454348329695e-06,3.1584470125836595e-08 +19,0.3217424257149172,0.003710904877352166,2.5136747964711287e-13,2.8992160550710453e-15,7.019064719329435,0.029732708127687354,6.204111956670293e-06,2.6280574033059413e-08 +20,0.4738799244881961,0.006260451169453743,3.702278357713765e-13,4.8910982880790405e-15,7.965409185844924,0.03428888108034311,7.04058051580876e-06,3.0307749722657764e-08 +23,0.21595111464491382,0.002890362498942989,2.977204610858426e-13,3.9847909898750875e-15,5.1135582909771315,0.018860947796231316,6.004126412382402e-06,2.214573656581491e-08 +25,0.2776761422311705,0.006271035514520704,5.95485325727036e-13,1.3448435274289036e-14,4.800555580510986,0.021131940015417967,7.030039264848409e-06,3.094607812768968e-08 +26,0.6677137661512327,0.011862709195198278,5.216642649925339e-13,9.267970479032573e-15,8.469379904804237,0.04080045888734187,7.486037407618781e-06,3.606329683066845e-08 +28,0.21881730994379883,0.0025017689955953324,3.016719340261383e-13,3.449057533801665e-15,5.8644678694611185,0.026783412151476213,6.885813053452276e-06,3.14479630741968e-08 +29,0.26331377498698055,0.0042707589906643365,3.630168735890587e-13,5.88787114050523e-15,5.4502357178014025,0.02242844581841471,6.399438974228264e-06,2.6334543629542104e-08 +30,0.6057457926587899,0.010073646988929172,4.732505899799241e-13,7.870231107730733e-15,8.380822389507927,0.040514770661107646,7.40776191722589e-06,3.581077861335235e-08 +31,4.037414513207135,0.07002876084105979,3.7156890632749626e-13,6.44484483623479e-15,20.815588819669966,0.09186804568527464,6.314758012514916e-06,2.7869712579880508e-08 +32,0.307216377218783,0.003004666376916678,2.400187232178447e-13,2.3474535895902e-15,6.794141316787729,0.023613681336646018,6.005303413421143e-06,2.087200052551254e-08 +34,0.9695146356825033,0.014449806958562432,3.416543097629224e-13,5.092072508178034e-15,9.275728009496142,0.03191518433776265,5.506355824593694e-06,1.8945829480048195e-08 +35,0.2165859450552231,0.0015906766330791642,1.6921194963501308e-13,1.242746819298712e-15,6.438664585139677,0.027087873596743632,5.691099531772218e-06,2.394281961805097e-08 +36,0.12735990098520653,0.0011900354778929256,2.7312736172759235e-13,2.552068963031653e-15,4.2055724456824395,0.015338978639881252,6.1587328658690305e-06,2.2462737974062005e-08 +37,5.929449817130664,0.1708193820486277,5.456955613747369e-13,1.5720746689078088e-14,22.21987664424725,0.10163166425843038,6.740772271790715e-06,3.0831670010487553e-08 +38,0.0865656163585696,0.0009311462887166146,3.620017392218127e-13,3.893885241793022e-15,3.8822827798278756,0.020537923970002772,7.939072744236536e-06,4.199902007670871e-08 +39,0.31322614080739,0.005950785798393865,4.3182843117367895e-13,8.204035873082545e-15,5.7116417671200646,0.02503338838845918,6.706371031153402e-06,2.9393158315078473e-08 +40,0.40354499932244736,0.005429677180679593,3.152773181403103e-13,4.242040076736198e-15,7.164372880028077,0.027373473368655175,6.33254901618625e-06,2.4195259620490077e-08 +41,0.33245723307869857,0.004052174663349651,2.597386289444467e-13,3.165839652683136e-15,6.91438644127368,0.02918963343666056,6.111587404709119e-06,2.5800553320926246e-08 +43,0.597880246047833,0.011683013521546378,4.671054798337687e-13,9.127579766951745e-15,7.6950006835667155,0.032507491775342005,6.8015679563682845e-06,2.8733189702406747e-08 +44,0.32615391209245836,0.0036456704280048756,2.5481403778545325e-13,2.848250374294447e-15,6.862616358801799,0.027879265062490503,6.065828119100312e-06,2.4642326062567804e-08 +47,0.2101591553711002,0.0022493763214143626,2.8973539096722553e-13,3.1010970079632822e-15,5.806683624258044,0.024541109435423713,6.8179652075760005e-06,2.8815144945564965e-08 +48,0.13118596140006658,0.002463710248904351,5.485959464431542e-13,1.0302790339261835e-14,3.94344196808911,0.020241317371498948,8.064140207821748e-06,4.13924745427107e-08 +49,0.0958482746010832,0.0010519111092398416,2.951093935081867e-13,3.238752609416145e-15,3.7905111059473575,0.01594917504960524,6.651156097660335e-06,2.7985791340221248e-08 +54,2.634770039629436,0.08100884030619813,9.284857660216376e-13,2.854729407686884e-14,10.406216996636399,0.04037530059975838,6.17744866061191e-06,2.3968013226362604e-08 +55,0.20739166753007043,0.0016986723299261047,1.6202874239250917e-13,1.3271205378344004e-15,6.316544681212326,0.023403639326454662,5.58315842504929e-06,2.068634556974775e-08 +58,0.29890186755346904,0.0031853117449975768,2.3352285209236136e-13,2.488586269411879e-15,6.741533446181149,0.026835605932204663,5.958803611577772e-06,2.3719841609371734e-08 +59,0.15773717382603114,0.0013971732238237057,2.1746395794261202e-13,1.926209350747225e-15,5.058541411143831,0.01784272324286701,5.939527891065603e-06,2.0950179852260868e-08 +61,0.12177021631544496,0.000864498593066292,1.6787820243749423e-13,1.1918388108776337e-15,4.904480585053875,0.016340321544669942,5.75863610841338e-06,1.9186122574728825e-08 +63,0.22971747929098396,0.0027090901081547464,3.166994250825924e-13,3.73488026421688e-15,5.8146453669781515,0.027609257057589598,6.827313553482401e-06,3.241763564487558e-08 +64,0.2076033507162072,0.0015946239862507383,1.621941239778541e-13,1.2458307615543723e-15,6.312814436334617,0.02305769405676803,5.579861282711524e-06,2.0380566486391133e-08 +65,0.5337860450515559,0.008005029193941424,4.1703064868651414e-13,6.254083538623501e-15,8.01554869738795,0.03490737908308002,7.0848985504333105e-06,3.085443664583222e-08 +66,0.30789245317540365,0.00297067446534826,2.405469206415157e-13,2.320896753064652e-15,6.926564610217665,0.027608973798769663,6.122351620410332e-06,2.440341713198166e-08 +70,1.0357147278690126,0.02984368887955042,3.64983041449682e-13,1.05168344547418e-14,7.634664603447574,0.024547175489098596,4.532170398374632e-06,1.4571954092804889e-08 +72,0.15773945292025068,0.0014063487157805522,2.1746710001627994e-13,1.938859119709503e-15,5.3540357161501895,0.02209959766198464,6.286484953198154e-06,2.5948423869255804e-08 +73,0.04056751986240304,0.00030735309546021467,1.6964602533730515e-13,1.2852950142575994e-15,3.0486668608967387,0.011716192390151866,6.234370177093476e-06,2.3959023323646343e-08 +75,0.16856207493370545,0.002836710270123059,5.189895375780758e-13,8.734010612488967e-15,4.616266676521384,0.023379536724875194,8.100097691074179e-06,4.1023741632329435e-08 +76,1.324310938312755,0.03093841729414782,4.666835579258223e-13,1.0902613760649052e-14,9.507524157639743,0.035746765491847715,5.643957107745818e-06,2.1220373236129973e-08 +77,0.18172179846206618,0.0021129898834746814,2.505303004980295e-13,2.913068189597029e-15,5.43013256229445,0.024426173232081013,6.37583469084158e-06,2.868019166585549e-08 +78,0.095812947488922,0.0009762101675269958,2.9500062404099274e-13,3.0056752888112872e-15,3.9484670429765107,0.017085244653756673,6.928319140564465e-06,2.9979236566354964e-08 +79,0.3810823090863858,0.004248216786726199,2.9772790791906437e-13,3.319001344698809e-15,7.480201128725517,0.03289950000502776,6.611707834280172e-06,2.907968357853552e-08 +81,7.581524034057471,0.31968482171882456,6.97738262644256e-13,2.942104134971085e-14,21.826594268074224,0.08888530114077507,6.621463466492847e-06,2.6964846965279015e-08 +83,0.735681516748788,0.014471808597741916,5.74765381792334e-13,1.1306379737071767e-14,8.511898168920622,0.04157687219721293,7.523619063119531e-06,3.6749564202963535e-08 +84,0.9099111187588811,0.0131519456786706,3.2065019318282826e-13,4.634709737746708e-15,9.233366233076628,0.0317437201240801,5.481208578567408e-06,1.884404307894261e-08 +85,1.472345020990934,0.046085812604577135,5.188503642602734e-13,1.6240514496406733e-14,9.180829675272781,0.03410691496728817,5.450021271137611e-06,2.02469078110938e-08 +86,0.7471940318842535,0.015153529135494975,5.83759756741647e-13,1.183898706953849e-14,8.108237138740352,0.035900865515316044,7.16682534404053e-06,3.1732573732806375e-08 +87,0.29658339599453687,0.004818031206072202,4.0888395297744856e-13,6.642366604851317e-15,5.7299280071430125,0.026353540605795176,6.727841970520108e-06,3.094322587272415e-08 +88,0.1185696746493751,0.0008167800501736731,1.634657837513584e-13,1.1260517619613544e-15,4.878558772143877,0.016611890949253364,5.728199799711621e-06,1.950498802057637e-08 +92,0.5208920842242263,0.008204710195183337,4.0695699267542013e-13,6.410088169755831e-15,8.001071826796688,0.0375010581099764,7.072102523192268e-06,3.3146974983241024e-08 +93,1.1306862964270008,0.01934382142753502,3.984507627906092e-13,6.8167098402472546e-15,9.890120379756242,0.0370406920312319,5.871077925144527e-06,2.1988487598368666e-08 +95,0.5972198550101099,0.012049946500916151,4.665895368607409e-13,9.414253243412332e-15,7.379514383668112,0.03225491461350214,6.522711386781244e-06,2.8509938173542706e-08 +96,0.9240839406050835,0.019223519892007945,3.2564465682397487e-13,6.774315906932393e-15,8.390173783568832,0.028773094821766914,4.9806637527805055e-06,1.7080589047481326e-08 +97,0.9455098820480764,0.01755132136578423,3.3319510010744864e-13,6.1850377140670896e-15,8.592874953237294,0.03011416826168232,5.100993366546078e-06,1.7876691256169365e-08 +98,0.09018881439854408,0.0007857949850039972,1.9341278327880575e-13,1.685162357989752e-15,4.213004817113,0.01580850198534768,6.169616993403768e-06,2.315031829370028e-08 +99,0.34119254810841354,0.002608171438129771,2.665632623629213e-13,2.0376842671509658e-15,7.31362971557942,0.02834107278194547,6.464476295985138e-06,2.505051531545325e-08 +100,0.14188412922289254,0.0017313006460237057,3.0427503151220823e-13,3.7128293454048546e-15,4.662107786836148,0.021097561644701113,6.827293269074214e-06,3.089573368883775e-08 +101,0.08457717682888925,0.0006526838540456614,1.813784479333554e-13,1.3997013009486778e-15,3.9671202580166214,0.016465017009342886,5.809538233251656e-06,2.4111733349555455e-08 +105,1.6190421480639643,0.06530157939776823,5.705460311040129e-13,2.3012098230285398e-14,8.994501727992931,0.03199370321116322,5.339411302768903e-06,1.8992440683119062e-08 +106,0.13097878299618554,0.0008393682981928775,1.8057356976464814e-13,1.157192993283343e-15,5.233083300650639,0.01844570884404373,6.144467682919446e-06,2.165818034401949e-08 +108,0.4912759565494341,0.005645543143716091,3.838188215216116e-13,4.410689526696765e-15,8.312967474562276,0.03789314804819583,7.347785338380807e-06,3.349354108573455e-08 +109,0.23959607672950992,0.0029772516443404454,3.303185285592563e-13,4.1045804911881366e-15,5.8371145684052435,0.024809879874696853,6.8536959502606075e-06,2.9130723961465503e-08 +110,0.3256386519696198,0.003481207362694089,2.5441148087124056e-13,2.719760430790311e-15,7.058289995223402,0.028503032713505867,6.238782949141257e-06,2.5193670791675534e-08 +111,0.19399412755813863,0.0020135995214430324,2.6744951606071775e-13,2.776043916013058e-15,5.639057084426823,0.022991687251191502,6.6211451312251375e-06,2.6995878180110942e-08 +113,19.71477550475987,0.9062154923401285,1.8143783692566579e-12,8.340027949038662e-14,25.55167573056511,0.12825646746281527,7.751529409762635e-06,3.890875064374072e-08 +114,0.23804638268536293,0.0032666677643972465,3.2818204674593215e-13,4.503583296940251e-15,5.706779837704966,0.02546164939492327,6.700662356945042e-06,2.989600448909337e-08 +115,0.7949644853640332,0.01359754231099356,2.801433134618889e-13,4.791736773241655e-15,7.884618363424679,0.025668403616210346,4.680550594222095e-06,1.523754939819337e-08 +116,0.7730874658668359,0.01473384414616851,2.7243391158418517e-13,5.192166437353478e-15,7.652937087804144,0.022318345042782146,4.543017503913258e-06,1.3248852175894184e-08 +118,0.8816560500773092,0.015983098771657454,3.106931840977473e-13,5.63240035462765e-15,8.408501443868024,0.02683058773192386,4.991543612583856e-06,1.5927457432123253e-08 +120,0.2000503586307914,0.00206062344478504,2.7579892379754443e-13,2.8408733296628516e-15,5.653923254817426,0.0266569471977985,6.638600367132138e-06,3.129947321148087e-08 +122,0.2859892570398336,0.005234256935062664,6.13313065207212e-13,1.122503061182559e-14,4.479002316023902,0.019394855740229807,6.55914958695324e-06,2.840225368101088e-08 +123,0.11710668050480719,0.0009124434930357738,1.6144883053522262e-13,1.257937926727007e-15,4.924391012364199,0.019319861394761155,5.782014100189431e-06,2.2684573730586782e-08 +124,0.14842811647473275,0.001764250180287542,3.1830882036831955e-13,3.7834906691517625e-15,4.830004321478631,0.022334575711329966,7.073164649045835e-06,3.270724431245536e-08 +126,0.17978090432747734,0.002583061297861542,3.855458720376058e-13,5.539457176144646e-15,4.692091140903288,0.018574869261707223,6.871201552787617e-06,2.7201447431666615e-08 +127,0.5264454520099391,0.007673974891788535,4.1129566871416673e-13,5.995440976388765e-15,8.115697221200179,0.039243403012745696,7.173419269098087e-06,3.468702388517418e-08 +128,1.1641279298525433,0.025980698026235108,4.1023550320937076e-13,9.15552703032673e-15,8.884190779258844,0.031401110950220495,5.2739273509893065e-06,1.8640659797451227e-08 +130,0.2414522198346563,0.0032394854964031073,3.3287749558265844e-13,4.466108531772677e-15,5.886274624949119,0.027554014382055816,6.911417633894002e-06,3.235277200243692e-08 +133,0.37207803993432825,0.0036754548629905747,2.90693148863793e-13,2.8715200386941656e-15,7.428752487217552,0.02888564256777443,6.566232668309745e-06,2.553185749558871e-08 +135,0.27145158528609503,0.0024354818342937914,2.1207678933379371e-13,1.902767181681528e-15,6.6694466504258765,0.026612788626163335,5.8950864968147795e-06,2.3522894641141467e-08 +136,0.24018602367813094,0.002349518741812833,1.8764996599429787e-13,1.8356068569375588e-15,6.326734266850179,0.02309256883753044,5.592164942852183e-06,2.0411392109555217e-08 +137,0.6073846851849128,0.010667828096155805,4.745310062710801e-13,8.334446561909225e-15,8.286712570462845,0.041403133349483444,7.3245787749247775e-06,3.659599740769922e-08 +138,0.5205046733575124,0.013648610960884832,7.175924588495024e-13,1.8816623174821028e-14,6.9242751204914565,0.03528867840429939,8.130194430540231e-06,4.143449121117498e-08 +139,0.11734024412773104,0.0009084475373714177,1.617708324547248e-13,1.2524289126418119e-15,5.012313559542007,0.020930752418989448,5.885249080486762e-06,2.4576014641631758e-08 +141,1.5796645258833113,0.04106247968305359,5.56669464625556e-13,1.4470305692647897e-14,10.316956047617815,0.042324360111665786,6.1244606314233915e-06,2.512503456035722e-08 +142,0.376172537041764,0.004739838797036862,2.9389205393225805e-13,3.703090529477726e-15,7.1447299049162645,0.03214456985748688,6.315186702449244e-06,2.8412405062403974e-08 +144,0.5573155377823449,0.008060211769497262,4.354135187028908e-13,6.297195987056568e-15,8.302187313711118,0.03489118910718591,7.338256814102238e-06,3.084012640802302e-08 +147,0.21114781263376295,0.0020597559930769587,2.910984008157585e-13,2.839677419227509e-15,5.9231718842553285,0.02565651868992346,6.954740853563436e-06,3.0124811871039816e-08 +148,0.21891707530569937,0.0023438881914465254,3.0180947525743917e-13,3.231395559870095e-15,5.956970328091193,0.026272952458947393,6.99442557362989e-06,3.084860263732555e-08 +149,0.9313813445137471,0.021611918869767887,3.2821624204908795e-13,7.615981183956694e-15,8.154013486532396,0.02852069244515003,4.840471778155555e-06,1.693075527802596e-08 +150,0.18309435515453565,0.0015319717429166525,2.524225727690955e-13,2.1120489947939064e-15,5.815031107428456,0.02462751317289974,6.827766480823026e-06,2.8916596634048406e-08 +151,0.1814633581875287,0.002348253217733043,3.8915394779527516e-13,5.035903772702123e-15,5.00632140893565,0.024072980152804586,7.331367273436002e-06,3.5253002044842194e-08 +152,0.1942547334618206,0.0018245966589023601,2.6780879970425694e-13,2.515475594632437e-15,5.764989737570678,0.024373381934765192,6.769009988521956e-06,2.8618206324857952e-08 +153,0.6695276252523792,0.012133079961396582,5.230813773866745e-13,9.479202857025702e-15,8.278737685187236,0.040089047408094325,7.317529818464324e-06,3.5434484212181615e-08 +155,0.15541420484410018,0.0013175160497967747,2.1426140263992785e-13,1.8163901884853392e-15,5.104763084552489,0.018718674901630608,5.993799448614387e-06,2.1978685679596318e-08 +157,0.5454338637594232,0.00844056289479704,4.2613073183135473e-13,6.59435264733561e-15,7.727233184979745,0.032861031753385415,6.830058085601005e-06,2.90456817149863e-08 +158,0.25501280735651116,0.0020860702159588612,1.9923367686325881e-13,1.6297826122096715e-15,6.454348522049948,0.023372189322595185,5.704962467457499e-06,2.0658547088400432e-08 +159,0.26013994307532196,0.003165177967876204,3.5864127826604763e-13,4.3636646449560174e-15,6.039100437559141,0.025823207384936885,7.090859315744739e-06,3.032053077128426e-08 +160,0.327400151435562,0.0036359021703047645,2.5578768632158766e-13,2.8406187344630415e-15,6.94838236700092,0.027620279578209887,6.141636212835577e-06,2.4413410245209924e-08 +162,0.4704501769659448,0.00651135681315042,3.6754827933357893e-13,5.087123164104274e-15,7.533746711764567,0.03143159448584275,6.659036475382469e-06,2.7782210123126656e-08 +163,0.097114403062444,0.0008185591815910411,2.0826492861702697e-13,1.7554262204881628e-15,4.420337151088822,0.0167287853410195,6.473239027203355e-06,2.4498001497582787e-08 +164,0.14525097282999863,0.0015131683987152074,3.1149533469110837e-13,3.2450377964315853e-15,4.829450140646964,0.022620981059573827,7.0723530944370145e-06,3.3126662608933416e-08 +165,0.2507554910048243,0.001933658264290042,1.9590756629427649e-13,1.5107078336904276e-15,6.799727339160065,0.024053490308878628,6.010240867065811e-06,2.1260745209211787e-08 +166,17.98490035417099,0.7823312721383768,1.6551755386619152e-12,7.199904137769615e-14,24.16597437077509,0.1168367331250871,7.331153658834558e-06,3.5444382684280165e-08 +167,0.33491126728226756,0.003599191390105761,2.616558904888932e-13,2.8119377286413043e-15,7.054032751385546,0.02751255277820697,6.235019994780792e-06,2.4318191129164882e-08 +168,0.14786690571630204,0.001620498777191641,3.171052860330678e-13,3.4752112094879627e-15,4.769882549098054,0.021602394290457603,6.985121002138685e-06,3.163502172255574e-08 +169,0.6868235895844913,0.012013979602721103,5.365941834384e-13,9.38615340609916e-15,8.47651273179649,0.037727217740645407,7.4923420742208615e-06,3.334687621729347e-08 +170,0.07490182972203374,0.0003818427864192338,1.0326321920058763e-13,5.264265973274794e-16,4.438884516711679,0.015582254424588616,5.211952667013951e-06,1.8296031852274404e-08 +171,0.5644645710368601,0.008586999546824431,4.409988388916276e-13,6.708759103793642e-15,7.8640469317047845,0.03276783609050008,6.950986987211987e-06,2.896330658275782e-08 +173,0.413480126096737,0.005444902538703714,3.2303932765607984e-13,4.253935181504268e-15,7.086807931773644,0.025527973703150818,6.263989793350652e-06,2.2564032814339295e-08 +174,0.22478783410448572,0.0017373966035842158,1.7561983322418456e-13,1.3573746238593097e-15,6.362580816428564,0.023760328436040548,5.623849506723418e-06,2.100162107325797e-08 +175,0.1609128356318244,0.0014017737780286808,2.2184207621765475e-13,1.9325518942246896e-15,5.390812248283035,0.021408925307791152,6.32966642160455e-06,2.5137465265373607e-08 +176,0.40508203646701146,0.00519009164723534,3.1647815811783575e-13,4.054859255931404e-15,7.710155649254254,0.032334864484805284,6.814963346071246e-06,2.858060541040345e-08 +177,0.19613205349668725,0.0014014718859713942,1.532319516574611e-13,1.0949269558536816e-15,5.751695849392725,0.01827961623434372,5.083891710048975e-06,1.6157250291054375e-08 +178,20.36668783533207,0.8187822239736465,1.8743747730177006e-12,7.535367348976255e-14,25.34225315446652,0.12908458196060152,7.687997558669418e-06,3.915997306656436e-08 +179,0.1541249234548124,0.0016789668797972017,3.305258043861833e-13,3.600597917866493e-15,4.8091351758644185,0.019299287522226958,7.042603414051256e-06,2.8262301478843738e-08 +180,0.44491583201645385,0.0061133830341124585,3.4759907949216903e-13,4.776198467942918e-15,7.500956835696198,0.03147020040989534,6.63005368685979e-06,2.781633367904557e-08 +181,0.5842282709937805,0.007895667974721257,4.564396108418723e-13,6.1686429716729155e-15,8.348762725173566,0.03301280919020499,7.379424558878288e-06,2.917983693095039e-08 +182,1.2069314298035292,0.03442383236939323,4.2531933953203644e-13,1.2130864509755311e-14,8.689012656775544,0.03226918504177038,5.158063647383609e-06,1.9155975122772868e-08 +184,1.1928713174745773,0.028944779754622802,4.2036459450826316e-13,1.0200061336408413e-14,8.814180056320986,0.02930311371620156,5.232366844721641e-06,1.7395224476473612e-08 +186,0.16228448180244073,0.001058483970681054,1.2678788309697546e-13,8.269610282152904e-16,6.044113843725606,0.01965629839109064,5.3423583355773445e-06,1.7374091929994117e-08 +187,0.09387031229153552,0.0007922509468999326,2.013078726961252e-13,1.6990073737753751e-15,4.308317659239777,0.01866254675148847,6.309195217498452e-06,2.73298442742055e-08 +190,0.8272837204902543,0.011179356705785293,2.9153252376242553e-13,3.939574771937479e-15,8.962288987189023,0.03154580097587597,5.3202888356872495e-06,1.8726552221722685e-08 +191,0.0923879243518228,0.0005094934580325954,1.2737037981318648e-13,7.02411875980901e-16,4.827857726844138,0.015489301441504845,5.668668757320902e-06,1.8186890360495225e-08 +192,0.27454415290927314,0.004351180956747653,3.784996058842773e-13,5.99874468207818e-15,5.751468353373119,0.028326394780309558,6.753133744355305e-06,3.325966878260752e-08 +193,0.21721025885349543,0.0036522245977671304,4.658143140913825e-13,7.832311903205464e-15,4.760686985925216,0.022043864745942564,6.97165481701066e-06,3.2281520775454736e-08 +194,0.29345158745229394,0.0026134927423870713,2.2926471558640274e-13,2.0418416389310155e-15,6.834844338497374,0.025154077995304083,6.041280586078047e-06,2.2233548494702397e-08 +195,0.11066181653160617,0.001045957955956089,2.373177880907054e-13,2.2430901310252666e-15,4.429460525328682,0.016866731068194227,6.486599498105791e-06,2.4700012260187266e-08 +197,0.13512161310381604,0.0010691960243723443,1.862850720425964e-13,1.4740444097187513e-15,5.188660497478113,0.01896829479338509,6.092308283685495e-06,2.227177892122543e-08 +198,0.1925765324738534,0.002115188691856084,2.6549515213314987e-13,2.916099569976911e-15,5.451883729829437,0.02181466682453631,6.401374001235744e-06,2.5613869989955802e-08 +199,0.6099331873759742,0.007104279544275277,2.1493878948422133e-13,2.5035287093876105e-15,7.978279288074533,0.024183240676373046,4.7361505844112455e-06,1.435591125940685e-08 +200,0.3240440003144191,0.0031617818955651466,2.5316562853064043e-13,2.4702031208443044e-15,6.791167559802144,0.022964829250784226,6.002674926744983e-06,2.0298483806616376e-08 +202,0.4348675280667781,0.004539468179165579,3.3974864821989704e-13,3.546547116003364e-15,7.992248677169039,0.034590243504151456,7.0643037916960325e-06,3.0574122279265716e-08 +203,0.6633009680345364,0.010896618789020145,2.33745449563051e-13,3.839938700985111e-15,8.001597577549004,0.027825905895823136,4.749993033410957e-06,1.651830873429105e-08 +204,0.3205468042783167,0.006822407312645288,6.874228252809097e-13,1.463086964986163e-14,4.908793223509683,0.020897078176400723,7.188544852775332e-06,3.060214128465681e-08 +205,0.06235120894782969,0.0005872821226241902,2.607414702415222e-13,2.4559075386608575e-15,3.313003159108143,0.013032796125191039,6.774924593002246e-06,2.665141164788696e-08 +206,0.2562573096620146,0.0029952933487914627,3.5328849543588884e-13,4.129453641651649e-15,6.038758844794793,0.027718145126386994,7.090458231399433e-06,3.254548746219942e-08 +207,0.09173464995729048,0.000727334223582403,1.9672787684004585e-13,1.5597913942560127e-15,4.255019045013308,0.015564163204134377,6.23114355358371e-06,2.2792503203957683e-08 +209,0.14742908767698015,0.0011613846398011239,2.0325274100550092e-13,1.6011400132819438e-15,5.491651610365112,0.021220254160577455,6.448067785768223e-06,2.4915935490222497e-08 +210,0.6253244252183088,0.010309129377477863,4.885467744154321e-13,8.054206266834828e-15,8.289709022068887,0.034789386775560156,7.327227322088639e-06,3.075014389793082e-08 +211,0.15396117027660913,0.0010204984274659427,1.2028513541748317e-13,7.972840900113527e-16,6.149421126437641,0.022103563102195616,5.4354388538491e-06,1.953721549133491e-08 +212,0.13680372591030798,0.0013037112885321829,2.933799448911883e-13,2.795850357426362e-15,4.910312835264431,0.021138414040161438,7.1907702056798905e-06,3.095555883602522e-08 +213,0.18167303717764735,0.002190280480233602,2.5046307575408573e-13,3.019624674997953e-15,5.127115138969454,0.01937182868416779,6.020044296159827e-06,2.2745591549120226e-08 +214,0.5520686539412872,0.010957886121788045,4.3131428942034196e-13,8.561059992134019e-15,7.751170141664874,0.03232379891624133,6.851215825187646e-06,2.857082461327172e-08 +215,0.28595222578046553,0.0028186296325460607,2.234056945373077e-13,2.2021087927667593e-15,6.789548044347807,0.027580329890484104,6.001243445346667e-06,2.437809893893538e-08 +216,31.870213705197852,0.605702058497958,2.933060350514394e-12,5.574360775985521e-14,27.1344539017834,0.13932274244820556,8.23169171457483e-06,4.2265890768023065e-08 +217,0.29917924176240596,0.003986650833143985,4.124627092167413e-13,5.496186144644377e-15,6.245895068988676,0.030573659016484556,7.333668928513953e-06,3.589831252103913e-08 +218,0.22009787394123395,0.002135277587591733,3.0343738032641435e-13,2.943795075555959e-15,5.933311849652854,0.025292454621840762,6.966646777109458e-06,2.9697343059212915e-08 +219,0.4200859200123535,0.005350936454649034,3.282002316054127e-13,4.180522364734373e-15,7.361774318504962,0.027654755020183757,6.5070310405504525e-06,2.444388289421214e-08 +220,0.5359402143942248,0.0066107067039213535,4.187136348150879e-13,5.164742182715387e-15,8.275308629262325,0.0366658626021294,7.314498895633603e-06,3.2408750359155624e-08 +221,0.481239207420904,0.00476129524472221,1.6958738237767895e-13,1.6778674406167147e-15,7.391949555769166,0.021939961344169954,4.38808732315592e-06,1.302423204034776e-08 +223,13.282547119955108,0.57561632332512,1.2224113923168456e-12,5.297477546148107e-14,23.913175831674508,0.11221265246572,7.254462981594328e-06,3.404159025589662e-08 +226,0.6168941097403458,0.012171406611255271,4.819604278361176e-13,9.509146294486466e-15,7.942423400805551,0.0366743086079437,7.020263509298114e-06,3.24162157387595e-08 +228,0.23523543396171712,0.003417382991483573,3.2430673941168366e-13,4.711366466453976e-15,5.442901064869607,0.02235645749653771,6.390826931851248e-06,2.6250017953079122e-08 +229,0.6440428477107141,0.010804578999547197,5.031709032068467e-13,8.441285845027873e-15,7.267245428774319,0.030830081431030196,6.423477485190368e-06,2.725053610473817e-08 +230,0.2152228610329923,0.0023429314659233424,2.967164560419333e-13,3.230076572633878e-15,5.740109894283044,0.025286953127328985,6.739797116445308e-06,2.96908834343051e-08 +231,0.6259658874741908,0.009193410452111403,2.2058866914117117e-13,3.2397327347704716e-15,7.167819272761371,0.021038516231955354,4.25503673240143e-06,1.2489106652337025e-08 +233,0.6398124805098447,0.009428600277811233,2.2546817073309209e-13,3.322612987351554e-15,7.491184316437736,0.022213943313356077,4.44699611197014e-06,1.3186876116404894e-08 +234,0.395020066364279,0.004952316507960126,3.0861704975663585e-13,3.869092839294677e-15,7.514603442903752,0.031395906598891576,6.642115846879743e-06,2.775066579788443e-08 +235,0.02308496725731597,9.212153114176614e-05,4.950644718285842e-14,1.9755755618100745e-16,2.9068808498835694,0.007920761941201329,4.256900308110741e-06,1.1599338152894114e-08 +237,0.11511555569780554,0.0012487296254343246,3.544318556252171e-13,3.844741535007908e-15,4.123692131216524,0.01690361516541238,7.2357841190284196e-06,2.9660533879859792e-08 +238,0.24825107982177097,0.003117087333806079,3.422507267702751e-13,4.297364612341127e-15,5.829111758441046,0.026954364182877652,6.844299384963406e-06,3.1648687800813056e-08 +239,0.4521616094644167,0.006032330456359467,3.5325998296951653e-13,4.712874577751482e-15,7.556184933955419,0.032689381343916926,6.678869493431138e-06,2.889396087116889e-08 +240,0.25302344305394137,0.005436054001451209,5.426168275721615e-13,1.1657790840153775e-14,4.810634678220269,0.022986502816040807,7.044799317083205e-06,3.3661940715166674e-08 +241,14.930023259120135,0.846831617093153,1.374030926566024e-12,7.793509837763523e-14,23.830336507973286,0.11313430144614109,7.229332284658333e-06,3.4321187939297596e-08 +243,0.09786287308119705,0.0008684025845948091,2.0987004645091769e-13,1.862316985275865e-15,4.396672402584335,0.01880378625530475,6.438583849400686e-06,2.7536678516194164e-08 +245,0.28762809578089826,0.003671761711169887,3.9653775079529635e-13,5.062065047750771e-15,6.27531833266143,0.027794669871450794,7.3682164942991576e-06,3.2635339618471184e-08 +247,0.37405849102364486,0.004348160808820368,2.9224041451524453e-13,3.397084540632126e-15,7.240570864909148,0.028526355091401327,6.399899987761046e-06,2.521428531072286e-08 +248,0.7415777606391534,0.012679227792309929,5.793719360744966e-13,9.905891389769814e-15,8.762318964676595,0.04028841396803167,7.74496460004679e-06,3.561070319767264e-08 +250,0.4824046376446312,0.007737449307115425,3.7688793234926153e-13,6.045031584385745e-15,7.51930527644326,0.028676269230398916,6.646271770950936e-06,2.5346793576698768e-08 +251,1.0934672981857123,0.02037663225202505,3.8533488946092714e-13,7.18066955403955e-15,9.157806973803698,0.029524278610661845,5.436354291165731e-06,1.7526514718837627e-08 +252,1.7272029670968567,0.07933913872231643,6.086616110362635e-13,2.7958895921840266e-14,9.838363857005556,0.03763421735804507,5.840353683219156e-06,2.2340822433154866e-08 +253,0.6020768559923687,0.0119136857017223,4.703841623045666e-13,9.307796858472113e-15,7.501107976711978,0.03315436069183478,6.630187279755925e-06,2.9304953509521206e-08 +254,0.2208049750663532,0.0034389807234979876,4.73523297432611e-13,7.37500362710848e-15,4.5591112243974425,0.01939822718308608,6.676462834634491e-06,2.8407190891200046e-08 +255,0.4029758110393694,0.008872674823389074,5.555615883384072e-13,1.2232290829016165e-14,5.95593450285431,0.025217017796717173,6.9932093509315e-06,2.96087682922127e-08 +256,0.3349113169767348,0.0022829849479365323,1.1802183352414282e-13,8.045176612595821e-16,6.881714880404442,0.01760002680082652,4.08519641718527e-06,1.0447914172357549e-08 +257,0.1310495036301642,0.001160955963826464,2.8103983204552615e-13,2.48970701946971e-15,4.957475026286735,0.02311962445077383,7.259835556384678e-06,3.385688697330824e-08 +258,0.19320627735057985,0.0019473809767719791,2.6636334835351855e-13,2.684751885942663e-15,5.972610978191411,0.027321056005283766,7.012790171634422e-06,3.207924201528117e-08 +259,0.5245617954218281,0.007607591744890316,4.098240254788605e-13,5.9435778592749586e-15,7.741709995865728,0.030082954667962392,6.842854056109921e-06,2.6590154950181352e-08 +260,0.41395550212463084,0.005744739783872841,3.2341072439981155e-13,4.488188816080444e-15,6.746806023393159,0.025301484019804203,5.963464013456628e-06,2.2363839854886798e-08 +262,0.2177215782297345,0.0025900141193284485,3.0016130625432074e-13,3.5707164516988976e-15,5.872331237085855,0.02890734105923504,6.895045891049776e-06,3.39417916232131e-08 +263,1.4648822399316979,0.04620062750488328,5.162205005966781e-13,1.628097495370244e-14,9.967465722512841,0.04111972830782974,5.916992486348024e-06,2.440992828182629e-08 +265,0.099375927254387,0.0008659652250460715,2.1311483958495756e-13,1.857089992724549e-15,4.550239703853415,0.02058679333457336,6.6634711904642254e-06,3.014775335303735e-08 +266,0.09192244193391863,0.0006108461883521704,1.9713060276236595e-13,1.309979095110661e-15,4.512799875512838,0.017517351856135746,6.60864347704765e-06,2.5652795664032044e-08 +268,0.6038821032955761,0.010762948844990492,4.717945466295574e-13,8.408761483421509e-15,8.072345174370795,0.036685547942104976,7.135100635922968e-06,3.242615012077927e-08 +269,17.267739344234784,0.6997304760268199,1.589174207855407e-12,6.439717456839374e-14,23.77186819709798,0.11146594002456088,7.211594941141329e-06,3.381506251531458e-08 +270,0.4519915991665837,0.0045396960924166995,1.5928060514276867e-13,1.599776504912201e-15,6.836205145051638,0.020786639088619923,4.0581804451602955e-06,1.2339584678950546e-08 +271,0.3266510374500122,0.003860114072113467,2.552024265466685e-13,3.015788609277117e-15,7.058787756146691,0.02747064398265465,6.239222917014369e-06,2.4281148180503626e-08 +272,2.9242242788459243,0.058827526277129796,2.2846066547272766e-12,4.5960140262194905e-14,8.447902895488035,0.03426641130103382,7.467054010536898e-06,3.028788885212549e-08 +273,0.2445610044075583,0.003212000310721485,3.3716341365293296e-13,4.4282161501609646e-15,5.4559822179706465,0.022145136042597692,6.40618627506573e-06,2.6001893134527066e-08 +274,0.43471840416679774,0.008971013490024464,5.993234345831099e-13,1.236786518582715e-14,6.533927736349138,0.03258169268444038,7.671864847543452e-06,3.8256061723585795e-08 +275,12.841426417469512,0.5483978927807572,1.181814437432088e-12,5.0469825241839957e-14,23.795765779762355,0.09929078732893905,7.218844674402562e-06,3.0121525735319506e-08 +279,1.334014213012638,0.043459723623136194,4.70102965430107e-13,1.531508791489589e-14,8.699203990726373,0.027773716374810742,5.164113535881827e-06,1.6487327441200367e-08 +280,0.8050264476530512,0.02087983376616159,6.289424472032871e-13,1.6312773057795488e-14,8.128361988465356,0.037903284283218354,7.184613583551926e-06,3.3502500443371077e-08 +282,7.965949576966435,0.39182012737230254,7.331174833589951e-13,3.605975445026266e-14,19.552307135234216,0.0781299922972431,5.931520319279187e-06,2.370204363356706e-08 +283,0.13786551392679333,0.0011594107211031902,1.9006794404192838e-13,1.5984186747185229e-15,4.979659320459061,0.017902031165084573,5.846907837814291e-06,2.101981673763959e-08 +285,0.8857295894831609,0.018069685934635697,3.1212868825885496e-13,6.3677079720441586e-15,8.406037747633773,0.028743837926188818,4.990081087152478e-06,1.706322125998377e-08 +286,0.15237802525738323,0.0013150565995042648,2.1007558126507794e-13,1.8129994733210356e-15,5.175247142418053,0.019030375035110854,6.076558882975468e-06,2.234467094685002e-08 +287,0.6631721884747728,0.011368096076043145,2.3370006807402056e-13,4.006086010563077e-15,7.019103361891913,0.019449884776097937,4.1667544202366795e-06,1.1546046437198452e-08 +289,0.08476945807353524,0.0005332399511461141,1.8179080111982742e-13,1.1435500486962955e-15,4.248881382006221,0.016323613745294147,6.222155424489381e-06,2.390465929284039e-08 +290,0.10189660060101156,0.0007508728491083039,2.1852050344094477e-13,1.610270725809221e-15,4.380661480496773,0.016786398878000746,6.4151371015338845e-06,2.4582372028253026e-08 +291,0.14121662901397936,0.0010915355043577026,1.9468795040687247e-13,1.5048426776898665e-15,5.3683576823760975,0.020902839741900964,6.303301207484048e-06,2.4543240741487385e-08 +292,0.14892970683686763,0.0017826180728609353,3.1938449685260707e-13,3.8228811992807435e-15,4.704895538156145,0.01915971510868436,6.88995259264214e-06,2.805790855860305e-08 +293,0.3291718959487232,0.0032186163110562343,2.5717189589497963e-13,2.5146061041668567e-15,7.09130105085747,0.025752002128802257,6.267961235897876e-06,2.276205028280022e-08 +294,1.5517135497401433,0.03994965077393147,5.468196169218556e-13,1.4078147823109114e-14,9.818652827028592,0.035626548280599475,5.828652599904947e-06,2.1149008618547774e-08 +295,0.10143945568595124,0.0008194768347520293,2.1754014163893504e-13,1.7573941569017297e-15,4.4484488692382875,0.01744828111042505,6.514406446073659e-06,2.555164694027863e-08 +296,0.5170049384652419,0.007053721051071345,4.039200850916124e-13,5.510855690506687e-15,8.092343231323406,0.035298753222478274,7.152776806329163e-06,3.120037004421392e-08 +299,1.2043502654116902,0.026472555388318848,4.2440974441192726e-13,9.328856221446835e-15,9.245245312167585,0.034417457686631805,5.488260363822797e-06,2.0431255468850588e-08 +300,0.23552259253746738,0.002898544544622265,3.247026298233854e-13,3.9960711461230785e-15,5.859963284590457,0.02790312419770542,6.880523957789342e-06,3.276268215610517e-08 +301,0.1567521953682538,0.0016479520420556912,3.3616007263473186e-13,3.534085611079041e-15,5.222930266693827,0.022579270283226552,7.648574053849092e-06,3.30655804356456e-08 +303,0.1217383439290687,0.001196920510042598,2.610717535868697e-13,2.5668341327444053e-15,4.550451854499312,0.018664773652438158,6.663781862740928e-06,2.733310539574269e-08 +304,0.20081015308604702,0.0021485778456334145,2.768464124668049e-13,2.962131442698442e-15,5.772211346705453,0.026295213494884378,6.777489299947281e-06,3.087474061446611e-08 +305,0.9945238190887622,0.01697848341399479,3.5046747777047357e-13,5.9831711863097106e-15,9.409132665673596,0.032642598538122534,5.58554890901641e-06,1.9377644797935105e-08 +307,0.28479317706586493,0.006351774393387041,6.107480333918169e-13,1.3621582368219619e-14,4.804689856542287,0.019898711059162754,7.036093589210369e-06,2.914011049564042e-08 +308,0.08298356083639458,0.0006533019459008258,2.5549993901060374e-13,2.0114659536273275e-15,3.8658298784090164,0.015828587943864353,6.783316880597332e-06,2.777419885838919e-08 +309,0.5219760163141347,0.01556875006313578,7.196209223476426e-13,2.1463818125871818e-14,6.277040153422423,0.030889096995399795,7.370238186061077e-06,3.6268686617260706e-08 +310,0.13560616642415857,0.0010513324787433005,1.8695310026866022e-13,1.4494168775438476e-15,5.161567282901948,0.019662419617063828,6.060496563713629e-06,2.308679127718625e-08 +311,0.13633430842403213,0.00112257574401367,1.8795695148699361e-13,1.5476362266921515e-15,4.95059324185199,0.01832470067893948,5.812779664131929e-06,2.151609761782743e-08 +313,0.49642821186865826,0.007499014381863397,3.8784412035813887e-13,5.858749698247081e-15,7.953007940181968,0.03382725787814528,7.029619123777848e-06,2.989972356040853e-08 +314,0.6617293303131393,0.02015600536148358,9.122914772732525e-13,2.7788026107976687e-14,6.255362692409985,0.02749241025276121,7.344785417395322e-06,3.2280439015716815e-08 +315,0.264308991465751,0.004206345510670271,3.6438892634431123e-13,5.79906765928153e-15,5.549500872816261,0.023988091837893948,6.51599197075904e-06,2.816581479880455e-08 +318,0.26932708439195985,0.003595890649804301,3.713071075364716e-13,4.957465600649173e-15,5.936792300497865,0.02569891190853739,6.970733377410347e-06,3.0174588218110095e-08 +320,0.247098794278093,0.0032795525809236714,3.4066213121928224e-13,4.521346916836032e-15,6.034495751610231,0.028455140199945352,7.08545268538357e-06,3.341083627225522e-08 +321,0.25912113094700373,0.0036068673154478616,3.5723669548766505e-13,4.972598553132234e-15,5.610063473618783,0.02445166318749431,6.587102045268722e-06,2.8710120901478848e-08 +322,2.4759734915069265,0.07158332640440787,8.725262961111072e-13,2.5225768718928034e-14,10.78468987487213,0.045363303114087594,6.402121735719441e-06,2.6929044065272494e-08 +323,0.3836513855391042,0.003852061917539474,2.9973504847456734e-13,3.009497708338252e-15,7.471884822892304,0.02910657761009755,6.6043570981858465e-06,2.5727140741542393e-08 +324,0.5355727220732482,0.008575901715797592,4.1842652441019925e-13,6.700088710145105e-15,7.672279059909055,0.034448791741518506,6.7814844411302415e-06,3.0449093859421324e-08 +325,0.153049433926946,0.001904415659029398,4.712273205329584e-13,5.863547908408395e-15,4.762179243450164,0.022752325286482748,8.356128402257721e-06,3.992318260705443e-08 +326,0.8164899300851457,0.0267510173273632,6.378985141137272e-13,2.0899748515423868e-14,7.433792683645599,0.02865091741581866,6.570687669898051e-06,2.5324385250822542e-08 +327,0.19749749267043384,0.003189055280208195,4.235396595765737e-13,6.839030559259631e-15,5.066582911005045,0.025342388835070975,7.419615543579249e-06,3.7111952062148686e-08 +328,0.14747385369842425,0.0016822331132534986,3.1626237349810523e-13,3.6076024585525775e-15,4.846034857378243,0.023090681340062102,7.0966401190103096e-06,3.3814502040503477e-08 +331,0.5698649156053799,0.007589901485851981,4.4521796226825345e-13,5.929757001723917e-15,7.978056524949127,0.03181206027233302,7.0517594271556926e-06,2.811850169538628e-08 +332,0.16994194230798323,0.001625599895331751,2.342900313570947e-13,2.241129207297963e-15,5.436256102793307,0.02064977024318601,6.383024695122671e-06,2.4246097115097023e-08 +333,0.18918146090445995,0.0017209620779586505,2.608145452531738e-13,2.3726000402725597e-15,5.805279636756243,0.026620181812558628,6.816316704134352e-06,3.125630483106666e-08 +335,0.3471632889717171,0.0038305927226113335,2.712280189013464e-13,2.992724485498322e-15,6.772482700940266,0.022931520668727157,5.9861594843189676e-06,2.0269042536188298e-08 +336,4.400920671264007,0.1088724278673486,1.5508724251528249e-12,3.8366346237823817e-14,11.973866297316377,0.05538306980995648,7.10805322899023e-06,3.2877084011058476e-08 +337,0.18503223186814532,0.0017422767481147577,2.550942211069723e-13,2.401985456943718e-15,5.64727595512579,0.022549997832041785,6.630795385673337e-06,2.647726492556632e-08 +340,1.319513948811757,0.030178011238460502,4.649931117749577e-13,1.06346487398545e-14,9.40567705025521,0.03359967799333207,5.583497549112023e-06,1.9945796429575727e-08 +342,0.5449869836455364,0.008955292286870411,4.2578159811849933e-13,6.996494918128094e-15,7.958848525610238,0.03740595617569058,7.034781586516897e-06,3.3062914928466995e-08 +344,0.28870733618035976,0.004725497397813654,3.9802564284620287e-13,6.5147951015620576e-15,5.688984814858953,0.02729194078764819,6.679768184810195e-06,3.204505614057893e-08 +345,0.8968195063982453,0.022854248383198827,3.160367446806534e-13,8.053774711209131e-15,8.048174229098766,0.025890895308898813,4.777642358001657e-06,1.5369627271132383e-08 +346,0.4838864573447409,0.0062439234142372645,3.780456326115089e-13,4.878185659640043e-15,7.828842651922546,0.036693402478742566,6.919870121711862e-06,3.243309270167084e-08 +348,2.16274932060233,0.0694495685267109,7.621469545274059e-13,2.4473838295384942e-14,10.549568716491324,0.04322462974863514,6.262546628628605e-06,2.565946216198158e-08 +349,0.9660253569140979,0.016425156585166363,3.404246973889141e-13,5.78818032057931e-15,9.39789994636438,0.03455524912902135,5.578880822146398e-06,2.0513052678855753e-08 +350,0.04211980799930878,0.00017149379012492734,5.806836738515379e-14,2.364294825230501e-16,3.873585039820835,0.011563094535891801,4.5482016491286206e-06,1.3576902300202469e-08 +351,1.2116653426579869,0.03552809481635995,9.466369310280825e-13,2.7757009677652364e-14,7.062744032437949,0.02981074411229519,6.242719847444239e-06,2.6349549563481448e-08 +353,0.652195748851601,0.011733417590829232,5.095405146301676e-13,9.166958920123463e-15,8.335106039007993,0.03695838370548727,7.367353491359246e-06,3.266730812461539e-08 +355,0.16690067696818695,0.002050816318367429,3.579238149662222e-13,4.3980408815535746e-15,5.31305038822735,0.023986850075153634,7.78054794903575e-06,3.5126871292167944e-08 +356,0.7047755833628854,0.008930255498254918,2.4836099071759514e-13,3.1469976475701002e-15,8.251963805257827,0.02397821495092556,4.898618082945814e-06,1.4234201715781302e-08 +359,0.4172337069780386,0.004890278334269946,3.259718851318564e-13,3.820624318651602e-15,7.681277985103419,0.03467682724644365,6.789438539908306e-06,3.065065316023414e-08 +362,0.2829727136785121,0.0027880847110823576,2.21077893267366e-13,2.1782449839927693e-15,7.02669394146855,0.030556690037808823,6.210855374858842e-06,2.700888698726448e-08 +364,7.9345355472379495,0.13106785445365926,2.7961086573759157e-12,4.618795395896068e-14,13.759900549580134,0.060437132947395444,8.168297784052927e-06,3.5877330461068174e-08 +365,1.1766265749821485,0.027386229672431553,4.146399916188433e-13,9.650832543894408e-15,8.944555573068557,0.03205069077710697,5.309761738725904e-06,1.9026270248733562e-08 +366,0.16126877014768798,0.002043765272020923,4.965340185664606e-13,6.292594546320309e-15,5.027875865094673,0.027718577446572263,8.822342498754966e-06,4.863739487079028e-08 +367,0.17168181305281544,0.0019134351974936276,2.3668869975702173e-13,2.6379526224176253e-15,5.186157347475778,0.021113884787598243,6.089369189736515e-06,2.479104101302004e-08 +368,0.14416634868615608,0.001797263904755148,3.091693237180682e-13,3.854289652474233e-15,4.865543745742335,0.02358761945045797,7.125209364572201e-06,3.4542229148271016e-08 +370,1.4707471500916418,0.042391063349085274,5.182872790347171e-13,1.493849495286578e-14,9.721163800451903,0.03776780377905735,5.770780133441426e-06,2.2420123372652808e-08 +372,0.5794638991484622,0.00689132527134012,2.0420149547998452e-13,2.4284842046495178e-15,7.492541318502716,0.022158242357895704,4.447801669896896e-06,1.315381032574986e-08 +375,0.2162637851861448,0.002325612310425869,2.9815152354114094e-13,3.2061995628287392e-15,6.063153472863932,0.027771947612420383,7.119101384447915e-06,3.260866009433327e-08 +376,0.7649144063809663,0.018371045662515684,5.976041409398872e-13,1.4352733939550378e-14,8.193249928290506,0.03965839089496496,7.241967669968732e-06,3.5053829337321705e-08 +378,0.06337863413450621,0.0006151767862197135,2.650379764080884e-13,2.572557972878983e-15,3.3555241617513873,0.014878384406863404,6.861877901735094e-06,3.042554672641342e-08 +379,0.31139297058932375,0.0076799970410847814,6.677921373818242e-13,1.64699981166753e-14,4.970670711536423,0.02134811974814475,7.279159607399749e-06,3.1262656486974445e-08 +380,0.2909293954245844,0.00313320859466779,2.2729420437696023e-13,2.447879677585476e-15,6.780869084149274,0.028169201831738908,5.993572161205408e-06,2.4898599546295264e-08 +381,0.5493078987622486,0.007384217801544095,4.2915739616112564e-13,5.7690626541834866e-15,8.186402923325378,0.03177922125129597,7.235915640422564e-06,2.8089475468829477e-08 +383,15.773993319488639,0.8996839632693845,1.451702671327538e-12,8.279917370163133e-14,23.982704125966393,0.112743643792327,7.27555555585817e-06,3.420267538108184e-08 +384,0.2863635518520651,0.0024457268180457,2.2372705097669667e-13,1.910771272939985e-15,6.951564599780295,0.026285039316101735,6.144448970333045e-06,2.3233198863762256e-08 +385,0.1454433903210312,0.001616617434334271,3.119079801254338e-13,3.466887546184019e-15,4.846502049205877,0.021765657653609095,7.097324284686535e-06,3.187410818539635e-08 +386,0.13209580424420692,0.0011992114461075926,2.832836569191105e-13,2.5717471180581603e-15,4.96581564516089,0.020730340263745855,7.272049740998588e-06,3.035796660971316e-08 +387,0.18157268362012252,0.001608604380613354,2.5032472361563654e-13,2.217698383675341e-15,5.735530442378207,0.024476116836127878,6.734420115806655e-06,2.8738833353608158e-08 +388,0.7325672302941041,0.014350393351076223,5.72332285361981e-13,1.1211521731824499e-14,8.49225824025657,0.03922357179985604,7.506259440039724e-06,3.466949517609706e-08 +391,0.5843097555579135,0.010096320460854307,4.565032722128847e-13,7.887945193194837e-15,8.120534301362493,0.03984352318209995,7.177694734678863e-06,3.521746672595565e-08 +392,0.6722771691029109,0.01098298408588005,2.369086383813828e-13,3.870373596982787e-15,7.6317679894818955,0.02303549766690761,4.530450880242241e-06,1.3674575907665202e-08 +393,0.05914828108785151,0.000446435122782164,1.8211296379921285e-13,1.3745390712736045e-15,3.4089517466562245,0.013441588907723718,5.981639300111057e-06,2.358576549088517e-08 +394,1.7213956782440627,0.05381562934455042,6.06615135628901e-13,1.8964480802635426e-14,9.940869864630637,0.03947196775923219,5.901204371428073e-06,2.3431767225765107e-08 +395,0.0595283244190603,0.0005424013093582316,2.4893667803876904e-13,2.2682241005977996e-15,3.321190184668784,0.01453002948008225,6.791666647287448e-06,2.9713178444136442e-08 +398,0.34054090803931336,0.006173394753817326,4.694858665553564e-13,8.510935153933478e-15,6.040931116132799,0.024853714730392128,7.093008823149111e-06,2.9182193023176765e-08 +399,0.18342030347416904,0.0017256920437317609,2.528719400521701e-13,2.3791209956890042e-15,5.659946611059446,0.025163607008648052,6.645672739897517e-06,2.954605557729164e-08 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi/best_bootstrap_solution_nn_qoi.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi/best_bootstrap_solution_nn_qoi.csv new file mode 100644 index 00000000..43e0a38f --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi/best_bootstrap_solution_nn_qoi.csv @@ -0,0 +1,2 @@ +x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,best_y +1,2,1,1,1,2,2,1,2,2,2,-43.71504281174532 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi/convergence_data_nn_qoi.npz b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi/convergence_data_nn_qoi.npz new file mode 100644 index 00000000..7b431f96 Binary files /dev/null and b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi/convergence_data_nn_qoi.npz differ diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi/hyperparams_qoi.json b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi/hyperparams_qoi.json new file mode 100644 index 00000000..631a1b8d --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi/hyperparams_qoi.json @@ -0,0 +1,50 @@ +{ + "qoi": "qoi", + "best": "nn", + "best_params": { + "n_units": 115, + "n_layers": 3, + "lr": 0.007352422228350128 + }, + "amp_physical": 31.847128737940537, + "mean_physical": 1.1587697843637461, + "rbf": { + "params": { + "kernel": "inverse_multiquadric", + "epsilon": 4.061810507250742 + }, + "test_mse": 0.793554500254287, + "val_mse": 0.7742804347958798, + "test_nrmse_amp_pct": 2.7971650679432742, + "test_nrmse_mean_pct": 76.87607773529611, + "val_nrmse_amp_pct": 2.762987112097808, + "val_nrmse_mean_pct": 75.93674554481456 + }, + "rf": { + "params": { + "n_estimators": 101, + "max_depth": 3, + "min_samples_leaf": 4, + "max_features": 0.1685863056814062 + }, + "test_mse": 0.6929890052189214, + "val_mse": 0.8281670290668213, + "test_nrmse_amp_pct": 2.613923592969481, + "test_nrmse_mean_pct": 71.83994810681708, + "val_nrmse_amp_pct": 2.857516091641253, + "val_nrmse_mean_pct": 78.53473922881386 + }, + "nn": { + "params": { + "n_units": 115, + "n_layers": 3, + "lr": 0.007352422228350128 + }, + "test_mse": 0.0707926548581952, + "val_mse": 0.04559337741600136, + "test_nrmse_amp_pct": 0.835456450023289, + "test_nrmse_mean_pct": 22.96132456840312, + "val_nrmse_amp_pct": 0.6704719275922347, + "val_nrmse_mean_pct": 18.426961145633662 + } +} \ No newline at end of file diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_kla/best_bootstrap_solution_nn_qoi_kla.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_kla/best_bootstrap_solution_nn_qoi_kla.csv new file mode 100644 index 00000000..05846359 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_kla/best_bootstrap_solution_nn_qoi_kla.csv @@ -0,0 +1,2 @@ +x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,best_y +1,2,1,1,1,2,0,2,2,2,2,-4.501358457518286e-12 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_kla/convergence_data_nn_qoi_kla.npz b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_kla/convergence_data_nn_qoi_kla.npz new file mode 100644 index 00000000..13949a61 Binary files /dev/null and b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_kla/convergence_data_nn_qoi_kla.npz differ diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_kla/hyperparams_qoi_kla.json b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_kla/hyperparams_qoi_kla.json new file mode 100644 index 00000000..01d9c99f --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_kla/hyperparams_qoi_kla.json @@ -0,0 +1,50 @@ +{ + "qoi": "qoi_kla", + "best": "nn", + "best_params": { + "n_units": 58, + "n_layers": 3, + "lr": 0.004000778796522329 + }, + "amp_physical": 2.8835539033315353e-12, + "mean_physical": 4.1162948293743067e-13, + "rbf": { + "params": { + "kernel": "inverse_multiquadric", + "epsilon": 2.0727690732635238 + }, + "test_mse": 1.4541132544990377e-26, + "val_mse": 1.815119667807287e-26, + "test_nrmse_amp_pct": 4.181874952751888, + "test_nrmse_mean_pct": 29.29494203670793, + "val_nrmse_amp_pct": 4.672233694438651, + "val_nrmse_mean_pct": 32.730011491726856 + }, + "rf": { + "params": { + "n_estimators": 89, + "max_depth": 10, + "min_samples_leaf": 7, + "max_features": 0.15630701777997486 + }, + "test_mse": 1.4742838965213437e-26, + "val_mse": 1.966999435485926e-26, + "test_nrmse_amp_pct": 4.210779371310687, + "test_nrmse_mean_pct": 29.497423764605493, + "val_nrmse_amp_pct": 4.863781353144562, + "val_nrmse_mean_pct": 34.071844430888326 + }, + "nn": { + "params": { + "n_units": 58, + "n_layers": 3, + "lr": 0.004000778796522329 + }, + "test_mse": 8.14058321473516e-27, + "val_mse": 1.4334769254169032e-26, + "test_nrmse_amp_pct": 3.128957655279296, + "test_nrmse_mean_pct": 21.91902775246826, + "val_nrmse_amp_pct": 4.152094975112983, + "val_nrmse_mean_pct": 29.08632682734781 + } +} \ No newline at end of file diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum/best_bootstrap_solution_nn_qoi_sum.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum/best_bootstrap_solution_nn_qoi_sum.csv new file mode 100644 index 00000000..29998b1c --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum/best_bootstrap_solution_nn_qoi_sum.csv @@ -0,0 +1,2 @@ +x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,best_y +1,2,1,2,1,2,1,1,2,2,2,-47.572386610770394 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum/convergence_data_nn_qoi_sum.npz b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum/convergence_data_nn_qoi_sum.npz new file mode 100644 index 00000000..174d85cc Binary files /dev/null and b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum/convergence_data_nn_qoi_sum.npz differ diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum/hyperparams_qoi_sum.json b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum/hyperparams_qoi_sum.json new file mode 100644 index 00000000..a4e444cd --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum/hyperparams_qoi_sum.json @@ -0,0 +1,50 @@ +{ + "qoi": "qoi_sum", + "best": "nn", + "best_params": { + "n_units": 32, + "n_layers": 3, + "lr": 0.003626140666750365 + }, + "amp_physical": 24.227573051899828, + "mean_physical": 7.421273410411606, + "rbf": { + "params": { + "kernel": "multiquadric", + "epsilon": 9.997810687782733 + }, + "test_mse": 2.1611921847299187, + "val_mse": 2.2280892794916007, + "test_nrmse_amp_pct": 6.067877191218115, + "test_nrmse_mean_pct": 19.80926045844739, + "val_nrmse_amp_pct": 6.16107339957327, + "val_nrmse_mean_pct": 20.113509853560206 + }, + "rf": { + "params": { + "n_estimators": 125, + "max_depth": 9, + "min_samples_leaf": 2, + "max_features": 0.15062441354415443 + }, + "test_mse": 2.3346167924905297, + "val_mse": 1.690849119476513, + "test_nrmse_amp_pct": 6.30663781819191, + "test_nrmse_mean_pct": 20.58872109977204, + "val_nrmse_amp_pct": 5.367134960719106, + "val_nrmse_mean_pct": 17.52160945287362 + }, + "nn": { + "params": { + "n_units": 32, + "n_layers": 3, + "lr": 0.003626140666750365 + }, + "test_mse": 0.2684176605898265, + "val_mse": 0.6018713490278378, + "test_nrmse_amp_pct": 2.138432920941118, + "test_nrmse_mean_pct": 6.981152282572348, + "val_nrmse_amp_pct": 3.2021518530766255, + "val_nrmse_mean_pct": 10.45378113072208 + } +} \ No newline at end of file diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum_kla/best_bootstrap_solution_nn_qoi_sum_kla.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum_kla/best_bootstrap_solution_nn_qoi_sum_kla.csv new file mode 100644 index 00000000..99d0e9ba --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum_kla/best_bootstrap_solution_nn_qoi_sum_kla.csv @@ -0,0 +1,2 @@ +x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,best_y +0,1,0,2,2,1,0,0,0,0,0,-9.208020626300388e-06 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum_kla/convergence_data_nn_qoi_sum_kla.npz b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum_kla/convergence_data_nn_qoi_sum_kla.npz new file mode 100644 index 00000000..98b4d32d Binary files /dev/null and b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum_kla/convergence_data_nn_qoi_sum_kla.npz differ diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum_kla/hyperparams_qoi_sum_kla.json b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum_kla/hyperparams_qoi_sum_kla.json new file mode 100644 index 00000000..f6f71d3e --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/qoi_sum_kla/hyperparams_qoi_sum_kla.json @@ -0,0 +1,50 @@ +{ + "qoi": "qoi_sum_kla", + "best": "nn", + "best_params": { + "n_units": 52, + "n_layers": 2, + "lr": 0.00027717283587404306 + }, + "amp_physical": 4.764162053594671e-06, + "mean_physical": 6.450542874776105e-06, + "rbf": { + "params": { + "kernel": "multiquadric", + "epsilon": 4.897534301342347 + }, + "test_mse": 7.323713661313873e-14, + "val_mse": 4.523472988855829e-13, + "test_nrmse_amp_pct": 5.68040305637199, + "test_nrmse_mean_pct": 4.195361726237645, + "val_nrmse_amp_pct": 14.117229501555634, + "val_nrmse_mean_pct": 10.426528495174603 + }, + "rf": { + "params": { + "n_estimators": 65, + "max_depth": 7, + "min_samples_leaf": 2, + "max_features": 0.37545562583526304 + }, + "test_mse": 7.359651767356893e-14, + "val_mse": 5.478837571693559e-13, + "test_nrmse_amp_pct": 5.694323118829236, + "test_nrmse_mean_pct": 4.205642633539542, + "val_nrmse_amp_pct": 15.53666089984357, + "val_nrmse_mean_pct": 11.474874554829146 + }, + "nn": { + "params": { + "n_units": 52, + "n_layers": 2, + "lr": 0.00027717283587404306 + }, + "test_mse": 1.4491142055612715e-13, + "val_mse": 3.7395053463098084e-13, + "test_nrmse_amp_pct": 7.99033120061973, + "test_nrmse_mean_pct": 5.901399841942351, + "val_nrmse_amp_pct": 12.835729422646637, + "val_nrmse_mean_pct": 9.480054040832073 + } +} \ No newline at end of file diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/split.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/split.csv new file mode 100644 index 00000000..5b3d4b91 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev1/split.csv @@ -0,0 +1,290 @@ +row_index,set +90,test +159,test +103,test +63,test +31,test +213,test +148,test +5,test +278,test +284,test +141,test +214,test +266,test +196,test +195,test +84,test +164,test +267,test +144,test +44,test +92,val +283,val +190,val +41,val +47,val +36,val +124,val +201,val +160,val +271,val +281,val +130,val +39,val +117,val +74,val +75,val +132,val +17,val +123,val +33,val +185,train +111,train +121,train +285,train +118,train +93,train +68,train +18,train +42,train +64,train +10,train +182,train +257,train +273,train +212,train +0,train +227,train +152,train +138,train +149,train +151,train +83,train +25,train +277,train +8,train +119,train +244,train +147,train +71,train +70,train +236,train +65,train +205,train +173,train +43,train +126,train +6,train +54,train +94,train +235,train +61,train +106,train +226,train +128,train +198,train +162,train +150,train +133,train +13,train +204,train +109,train +97,train +166,train +203,train +170,train +45,train +253,train +282,train +197,train +276,train +72,train +219,train +98,train +155,train +242,train +233,train +37,train +28,train +168,train +258,train +192,train +239,train +206,train +222,train +116,train +99,train +223,train +52,train +228,train +186,train +46,train +161,train +91,train +194,train +265,train +60,train +230,train +140,train +218,train +260,train +208,train +102,train +82,train +274,train +50,train +167,train +35,train +122,train +202,train +14,train +252,train +139,train +15,train +89,train +80,train +142,train +216,train +200,train +261,train +53,train +224,train +100,train +225,train +288,train +181,train +32,train +9,train +87,train +247,train +220,train +215,train +131,train +157,train +16,train +105,train +254,train +231,train +77,train +110,train +113,train +30,train +280,train +129,train +286,train +172,train +179,train +1,train +251,train +2,train +269,train +12,train +177,train +262,train +112,train +11,train +189,train +48,train +165,train +180,train +51,train +243,train +88,train +135,train +23,train +248,train +199,train +38,train +178,train +55,train +20,train +137,train +34,train +27,train +114,train +57,train +229,train +153,train +171,train +154,train +136,train +40,train +221,train +275,train +175,train +211,train +22,train +19,train +287,train +250,train +174,train +249,train +108,train +264,train +4,train +217,train +96,train +81,train +79,train +183,train +232,train +145,train +85,train +238,train +3,train +256,train +26,train +234,train +143,train +259,train +158,train +66,train +163,train +246,train +237,train +107,train +209,train +76,train +156,train +210,train +146,train +134,train +67,train +193,train +255,train +245,train +24,train +272,train +59,train +21,train +188,train +62,train +86,train +125,train +101,train +240,train +49,train +58,train +187,train +169,train +279,train +268,train +207,train +241,train +56,train +270,train +73,train +263,train +115,train +191,train +104,train +176,train +7,train +69,train +127,train +78,train +120,train +29,train +184,train +95,train diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev2/X_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev2/X_data.csv new file mode 100644 index 00000000..e6b429db --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev2/X_data.csv @@ -0,0 +1,161 @@ +1,2,2,0,1,1,1,1,0,1,2 +2,1,1,1,1,0,0,1,0,0,0 +0,0,1,2,0,2,2,1,1,0,2 +1,2,2,0,0,1,1,2,1,1,2 +0,2,0,0,2,2,1,2,0,0,0 +1,2,0,2,1,0,0,0,2,0,0 +0,2,2,1,0,0,2,2,1,2,0 +0,2,0,1,1,0,1,2,1,0,2 +0,0,2,2,0,2,1,1,2,1,1 +0,0,2,1,1,1,1,1,1,1,2 +0,0,1,2,0,2,0,0,0,1,1 +1,0,1,0,2,1,1,2,2,1,0 +1,1,2,0,1,0,0,2,1,0,0 +1,0,1,0,2,2,1,2,1,0,0 +2,2,1,2,2,1,0,0,1,2,0 +2,1,2,2,2,0,2,1,1,0,0 +0,1,2,1,0,0,2,2,0,1,2 +2,1,0,1,1,2,0,1,2,0,2 +1,0,2,1,2,0,2,0,1,0,0 +2,0,1,1,1,1,1,0,2,2,0 +2,2,1,0,1,0,2,1,2,0,0 +1,0,0,2,2,1,1,2,2,2,0 +2,2,0,2,2,2,1,2,1,2,2 +2,1,0,1,2,0,2,1,2,0,1 +1,0,1,2,2,0,1,0,0,0,0 +2,0,2,2,1,2,1,0,1,1,2 +2,2,2,0,2,2,2,0,1,2,0 +2,0,1,0,2,0,2,0,0,2,1 +2,0,1,2,1,2,1,1,1,1,2 +0,1,1,1,1,1,1,2,0,0,0 +2,0,1,2,0,1,0,1,1,2,2 +1,2,2,2,1,0,1,0,0,1,2 +2,0,0,0,1,1,0,1,0,0,2 +2,2,1,2,1,2,0,0,1,0,1 +0,2,1,1,2,0,1,0,2,2,1 +2,1,2,0,0,1,2,0,0,2,2 +2,1,2,0,1,0,2,1,1,0,0 +0,1,0,0,2,0,0,2,0,2,0 +1,0,1,2,0,0,0,0,0,1,2 +2,1,0,1,0,0,2,1,2,0,2 +0,0,0,2,2,1,2,0,1,2,2 +2,0,0,1,0,1,0,0,0,0,0 +1,1,1,1,0,0,2,0,2,1,1 +1,2,2,0,1,0,2,1,1,0,2 +1,1,1,2,0,0,0,1,0,1,1 +1,0,1,2,2,0,1,0,0,1,2 +1,0,0,1,1,0,2,1,0,1,1 +2,0,2,0,1,0,0,1,2,0,1 +0,0,1,0,2,2,1,2,2,2,2 +2,1,2,1,1,1,0,1,0,2,0 +0,0,2,2,2,1,1,2,0,0,1 +1,2,0,0,2,2,1,0,1,1,1 +0,0,0,1,0,0,0,0,2,1,2 +0,1,2,0,1,1,2,0,0,2,1 +1,0,2,1,0,2,0,2,0,0,0 +2,1,0,2,2,0,1,2,2,1,2 +1,0,0,0,2,2,1,2,1,1,2 +2,0,2,2,1,1,0,2,0,1,2 +1,1,1,2,0,1,2,1,0,1,0 +0,0,2,2,2,1,1,2,1,1,2 +1,0,2,2,2,0,0,2,1,2,2 +0,1,2,1,0,0,2,0,1,2,2 +0,0,2,1,1,0,2,2,0,2,1 +1,0,1,2,2,0,2,1,0,2,1 +2,2,2,0,0,2,0,2,2,1,2 +0,0,0,0,2,2,0,2,0,1,1 +1,1,1,0,0,1,1,1,1,2,0 +2,0,2,0,1,2,1,2,1,1,1 +1,2,0,0,1,0,2,0,0,1,2 +2,2,2,1,0,2,0,0,2,2,1 +2,1,1,1,1,1,1,1,0,1,0 +0,2,2,2,1,1,0,1,2,1,1 +0,0,1,2,0,1,2,0,0,2,1 +0,2,0,0,1,2,1,2,0,2,0 +2,0,2,1,0,2,2,0,0,0,1 +1,1,0,0,0,2,2,1,1,2,2 +1,1,0,1,0,0,0,0,0,0,2 +1,1,2,1,2,2,0,0,1,1,1 +0,0,2,0,2,0,1,2,2,1,1 +1,0,0,2,2,1,2,0,2,0,1 +2,0,2,2,1,2,1,2,0,1,0 +2,0,1,0,2,0,1,2,1,1,0 +1,2,0,1,0,1,2,2,1,0,2 +2,0,2,2,1,1,0,2,0,1,0 +2,2,0,0,0,1,2,1,2,0,1 +1,1,2,0,2,2,1,1,2,2,2 +1,0,2,1,0,2,1,1,0,1,0 +1,0,2,1,1,2,2,2,0,2,1 +0,2,0,0,0,0,0,1,0,2,2 +1,0,1,2,2,1,2,1,1,1,0 +0,2,1,2,1,0,0,0,2,2,2 +2,1,2,1,0,0,2,2,0,1,0 +1,0,0,0,1,2,2,1,1,0,1 +0,1,0,0,0,2,2,2,0,2,1 +2,2,2,0,1,1,1,0,0,0,1 +1,1,0,2,0,0,0,1,1,2,0 +2,1,2,1,2,2,1,1,2,1,1 +0,2,1,2,0,0,1,0,2,2,0 +2,1,2,2,0,2,2,0,2,1,0 +1,0,0,2,2,2,2,1,2,2,1 +1,0,0,1,2,1,2,2,0,1,0 +0,0,0,2,2,0,0,2,1,0,1 +1,2,2,0,1,0,2,0,0,2,1 +1,0,0,2,2,0,1,2,1,1,1 +0,2,1,1,1,2,2,0,0,1,1 +1,0,0,1,2,1,2,2,0,2,1 +0,1,2,1,1,1,2,1,1,0,0 +1,2,0,1,2,1,0,0,0,2,2 +2,0,0,1,2,0,2,1,0,1,2 +0,1,2,1,0,0,0,1,0,0,1 +0,2,1,1,2,0,2,2,0,2,2 +2,0,2,1,0,2,0,0,2,0,1 +2,2,1,1,0,0,2,2,1,1,0 +1,0,0,1,0,1,0,2,1,0,2 +2,1,0,0,2,2,1,2,2,2,2 +2,1,0,0,2,2,1,1,0,1,0 +0,0,1,2,1,0,2,1,2,1,0 +1,2,2,1,1,1,1,1,0,2,0 +2,2,2,0,2,2,0,2,0,1,0 +0,0,1,2,1,2,1,2,0,1,0 +1,0,1,0,1,1,1,2,1,1,0 +1,0,0,2,2,2,0,0,2,1,1 +2,2,2,0,2,1,0,2,1,2,0 +0,0,2,0,2,2,1,2,1,1,1 +2,1,2,2,1,1,2,0,0,0,0 +1,0,1,1,0,1,0,0,0,2,2 +0,1,1,2,2,0,2,1,0,2,2 +0,0,1,2,1,2,2,0,0,0,1 +1,1,0,0,1,2,2,1,0,0,0 +1,0,0,2,2,1,2,0,1,1,1 +2,1,1,2,2,1,0,1,1,1,2 +1,2,1,0,1,0,1,0,1,1,1 +1,1,1,0,0,0,1,0,0,2,2 +2,1,2,1,0,1,2,0,2,2,0 +0,2,2,0,2,2,0,1,2,0,1 +0,1,0,1,2,0,1,2,2,1,2 +0,0,0,2,1,2,0,0,1,0,2 +2,1,1,2,0,0,1,2,0,1,2 +2,0,2,2,0,1,0,1,0,2,2 +2,2,2,1,0,1,2,2,1,0,0 +0,2,2,2,0,2,1,0,1,1,1 +1,2,1,2,1,1,2,2,2,2,0 +1,2,2,0,0,0,0,1,0,2,2 +0,1,1,2,1,1,1,1,0,0,1 +1,1,0,1,1,2,2,2,0,1,0 +1,1,1,1,1,2,2,2,0,0,1 +2,1,1,1,0,2,0,0,1,0,0 +2,1,2,1,2,0,2,0,1,2,2 +0,2,0,0,2,0,1,0,2,0,1 +2,2,0,0,1,1,2,2,1,0,1 +0,2,2,0,0,1,1,0,2,0,1 +0,0,0,0,1,2,0,1,0,2,0 +2,1,0,1,2,1,0,0,2,0,2 +2,0,2,2,0,1,2,1,2,1,2 +1,0,2,1,1,2,0,2,0,1,0 +0,1,1,1,0,0,0,2,1,2,0 +2,0,1,2,2,0,0,1,2,1,1 +0,2,0,2,1,0,0,2,2,0,1 +2,2,0,1,0,0,1,0,0,0,1 +1,0,0,2,0,1,1,1,0,1,2 +2,2,2,2,0,1,1,0,2,2,1 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev2/Y_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev2/Y_data.csv new file mode 100644 index 00000000..42d53e4e --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev2/Y_data.csv @@ -0,0 +1,162 @@ +sim_id,qoi,qoi_err,qoi_kla,qoi_kla_err,qoi_sum,qoi_sum_err,qoi_sum_kla,qoi_sum_kla_err +0,20.699746947105627,0.522025319804726,1.3268119663586066e-10,3.346076852190392e-12,22.20892850300179,0.5145780355640763,5.622762991776892e-05,1.3027870004443811e-06 +1,3.0462209853016744,0.07504345536944568,1.1021016117077703e-10,2.7150201351067007e-12,9.879101087064722,0.22626073960354154,5.942203834610984e-05,1.3609410640149197e-06 +2,1.5765184147568274,0.099492277029662,3.7142834012118327e-11,2.344041843475984e-12,9.869221388144348,0.2217274526875399,4.7903901539592056e-05,1.076235869521374e-06 +4,14.955183141797058,0.4554825133232335,9.585970307191129e-11,2.919550905370353e-12,23.085415059910748,0.5785598314518794,5.84466816843373e-05,1.464773417175136e-06 +5,1.1341303442039619,0.02639246016713552,5.840167123820818e-11,1.359071106531785e-12,8.532752361825633,0.13556009612388278,6.123085081699178e-05,9.727763880308605e-07 +6,2.6263406106285716,0.06647947911171925,1.352425497306619e-10,3.4233390076862007e-12,7.6797069655337955,0.18356847907359283,5.510941480560249e-05,1.3172835244758623e-06 +7,2.3103692320170888,0.09229388561568158,5.4432387409147404e-11,2.174447472598249e-12,11.521969372356082,0.29850117980934243,5.592612277603266e-05,1.4488854371424347e-06 +9,5.829615667273074,0.15899832360289934,1.3734596745873258e-10,3.746006568177748e-12,11.897164487643233,0.3045587396664628,5.774727038218473e-05,1.4782880328370266e-06 +10,1.206735662113046,0.02241390616495414,1.6456095907142788e-11,3.0565549779006296e-13,11.615009468570765,0.18182134376888226,4.2892059458645325e-05,6.714322453966383e-07 +11,8.877124539448113,0.2526620736384187,5.6900575127059215e-11,1.6195128545211544e-12,23.048997433070326,0.5697633351842403,5.8354481050245845e-05,1.442502817863547e-06 +12,0.2116773999206866,0.004057306191109097,1.0900258374920325e-11,2.0892965335847827e-13,5.641403764565511,0.09069921559725906,4.048259409835247e-05,6.508556528298038e-07 +15,11.304011041804424,0.33373751364173854,1.5415131546945144e-10,4.5511346865391805e-12,17.507062896087504,0.49733467859813657,6.465031169486953e-05,1.8365640301219707e-06 +16,3.7927272013374704,0.10087501418885483,1.3721823803722886e-10,3.649588007303531e-12,9.717382740460334,0.2401276797618196,5.8449314855121856e-05,1.4443496499720653e-06 +17,6.726476802764819,0.17734198196480866,1.584760500166229e-10,4.178183858799621e-12,12.707748911032978,0.3231833123700745,6.168174047492761e-05,1.5686892571611237e-06 +18,13.1354146039178,0.37373109318701203,1.7912592586887367e-10,5.096521892285206e-12,17.250022112322092,0.4713108929625283,6.370110816865496e-05,1.7404630543763324e-06 +20,10.589176463801442,0.28287486766904535,1.4440321036395582e-10,3.857527463285391e-12,15.972832688093094,0.39543940435139224,5.898468629192256e-05,1.460283824954797e-06 +23,3.4308337387793193,0.08496454263425353,8.083057380735472e-11,2.0017678667371643e-12,11.014540946581706,0.24721138830856684,5.346313191866337e-05,1.199931538593856e-06 +24,12.170297434787397,0.33599269125810927,1.6596474944199792e-10,4.58188825029064e-12,16.558065938529595,0.42638910260725243,6.114584328814785e-05,1.5745752761576638e-06 +25,3.6895700182889466,0.09700147447393301,1.3348608284023765e-10,3.509446031127897e-12,9.6415117537299,0.23565248325722585,5.799295668668515e-05,1.4174316853743628e-06 +26,11.901551417615327,0.2513280129483239,1.6229989517595695e-10,3.4273271378654927e-12,18.189756682225305,0.3536362644937482,6.717137227070279e-05,1.3059126400488073e-06 +28,6.933637492082713,0.19861806714356792,1.6335676390329544e-10,4.679449241231496e-12,12.879824142462475,0.34299147568730876,6.251697102559303e-05,1.664835475266766e-06 +30,10.72485936399962,0.325737890576436,1.4625350027527112e-10,4.442044883963916e-12,17.66957306704189,0.4945436573513642,6.525043144342209e-05,1.8262573117838596e-06 +31,21.25566149912942,0.8457221718756711,3.9935684730656154e-11,1.5889646166568804e-12,30.792914594700825,0.5448242826816098,4.22079298858958e-05,7.467920924742941e-07 +32,9.023707907554027,0.23041498962014592,1.230551208743849e-10,3.1421389842684747e-12,15.076137155901634,0.36600159287707124,5.567335722346126e-05,1.3515754874002667e-06 +33,2.4141097738983457,0.06549825479744403,1.2431379207592406e-10,3.372811177130928e-12,8.103447262727446,0.19414670799756592,5.815016616873304e-05,1.3931926703711397e-06 +34,8.58057993498525,0.2100379209430356,5.499978419543279e-11,1.3463006477713309e-12,21.300301491816157,0.41733506041290386,5.3927206347961085e-05,1.0565913317129537e-06 +35,8.19402001165581,0.21875934591453763,1.1174077840915016e-10,2.9831925675059927e-12,17.15714981221738,0.444127267619809,6.335814879686831e-05,1.6400790232982013e-06 +36,1.3225728000995742,0.04440414897125824,4.784976619048802e-11,1.6065112982834202e-12,7.823277566887705,0.1512777997721976,4.705641699543121e-05,9.099244105004746e-07 +37,24.972102807831043,0.8207270783529736,4.6918229784080596e-11,1.5420031684358777e-12,30.544119793277456,0.5543736268774526,4.1866905888704194e-05,7.598813984735043e-07 +39,3.918252355842555,0.11968923512071934,9.231417488458895e-11,2.819882942521926e-12,12.10873475564351,0.3260055606331857,5.8774204595080796e-05,1.5823880782307697e-06 +40,1.7648598264518103,0.058197689349314456,2.4067161913404747e-11,7.936342544393154e-13,11.967123395629981,0.2214561920967044,4.4192350391382683e-05,8.177963336663425e-07 +41,10.600964877198429,0.2696231347806151,1.4456396724197174e-10,3.676815315928435e-12,15.656551478117692,0.36591396750912225,5.7816718852782764e-05,1.3512519032910736e-06 +42,1.2081035202675312,0.03695895199746924,6.221089506721569e-11,1.9031891273685384e-12,8.209010570114794,0.17328530172511664,5.890768622987172e-05,1.2434916601805614e-06 +43,9.815001674666489,0.25365701187473316,1.3384589016310024e-10,3.4590873925285784e-12,15.620100976915849,0.3808148445469073,5.768211396338706e-05,1.4062780576493686e-06 +44,11.361798821725879,0.1798884518554449,1.549393599262567e-10,2.4531152175755653e-12,17.76683233903567,0.25623029393976143,6.560959172179411e-05,9.462105935005135e-07 +45,7.137358365306081,0.19810994800333703,1.6815643587803201e-10,4.667477946764798e-12,12.710247149689124,0.3344047685541384,6.169386670239667e-05,1.623156731167845e-06 +47,6.570357090071081,0.1719971473994165,1.5479786363125336e-10,4.052259352590443e-12,12.702668603615972,0.3172902773377207,6.165708133145363e-05,1.540085240822737e-06 +48,2.100567204050115,0.04239787260274448,1.4600231410610167e-10,2.946912386921514e-12,6.857798874082252,0.13297752263780394,5.717370326305106e-05,1.1086381446214274e-06 +49,1.321605092849144,0.03859371364025942,6.805562137036811e-11,1.987370642705076e-12,7.033687581533451,0.14413270981953316,5.0473593321993224e-05,1.0342932772458933e-06 +50,5.749611481119033,0.17238435548380238,1.3546106590217945e-10,4.061381993440582e-12,12.240408894549223,0.3339864485160489,5.9413333577987907e-05,1.6211262587026723e-06 +52,1.0243800800560219,0.023379045660657637,2.4134433838153876e-11,5.508112093174077e-13,9.809014008332678,0.16665716020507684,4.76116629035667e-05,8.089319197025576e-07 +53,0.572170433293632,0.01606700364649783,5.161761240213892e-11,1.4494638632665393e-12,6.30738769540545,0.15820154812348988,5.9908131803180244e-05,1.50261243705584e-06 +57,8.047627843943523,0.16530997893130409,1.0974444501158441e-10,2.2543104930412314e-12,15.550477942764111,0.2736644253628239,5.7425009084804205e-05,1.0105915824896182e-06 +58,12.082082668136604,0.3580585484727136,1.647617762424741e-10,4.882797450206889e-12,16.289651899664324,0.44757445017260994,6.01546404014264e-05,1.6528088057888017e-06 +59,3.810522296314472,0.10700300658579928,8.977605057496566e-11,2.5209949145846217e-12,11.245697983006874,0.2606813407848263,5.4585137704802856e-05,1.2653129139084125e-06 +60,5.823786652877734,0.14973958044000077,1.3720863565726348e-10,3.5278702261373682e-12,11.454410199085972,0.2749325328223503,5.5598199345910214e-05,1.3344863245558286e-06 +61,3.903456366544696,0.09490292198993255,9.196558081264348e-11,2.235916460197788e-12,10.384540427521506,0.22684319206224374,5.040519228721023e-05,1.1010669942252752e-06 +62,2.1023368341023643,0.043724461243104945,7.606108771591106e-11,1.5819206646601652e-12,8.577965066221855,0.1657474761073444,5.159580460531568e-05,9.969584073889712e-07 +65,9.308262850030102,0.22369058484290183,1.269355598655641e-10,3.050439172288456e-12,16.86640583056452,0.3607910032846275,6.228448503014001e-05,1.3323337567490776e-06 +67,13.484259347058208,0.39724215609388747,1.8388307555549465e-10,5.417139163729897e-12,17.54123050649974,0.4939812061051471,6.477648629515118e-05,1.8241802828755734e-06 +68,1.0027586739019316,0.02675867940267841,2.3625032622721564e-11,6.304355078468769e-13,9.922738787944084,0.2084782803631077,4.8163667953763426e-05,1.0119261310375331e-06 +69,2.623140916317064,0.08252377804277308,3.5771428514764686e-11,1.125365933893486e-12,11.680709368098844,0.2179174677648927,4.31346768985183e-05,8.047284857761883e-07 +73,0.13431882471251483,0.0026954279462518232,9.335982700990944e-12,1.873487854873252e-13,4.849661344679009,0.0906555737142758,4.043179198309317e-05,7.557986090194039e-07 +74,4.9064781254020975,0.11521766428039115,1.1559681176438233e-10,2.714532564773367e-12,11.3577671975315,0.2456737246555779,5.512910693762177e-05,1.1924679210932242e-06 +75,2.324126503379287,0.049238125112136,1.1968013323998938e-10,2.535501129279974e-12,8.452269667414395,0.1457913573515638,6.06533084192979e-05,1.0461956977548163e-06 +76,19.50815016524132,0.531304687793951,1.2504330232927702e-10,3.4055557365533183e-12,25.12744667638502,0.6245416294191704,6.361661141704218e-05,1.5811881988736026e-06 +79,3.7987285548681666,0.1151604677514204,5.180276293040916e-11,1.5704281903050833e-12,14.547597378797075,0.3394375405636293,5.3721558595386813e-05,1.2534794062585502e-06 +80,9.411045893738818,0.19768752419729246,1.2833719832548173e-10,2.695838835114015e-12,16.48513329930951,0.3238007913022165,6.087651671610815e-05,1.195735813990905e-06 +82,8.711357751300618,0.22191923388507775,1.1879564267293161e-10,3.0262834753774616e-12,14.74422828995715,0.3362410928362221,5.4447679782935145e-05,1.2416755216060202e-06 +84,5.286002259975037,0.138971338041154,3.388220676901098e-11,8.907782060802103e-13,19.5708605342915,0.37507255872876716,4.9548680559540635e-05,9.495929096494379e-07 +86,6.346790162765942,0.16831073984535516,8.655034517609743e-11,2.2952314881813175e-12,15.671130074370076,0.348968140753947,5.787055501496912e-05,1.2886741346752905e-06 +87,4.141491469544869,0.11621333384982241,9.75736970631176e-11,2.737990580239843e-12,11.810885958822428,0.29722801892413026,5.7328485785762864e-05,1.442705679948953e-06 +88,4.150705911224189,0.0904183054558466,9.779078966070845e-11,2.1302587269312324e-12,10.426037138407258,0.20491552824773168,5.060661189811447e-05,9.946330012319781e-07 +89,7.6911440302016105,0.190321607804451,1.0488312210399375e-10,2.59539079647939e-12,14.216430293171516,0.32388310264932246,5.2498620433706125e-05,1.1960397737148541e-06 +90,3.6164306114007365,0.0748537280390768,4.9316790904314377e-11,1.0207704918971837e-12,14.351610332398113,0.22308224423411407,5.299781565509545e-05,8.238010496393534e-07 +91,0.12370681553811537,0.0018614545519007905,6.370241957470715e-12,9.585499260378024e-14,5.2438132392649175,0.07844663793087157,3.762949293022589e-05,5.629314151229235e-07 +92,11.62733162040377,0.32513780200560466,1.5856039570479164e-10,4.4338615451654774e-12,17.45095564929202,0.4537489202020626,6.444311810213924e-05,1.6756099689294641e-06 +93,5.54186723227859,0.1421551176541946,3.552224953136513e-11,9.111855895899283e-13,20.651266255862467,0.380827467205199,5.2284006248209764e-05,9.641629442065882e-07 +94,2.5830093417750266,0.06789940105327652,9.345148547504444e-11,2.45655321050215e-12,8.817777656591137,0.20838237224477865,5.3038259017179805e-05,1.2534040507895546e-06 +95,7.5649992960275565,0.17305736922864706,1.0316290337898555e-10,2.3599606506415884e-12,13.577739049760844,0.27762854409432103,5.014005313778647e-05,1.0252303349209485e-06 +96,20.264216468192693,0.5420562293688529,1.298895341866534e-10,3.474470934822849e-12,24.208699304609738,0.5947075916138637,6.129056540552496e-05,1.5056556357008018e-06 +97,14.639911605984942,0.3854110620365902,9.383887621051962e-11,2.470407056681358e-12,23.883431077664486,0.5713603565954053,6.046706503233484e-05,1.4465460899151025e-06 +98,1.055843601967849,0.028002934558406658,3.819968880383979e-11,1.01312673935017e-12,9.661724309179768,0.18794611543477818,5.811453366368549e-05,1.1304815271965252e-06 +100,3.5719681487007087,0.08015727943154177,1.292313290749145e-10,2.9000347496758716e-12,9.475093772173649,0.19776844106680225,5.699196529870695e-05,1.189562066769168e-06 +101,0.7865358064139175,0.020813163165064204,2.8456319708464723e-11,7.530058013122747e-13,8.179465144497192,0.16216324378120908,4.919885806789497e-05,9.753995247462595e-07 +102,8.809072885854842,0.2393702345252385,1.2012817124240945e-10,3.2642604841602627e-12,16.02982326544714,0.37955744592685314,5.919514180970691e-05,1.4016347195168852e-06 +103,1.8299929819663987,0.04599739638257021,1.2719574366325783e-10,3.1971013534532187e-12,6.989606640054441,0.16092271537541603,5.827258883039998e-05,1.3416181638613733e-06 +105,23.724809242245275,0.5939922264403502,1.5207123489298407e-10,3.807370186596638e-12,23.720532269957666,0.5749896814191607,6.0054644678035833e-05,1.4557346613548962e-06 +106,1.0262497757768767,0.021440329913887973,2.4178483879323242e-11,5.051349909410552e-13,10.397959880755714,0.20267375866008044,5.047032858526295e-05,9.837517467360245e-07 +107,4.590278693714299,0.1117359973252791,1.0814714119041358e-10,2.6325043608650085e-12,11.667638569217901,0.2643753063103985,5.6633181812172595e-05,1.2832429373006565e-06 +108,7.990482478046253,0.19269705632164372,1.089651613731434e-10,2.6277844793361754e-12,15.771128102659226,0.366919846746604,5.8239828950223374e-05,1.354966428137834e-06 +109,4.131587336079551,0.1208852243812922,9.734035521410857e-11,2.8480604969076796e-12,12.235660541542172,0.32410655667245036,5.939028567108885e-05,1.573170563476884e-06 +110,11.974643663834982,0.3317739998637638,1.6329664463622038e-10,4.524358509215099e-12,17.057255889049266,0.446340001553176,6.298925849127662e-05,1.6482502177199182e-06 +111,7.009399022632262,0.12250016256894548,1.6514170845412708e-10,2.886108504769779e-12,14.634997753120423,0.23208437848916258,7.103635269949606e-05,1.1265070240878113e-06 +112,1.5675308438137434,0.035918774925056,3.69310864977307e-11,8.462477079062705e-13,10.133011148334607,0.1943358724872508,4.918430231310059e-05,9.432807447630254e-07 +113,98.91350926923914,3.0242475086972513,1.8584124864464788e-10,5.682034106149612e-12,54.084718620611014,1.5053698681452876,7.413406712584054e-05,2.0634144671646934e-06 +114,6.057298213391624,0.1482306210033669,1.4271017687017042e-10,3.492319082821094e-12,12.935487457034288,0.31404147451751413,6.278715338673569e-05,1.524315979264109e-06 +116,16.422744622920362,0.4102434902938302,1.0526647580946718e-10,2.629577907869064e-12,20.0109130907653,0.4629800345852601,5.066278709113258e-05,1.1721533551841126e-06 +117,0.6695112908435135,0.01736010585505986,4.653514421954392e-11,1.206633914439214e-12,6.14756161842107,0.11891281846611759,5.125243102291554e-05,9.913802259277705e-07 +118,22.079192232097068,0.6808418345956829,1.4152316226829326e-10,4.36405863147719e-12,25.304727621366872,0.7302651351493207,6.406544375483272e-05,1.8488545161229025e-06 +119,4.7601834520199,0.1259235605765293,1.1215010406485682e-10,2.9667639000094645e-12,11.972699586221838,0.2617544608249628,5.8113907907626796e-05,1.2705216999095052e-06 +120,3.422863889724437,0.11573452516997011,8.06428038594897e-11,2.7267098294710313e-12,11.774280566161153,0.28911662203104166,5.7150808028126356e-05,1.4033340271271973e-06 +121,3.689511244090249,0.0968616653065597,8.692502559054049e-11,2.2820645279239904e-12,11.396872147827914,0.2588954832402421,5.531891720752726e-05,1.2566445966053282e-06 +122,1.2670749210447911,0.03982965087989824,4.5841891435586486e-11,1.4410091315263763e-12,7.8030896330404005,0.13068404760912983,4.693498811536491e-05,7.860545642626913e-07 +123,3.1522080632475094,0.07524309437571741,7.42661421932923e-11,1.7727301732149573e-12,10.834327219633673,0.2228147447735132,5.258839818606122e-05,1.0815134417060086e-06 +124,3.4305819520655274,0.0921098537011424,1.2411607424302686e-10,3.3324705837742834e-12,9.88298793294515,0.2413362082065652,5.944541743703268e-05,1.4516188562454977e-06 +125,5949.4327257980185,234.66073300260106,2.6148968104697916e-10,1.0313816973007272e-11,534.9555705313503,20.951453844398497,0.00011215204910023849,4.3924180057503616e-06 +126,2.594012458617355,0.06636115452494357,9.384957079920924e-11,2.4009005235177423e-12,9.93677737889465,0.23079333552983067,5.976895692811949e-05,1.3882042844069362e-06 +127,11.619385538911647,0.2946478126127506,1.5845203690942394e-10,4.018073582552771e-12,17.44818546782052,0.41954206365416935,6.443288851761254e-05,1.5492904443120207e-06 +128,12.627653106543557,0.3465837792850204,8.09407058965618e-11,2.2215320226916112e-12,21.78121975115624,0.473954868099975,5.514477499223004e-05,1.1999389775431558e-06 +130,6.522056333513535,0.13253922660853523,1.5365989596459787e-10,3.122629233857651e-12,13.974001570357308,0.2710756130666837,6.782796420463311e-05,1.315765343753706e-06 +131,0.8772212005111121,0.017185669733111416,4.517221846808402e-11,8.849704353384639e-13,6.776193056550139,0.11764312803737806,4.862581809855671e-05,8.442045993599757e-07 +132,4.964940242474994,0.10135861586313384,1.169741815764202e-10,2.38801285761267e-12,10.923244227033297,0.20825943320583024,5.301998965929642e-05,1.010863875742801e-06 +133,2.1736661909537704,0.05421587533898946,2.964200065691982e-11,7.393347787723806e-13,11.6117533270884,0.21253410243676177,4.288003512502208e-05,7.848487236198085e-07 +135,5.82793543903192,0.1341020488573843,7.947479094592246e-11,1.8287320458256233e-12,13.696503459261896,0.2820544628715573,5.0578627781649706e-05,1.041574423294632e-06 +136,9.487693118939124,0.17349428780831938,1.2938242632973145e-10,2.3659188413441286e-12,17.51356335344724,0.24012473152620475,6.467431668665232e-05,8.867357611702902e-07 +137,7.487417746036239,0.20707998222389698,1.021049334092942e-10,2.823922547471347e-12,15.411858731366754,0.39403762627726,5.6913114241242465e-05,1.4551073190168628e-06 +138,7.0655872708003615,0.1898314677074512,1.664655057251291e-10,4.472436623217138e-12,12.259354679631894,0.3067049295142036,5.9505293924959235e-05,1.4887053565142945e-06 +139,3.691169318085947,0.08905288277137473,8.696408999030795e-11,2.098089316380108e-12,10.54084273766798,0.23538072096017135,5.116386316514817e-05,1.1425070365469164e-06 +140,1.6831924230895634,0.041269875302718514,8.667544245259728e-11,2.1251787096693153e-12,6.910600868455261,0.1495001114121594,4.9590325657313885e-05,1.0728096372307066e-06 +142,13.949249074467955,0.3578115597366202,1.9022408042184432e-10,4.879429319230252e-12,17.16741529141435,0.41006091163541697,6.33960567216178e-05,1.5142783215804345e-06 +143,2.1671283981496146,0.04732116282857885,7.840520170112279e-11,1.7120468355609854e-12,9.113183502623906,0.19246046693340446,5.4815102671341836e-05,1.1576350077984749e-06 +144,5.4105000299301516,0.19618937690492036,7.378227908026197e-11,2.6754087938834016e-12,14.91089135001539,0.37161776723606543,5.506313534197736e-05,1.372314969807744e-06 +145,3.9971966928532474,0.07872972920699675,1.4461580234089641e-10,2.8483869652219158e-12,10.385832110727069,0.1872631990434701,6.246998675319897e-05,1.126373836866143e-06 +146,22.856835145440883,0.552272116346571,1.4650769740362053e-10,3.5399527358580772e-12,25.803449906206506,0.5843673777639502,6.532808808806594e-05,1.4794767238148679e-06 +147,5.131361271786244,0.13506011076278684,1.2089506727009085e-10,3.1820213606767095e-12,12.406285831948182,0.30671771826502353,6.0218478371067746e-05,1.4887674307649877e-06 +148,5.338262492495086,0.16021319985880775,1.2576966792107018e-10,3.774629099101546e-12,12.348509133006264,0.33997867188016556,5.9938037879633506e-05,1.6502117214258299e-06 +149,22.752822852487817,0.6156825797602532,1.4584099847336334e-10,3.946400969982219e-12,25.216548850639864,0.6275099297841371,6.384219645650527e-05,1.5887032144238148e-06 +150,4.127823933611996,0.10438225705690558,9.725169097747031e-11,2.4592499995381958e-12,11.938439713529357,0.2920335819702755,5.7947615392766537e-05,1.4174925782477018e-06 +152,3.733949564136969,0.10025672506987829,8.797199414149335e-11,2.362052266373118e-12,13.334072799398605,0.1948046954205631,6.47218341851421e-05,9.455563491497852e-07 +153,10.87219346009702,0.31580728149356524,1.4826267569309827e-10,4.306622461184724e-12,17.621182043483113,0.4839387982293475,6.507173236518693e-05,1.7870955468141604e-06 +155,3.9554164040649225,0.10033489247116076,9.3189761419726e-11,2.3638938954321695e-12,10.988064132884697,0.24396055968674965,5.33346169501019e-05,1.1841524443677723e-06 +157,11.520853706468461,0.2958145284028364,1.571083712311696e-10,4.033983932787248e-12,16.8598292206881,0.40447592375015995,6.226019883878947e-05,1.4936540049460966e-06 +158,1.2890594175182088,0.025551011290756754,1.757873415917831e-11,3.484357888196659e-13,12.043350209261444,0.20474117522843005,4.4473841769540464e-05,7.560708999242295e-07 +159,1.215240514447797,0.03500604067199795,2.8631112894357215e-11,8.247436540739918e-13,11.46823388876018,0.26899075795000116,5.566529774072441e-05,1.3056457320307332e-06 +161,3.66245638149296,0.08747374418969452,1.3250513018164003e-10,3.1647393590544625e-12,9.347294818808152,0.2034514957094254,5.622326427808125e-05,1.223745204658096e-06 +162,13.854112361084047,0.24681299702573267,1.8892671290561404e-10,3.3657564638667414e-12,19.06692418004731,0.3228269026529485,7.041058798232674e-05,1.1921394251986305e-06 +163,0.3743710239658055,0.009398835528604795,1.3544483847811472e-11,3.4004334699004863e-13,7.274242851625962,0.14598506382373724,4.375401507544453e-05,8.780890071474298e-07 +164,3.527142488638985,0.10080516906262824,1.2760956744440092e-10,3.647061059108334e-12,10.130109660058572,0.26309183832466376,6.093183574753649e-05,1.582477309453247e-06 +165,1.9347760205878368,0.05826660304944253,2.6384286746481896e-11,7.945740210966892e-13,11.100999543263187,0.18719044062011458,4.0993916846951975e-05,6.912593165524593e-07 +166,94.502962057401,2.7333689031592545,1.7755459855366895e-10,5.135523879185283e-12,51.22110569521225,1.4206328389768863,7.020890522203899e-05,1.9472651945576286e-06 +167,8.951364490733976,0.18946328798866355,1.220685830666376e-10,2.5836859991415784e-12,14.833513108526885,0.2986839003834352,5.4777391928172724e-05,1.102983828189271e-06 +168,3.949437584511699,0.09974746026989537,1.4288791094534722e-10,3.6087938890244666e-12,9.663141186290515,0.2259237187415257,5.812305605040253e-05,1.3589139095017143e-06 +169,14.399199890710063,0.4287184010513832,1.9636000004332757e-10,5.84637659647585e-12,18.012025104034773,0.5157328699265914,6.65150428224114e-05,1.9045051142199512e-06 +170,1.2058392520720425,0.023918152518625686,2.8409618866261143e-11,5.635125874959183e-13,9.312549224742646,0.16499372532742262,4.5201888190256975e-05,8.008578257528871e-07 +171,8.590658849408383,0.24147560895562267,1.1714968768211137e-10,3.2929711990538457e-12,18.857906496518872,0.4705972834245901,6.963872469522763e-05,1.7378278266877936e-06 +172,1.482503834770882,0.051664362414061096,7.634104951524628e-11,2.660439424654185e-12,7.470539704696282,0.16008169350415355,5.360843496444719e-05,1.148742847832154e-06 +173,4.812948390315452,0.15724260536426274,6.563354576633035e-11,2.1442967799860285e-12,14.437140282529581,0.32999214636541335,5.331366118010237e-05,1.2185993305550848e-06 +175,5.9813821289086135,0.1370646732609571,1.4092159156683935e-10,3.2292489406703793e-12,12.542318825549362,0.2659766917725072,6.087876472026969e-05,1.2910158531857383e-06 +176,7.731829061341249,0.23362292681077684,1.054379386593196e-10,3.1858852065997877e-12,15.663035738089455,0.3537170792607393,5.78406640469653e-05,1.306211074998785e-06 +177,1.4917604400849813,0.028229046763573445,2.034294141066023e-11,3.8495580721891805e-13,11.642034358986923,0.19101203598677932,4.299185732878309e-05,7.053717542832086e-07 +178,85.97128814958492,2.612092328343185,1.6152507028962857e-10,4.907666338609694e-12,51.75715484406759,1.4621540639265738,7.094366928980209e-05,2.004178449809758e-06 +179,3.617307854336876,0.09610825822824816,1.30871688164163e-10,3.4771300943513183e-12,9.536616143417293,0.23494232000073906,5.736201766244281e-05,1.4131601090854543e-06 +180,7.113082284025993,0.18525807382922965,9.700016981168194e-11,2.526340045408466e-12,14.887849320853821,0.3454640850170581,5.497804540633047e-05,1.275734308092459e-06 +181,11.922984883174088,0.31188114283837765,1.6259218053367043e-10,4.253082225490945e-12,17.3089416923462,0.42096005670615927,6.391868711276437e-05,1.5545268237555264e-06 +182,21.12862921345938,0.5246982681993735,1.35430245330085e-10,3.363209911471455e-12,23.425190681186454,0.5471672217436202,5.9306911281059555e-05,1.3852949296124627e-06 +183,3.2827002671664074,0.0833046829221397,1.1876581751149124e-10,3.0139056156728147e-12,9.454638287790242,0.22769885263228068,5.686892704384343e-05,1.3695912042488617e-06 +184,25.588237678935535,0.6590010729462601,1.6401543524416247e-10,4.224063773435578e-12,25.547079433049998,0.6444504832101191,6.467901996027499e-05,1.6315925965702378e-06 +185,1.2958529302382558,0.027733553862182347,6.672952230648675e-11,1.4281302745863205e-12,7.4293192357834075,0.14328328064319618,5.3312637751090463e-05,1.0281977923261303e-06 +186,4.36893771342108,0.09782933500365351,5.957863041728459e-11,1.3340858067732396e-12,14.120931696053482,0.27700406377171444,5.214596196047048e-05,1.022924243474143e-06 +187,2.517237729364589,0.05440792290206276,9.107191418103571e-11,1.968440893564645e-12,9.109365215963692,0.17185665352860285,5.479213591252531e-05,1.0337046428997312e-06 +188,1.0160955805943594,0.03389704262534654,7.062487915067674e-11,2.356052505985801e-12,8.547089044145986,0.21649371019347588,7.125737277986328e-05,1.8049154433834049e-06 +189,7.5882467834672624,0.19501317764064693,1.7877938378841553e-10,4.59451790697894e-12,12.897732347227624,0.31100304824394914,6.260389509427905e-05,1.5095678590702249e-06 +190,6.209448035202119,0.16500267231467733,3.9801307729687e-11,1.0576338025193577e-12,21.31242751969843,0.4077226680005298,5.395790656074683e-05,1.032255082267713e-06 +192,7.304990600082542,0.19470046948398234,1.7210585714557132e-10,4.587150486792865e-12,13.550668008223546,0.3366588327043391,6.577315881804018e-05,1.6340976590615626e-06 +193,2.4184283717473543,0.07007455627548315,8.749706012955311e-11,2.535248815145898e-12,9.830544468177333,0.2342517479174656,5.912997400270702e-05,1.4090063688015204e-06 +194,2.830484119699348,0.07152262528363372,3.8598940596365365e-11,9.753446576171983e-13,14.024790453058147,0.2586151146128142,5.179093031610185e-05,9.550172905922001e-07 +195,1.6293941099183733,0.03734825421950925,5.895034828017222e-11,1.3512339221643428e-12,8.53145235185071,0.19187682450668045,5.131603423410809e-05,1.154124443182386e-06 +196,0.7724738742813941,0.021453045470046176,3.977828913572195e-11,1.1047175496299382e-12,6.707988415833038,0.14149007884232853,4.813638299749212e-05,1.015329813245343e-06 +197,3.8709214984837534,0.10629974371909993,9.119905810116103e-11,2.504426015194071e-12,11.16969380065889,0.27319368233115565,5.421622341440777e-05,1.3260461728858648e-06 +199,16.78271234089075,0.41225535335983904,1.0757379635545425e-10,2.6424735482550352e-12,21.82205620862171,0.4929199351868104,5.524816301568056e-05,1.2479539358037255e-06 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev3/X_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev3/X_data.csv new file mode 100644 index 00000000..53023e58 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev3/X_data.csv @@ -0,0 +1,148 @@ +2,1,1,1,1,0,0,1,0,0,0 +0,0,1,2,0,2,2,1,1,0,2 +1,2,2,0,0,1,1,2,1,1,2 +0,2,0,0,2,2,1,2,0,0,0 +1,2,0,2,1,0,0,0,2,0,0 +0,2,2,1,0,0,2,2,1,2,0 +0,2,0,0,2,1,0,2,1,1,0 +0,2,0,1,1,0,1,2,1,0,2 +0,0,2,1,1,1,1,1,1,1,2 +0,0,1,2,0,2,0,0,0,1,1 +1,1,2,0,1,0,0,2,1,0,0 +1,0,1,0,2,2,1,2,1,0,0 +2,2,1,2,2,1,0,0,1,2,0 +2,2,0,2,2,2,1,0,0,2,2 +2,1,2,2,2,0,2,1,1,0,0 +0,0,1,0,1,0,1,0,1,0,2 +1,0,0,0,2,1,1,0,0,2,0 +0,1,2,1,0,0,2,2,0,1,2 +1,0,2,1,2,0,2,0,1,0,0 +2,0,1,1,1,1,1,0,2,2,0 +1,2,0,2,0,1,0,0,1,1,2 +2,2,1,0,1,0,2,1,2,0,0 +1,0,1,2,0,1,0,0,1,1,2 +2,1,0,1,2,0,2,1,2,0,1 +1,0,1,2,2,0,1,0,0,0,0 +2,0,2,2,1,2,1,0,1,1,2 +2,0,1,0,2,0,2,0,0,2,1 +0,0,0,0,0,1,2,1,0,2,0 +0,1,1,1,1,1,1,2,0,0,0 +2,0,1,2,0,1,0,1,1,2,2 +2,0,0,0,1,1,0,1,0,0,2 +0,2,1,1,2,0,1,0,2,2,1 +2,0,0,1,0,0,1,2,0,2,1 +2,1,2,0,1,0,2,1,1,0,0 +0,1,0,0,2,0,0,2,0,2,0 +1,0,1,2,0,0,0,0,0,1,2 +0,2,0,0,0,0,0,1,2,0,0 +0,0,0,2,2,1,2,0,1,2,2 +2,2,2,0,1,1,0,1,1,1,2 +1,1,1,2,0,0,0,1,0,1,1 +1,0,1,2,2,0,1,0,0,1,2 +1,0,0,1,1,0,2,1,0,1,1 +2,0,2,0,1,0,0,1,2,0,1 +2,2,1,0,2,2,1,0,0,1,1 +0,2,1,2,2,0,2,0,1,1,2 +0,0,2,2,2,1,1,2,0,0,1 +1,2,0,0,2,2,1,0,1,1,1 +1,2,1,2,2,0,2,1,2,0,1 +1,1,1,1,0,0,0,0,1,1,2 +0,0,1,0,1,1,2,2,1,1,0 +0,0,0,1,0,0,0,0,2,1,2 +0,1,2,0,1,1,2,0,0,2,1 +1,0,2,1,0,2,0,2,0,0,0 +2,2,2,0,0,1,1,0,0,2,2 +0,1,0,1,0,0,1,1,0,1,0 +1,0,0,0,2,2,1,2,1,1,2 +2,0,2,2,1,1,0,2,0,1,2 +2,1,2,0,1,2,1,2,1,1,1 +1,1,1,2,0,1,2,1,0,1,0 +0,1,1,1,0,0,2,2,2,1,2 +1,0,2,2,2,0,0,2,1,2,2 +0,1,2,1,0,0,2,0,1,2,2 +0,0,2,1,1,0,2,2,0,2,1 +1,0,1,2,2,0,2,1,0,2,1 +2,2,2,0,0,2,0,2,2,1,2 +0,0,0,0,2,2,0,2,0,1,1 +1,1,1,0,0,1,1,1,1,2,0 +1,2,0,0,1,0,2,0,0,1,2 +2,2,2,1,0,2,0,0,2,2,1 +2,1,1,1,1,1,1,1,0,1,0 +0,2,2,2,1,1,0,1,2,1,1 +0,0,1,2,0,1,2,0,0,2,1 +1,2,2,1,0,0,0,1,2,1,1 +0,2,0,0,1,2,1,2,0,2,0 +2,0,2,1,0,2,2,0,0,0,1 +1,1,0,1,0,0,0,0,0,0,2 +0,2,1,0,0,2,0,1,1,2,2 +1,1,2,1,2,2,0,0,1,1,1 +1,0,0,2,2,1,2,0,2,0,1 +2,0,2,2,1,2,1,2,0,1,0 +2,0,1,0,2,0,1,2,1,1,0 +1,2,0,1,0,1,2,2,1,0,2 +2,0,2,2,1,1,0,2,0,1,0 +2,2,0,0,0,1,2,1,2,0,1 +1,0,2,1,0,2,1,1,0,1,0 +0,2,0,0,0,0,0,1,0,2,2 +0,2,1,2,1,0,0,0,2,2,2 +2,1,2,1,0,0,2,2,0,1,0 +0,1,0,0,0,2,2,2,0,2,1 +2,2,2,0,1,1,1,0,0,0,1 +1,1,0,2,0,0,0,1,1,2,0 +0,2,1,2,0,0,1,0,2,2,0 +2,1,2,2,0,2,2,0,2,1,0 +1,0,0,2,2,2,2,1,2,2,1 +2,0,0,2,0,0,2,1,1,2,2 +1,0,0,1,2,1,2,2,0,1,0 +0,0,0,2,2,0,0,2,1,0,1 +1,2,2,0,1,0,2,0,0,2,1 +1,0,0,2,2,0,1,2,1,1,1 +0,0,1,0,1,1,2,1,0,2,1 +0,2,1,1,1,2,2,0,0,1,1 +1,0,0,1,2,1,2,2,0,2,1 +0,1,2,1,1,1,2,1,1,0,0 +2,0,0,1,2,0,2,1,0,1,2 +0,1,2,1,0,0,0,1,0,0,1 +2,0,2,1,0,2,0,0,2,0,1 +1,0,0,1,0,1,0,2,1,0,2 +2,1,0,0,2,2,1,2,2,2,2 +2,1,0,0,2,2,1,1,0,1,0 +0,0,1,2,1,0,2,1,2,1,0 +2,2,2,0,2,2,0,2,0,1,0 +1,2,2,1,0,0,0,0,1,0,2 +0,0,1,2,1,2,1,2,0,1,0 +1,0,1,0,1,1,1,2,1,1,0 +2,0,0,1,1,0,0,1,0,0,0 +1,0,0,2,2,2,0,0,2,1,1 +0,1,2,2,2,0,2,0,1,0,0 +2,1,2,2,1,1,2,0,0,0,0 +1,0,2,0,2,1,2,0,1,1,2 +1,0,1,1,0,1,0,0,0,2,2 +0,1,1,2,2,0,2,1,0,2,2 +0,0,1,2,1,2,2,0,0,0,1 +1,1,0,0,1,2,2,1,0,0,0 +1,0,0,2,2,1,2,0,1,1,1 +2,1,1,2,2,1,0,1,1,1,2 +1,1,1,0,0,0,1,0,0,2,2 +0,2,2,0,2,2,0,1,2,0,1 +0,0,0,2,1,2,0,0,1,0,2 +2,1,1,2,0,0,1,2,0,1,2 +2,0,2,2,0,1,0,1,0,2,2 +2,2,2,1,0,1,2,2,1,0,0 +0,2,2,2,0,2,1,0,1,1,1 +1,2,2,0,0,0,0,1,0,2,2 +0,1,1,2,1,1,1,1,0,0,1 +1,1,1,1,1,2,2,2,0,0,1 +2,1,1,1,0,2,0,0,1,0,0 +2,1,2,1,2,0,2,0,1,2,2 +0,2,0,0,2,0,1,0,2,0,1 +0,2,2,0,0,1,1,0,2,0,1 +0,0,0,0,1,2,0,1,0,2,0 +2,1,0,1,2,1,0,0,2,0,2 +2,0,2,2,0,1,2,1,2,1,2 +0,1,1,1,0,0,0,2,1,2,0 +0,2,0,2,1,0,0,2,2,0,1 +2,2,0,1,0,0,1,0,0,0,1 +1,0,0,2,0,1,1,1,0,1,2 +1,0,0,1,2,2,0,0,1,1,2 +2,2,2,2,0,1,1,0,2,2,1 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev3/Y_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev3/Y_data.csv new file mode 100644 index 00000000..0cdc4075 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev3/Y_data.csv @@ -0,0 +1,149 @@ +sim_id,qoi,qoi_err,qoi_kla,qoi_kla_err,qoi_sum,qoi_sum_err,qoi_sum_kla,qoi_sum_kla_err +1,17.4223991446614,1.103218144362263,1.2304660921109788e-08,7.79153609998264e-10,22.202487028781846,1.3734243616096782,0.0005900413807461475,3.64993888127961e-05 +2,25.848218082263752,1.758737457653605,1.243246038052265e-08,8.459164841627111e-10,24.899955610551423,1.6140517157568066,0.0005460869651392669,3.5398159612058104e-05 +4,80.1616239973741,4.523742158697846,1.2813066392389407e-08,7.230767757817033e-10,55.05028379094841,2.920331409094589,0.0006959897551291124,3.6921167382715545e-05 +5,9.61902893286515,0.5007067376956474,9.375367176798238e-09,4.880232242315582e-10,15.715910274133016,0.7715804613106846,0.0004906457799837457,2.4088499530510554e-05 +6,11.571661508860648,0.7991397368378633,1.1278536382847752e-08,7.788964955467886e-10,17.501503699610872,1.1736497233403653,0.0005463914261980435,3.6640974238524396e-05 +7,25.967936704290313,1.503720500816584,1.2490042805129938e-08,7.232585952447871e-10,26.84011621778851,1.4792231849695188,0.0005886371034468552,3.2441202708906616e-05 +8,15.784502687549685,0.9779104231278233,1.114788803208151e-08,6.906543790596133e-10,20.780987323628676,1.2335849450948546,0.0005522643695861949,3.278309165124267e-05 +9,28.322807480233706,1.919328747203895,1.3622686810957992e-08,9.231575799353377e-10,27.860691750152963,1.8123255737316293,0.0006110195854417977,3.9746551545727074e-05 +11,55.692998354220606,2.9153555525009005,8.901991335135312e-09,4.659916081755522e-10,45.0088144548741,2.0685590980370216,0.0005690374603391518,2.6152379927460287e-05 +12,9.603805526605576,0.3573018112020921,9.360528610193792e-09,3.4825089043773607e-10,18.84009630457271,0.6501755546755569,0.0005881818613166108,2.0298275643039607e-05 +16,18.70165787199468,1.1963728336713932,1.3208144150682702e-08,8.449446008075813e-10,22.671468075391672,1.3880593986855305,0.0006025047701252881,3.688832175067795e-05 +17,30.651097165629224,1.5375901574352677,1.4742546175587104e-08,7.395491839207818e-10,30.360114566970537,1.4760327479049513,0.0006658350332085335,3.237123205020381e-05 +18,39.40018956094681,3.012408772841044,1.1774396553710803e-08,9.002315945318368e-10,33.38332430641881,2.4711869890873412,0.0005770982469589446,4.2719462753919e-05 +19,39.4566135193403,2.5770928813379617,1.1791260144563108e-08,7.701414254840408e-10,33.71628155603178,2.1621174100800977,0.0005828541304072504,3.737657311932029e-05 +20,39.04571607735852,2.5724327991166125,1.1668465302870307e-08,7.687486842599704e-10,32.184739352089025,2.0404511989439422,0.0005563782830144884,3.527332386395722e-05 +21,15.587135224722369,0.47180599504499976,1.519229269545425e-08,4.5985453188504973e-10,20.878607595825798,0.5734352363150347,0.0006518235390426024,1.7902467079333658e-05 +22,11.054861782654873,0.7290205115369429,1.0774827719241958e-08,7.105534714082854e-10,15.81887380001371,0.9962866746216571,0.0004938602481223174,3.110375558651865e-05 +23,23.389104632575368,1.4862762522111954,1.1249677473122185e-08,7.148682575069442e-10,26.812328521193745,1.618028876258382,0.0005880276792241016,3.5485383683544276e-05 +25,18.066554422384844,1.29590759223641,1.2759599070873119e-08,9.152415520554146e-10,21.672135720925667,1.4803644883513976,0.0005759470512690512,3.934137238934698e-05 +26,39.179760011873995,2.8449291697804324,1.1708522999257835e-08,8.501817929854247e-10,33.540903333647634,2.3177390263028115,0.0005798223154744414,4.006680426964589e-05 +27,25.395711311622772,1.4762652309464297,1.2214813866216542e-08,7.100531578702042e-10,26.802900671826272,1.4786220850720224,0.0005878209128474726,3.24280194313852e-05 +28,28.31256805717301,2.118077986078905,1.3617761948673073e-08,1.0187518753121333e-09,28.702543208501112,2.0748127384581267,0.0006294824359392475,4.5503221342963606e-05 +29,32.02527421704423,0.8389375979737489,1.540349697589943e-08,4.035116972231709e-10,32.13784673868751,0.7747395952430323,0.0007048229073989393,1.6991001868800735e-05 +32,43.84494046096217,1.4841270930584078,1.3102670756732871e-08,4.4351819062920955e-10,37.6358791908513,1.2532864720139834,0.0006506122522181449,2.1665590169865418e-05 +33,11.412671865802144,0.7502105515230207,1.1123574006433765e-08,7.312067400517768e-10,17.46738082507193,1.098663687505657,0.0005453261172302642,3.429993362195313e-05 +34,81.30651755082708,5.063566885242135,1.2996066709270487e-08,8.093625826038139e-10,55.843110222240696,3.3159416629821163,0.0007060133033837202,4.192278900642819e-05 +36,16.128946150098578,0.8772767815416485,1.1391153214878637e-08,6.195813500397517e-10,23.083924096280963,1.2224702690341067,0.0006134659864109275,3.2487714234507606e-05 +38,7.477975371015989,0.41852683206080754,9.61831942263456e-09,5.383174666911551e-10,13.427405119149359,0.7052709578039669,0.0004815591896016764,2.5293771050768162e-05 +39,17.511533207575518,1.0521148145965156,8.42268661101196e-09,5.060455447907809e-10,21.789918296615838,1.274664185779694,0.00047787997988887464,2.7954969228134898e-05 +40,47.22275364184555,2.488982628388502,1.4112100203359064e-08,7.43810336064634e-10,42.32408089085892,2.1599025815885793,0.0007316572957370524,3.733828233566886e-05 +42,11.83259238385368,0.6662539293338849,1.1532857390227777e-08,6.493768485739137e-10,17.169418891719758,0.9041939627856487,0.0005360238396979545,2.822865018441671e-05 +44,42.10922356557755,2.667160577689319,1.2583967189844179e-08,7.970572325423949e-10,35.791444715542255,2.181122771254939,0.0006187274738138897,3.7705116210369004e-05 +46,15.204352001137439,0.8735984833125554,1.0738153558852884e-08,6.169835229998239e-10,20.43814090739364,1.1150789954484517,0.0005431530671741273,2.9633741114886324e-05 +47,27.586309933640283,1.7087761435699216,1.3268446666463734e-08,8.218861159909827e-10,27.468726924748463,1.6455626423664615,0.0006024233098261674,3.6089233267215764e-05 +48,7.065810229372046,0.4179306556921122,9.08818504945299e-09,5.375506861166716e-10,15.236139729652184,0.8635084467142478,0.0005464274938117385,3.096878637211769e-05 +49,10.573854337118664,0.5887384988416378,1.0306004819487837e-08,5.738249850085732e-10,17.118088583047015,0.9140851871881895,0.0005344213236593416,2.8537451088920297e-05 +51,5.697203155291737,0.25459179224800943,9.348588552819786e-09,4.1776181220445485e-10,11.388614804755264,0.48619547827485293,0.0004613314624224476,1.9694868503416667e-05 +52,18.92625551383699,1.010923839269738,9.103139159669744e-09,4.862335490489403e-10,24.051566568533314,1.2370124372387605,0.0005274807442479538,2.712922001065592e-05 +54,97.06252707677889,5.4061474529087015,1.5514513574333304e-08,8.641207948012028e-10,61.80031603859736,3.265472960815328,0.0007813290661669102,4.1284723163448794e-05 +59,26.013629829738353,1.51791361016482,1.2512019882757812e-08,7.300851666990122e-10,28.90959203898809,1.6301677317041374,0.0006340232704926133,3.5751603665409574e-05 +60,28.172979269861333,1.4454701898323836,1.355062252895581e-08,6.952413776213711e-10,29.948725324782487,1.4436820277294755,0.000656812755999082,3.166174056278393e-05 +61,25.59417665035086,1.4770648611691515,1.2310271547184028e-08,7.104377602061549e-10,27.29425401445124,1.4872527186896805,0.0005985969007297081,3.261729987337682e-05 +62,15.963977495116453,0.8786767783864134,1.1274643058764223e-08,6.20570095601943e-10,21.602385313807876,1.1427653761639787,0.0005740934018723505,3.0369519514336996e-05 +64,37.268599768517944,1.9896077728061212,1.1137389792241161e-08,5.945765989881127e-10,34.26451214104265,1.775474950483865,0.000592331357590785,3.06926736169353e-05 +66,37.049874134303195,1.8736630482579046,1.107202567255556e-08,5.599275532443155e-10,32.842462182337734,1.5929214494960102,0.0005677483517601114,2.753686743745574e-05 +68,19.50275019782791,0.8984683949744913,9.380421055488508e-09,4.3214478801294095e-10,23.782748456142794,1.0562181072021217,0.0005215852240950235,2.31641754591214e-05 +69,36.22420526328668,1.9131912604444834,1.082528173542894e-08,5.717402012698515e-10,35.46690511848559,1.7522464517693712,0.000613117149647031,3.0291122002297613e-05 +70,75.5996077191277,4.216857324024473,1.208387192943389e-08,6.740241832672172e-10,52.704511145085505,2.7629037587204515,0.0006663326213149604,3.493084109861481e-05 +71,28.827577810310395,1.7986445962035849,1.3865470874119052e-08,8.651109859335039e-10,30.308244798476267,1.826524687496507,0.0006646974631847234,4.0057955658462785e-05 +72,22.51055283232561,1.2296268640318675,1.0827112053080002e-08,5.914251835357957e-10,26.603515628343857,1.365578957233975,0.0005834481502343554,2.9948843142680618e-05 +73,6.407375192409076,0.29450904915826653,8.241292355698413e-09,3.7880334811476275e-10,12.635171469203133,0.5462445067406857,0.0004531465967694843,1.9590461422458104e-05 +74,24.99836634178852,1.4779651457040004,1.2023699122957449e-08,7.108707818421172e-10,26.26440416817624,1.4641135746064566,0.0005760110154704523,3.210982977085751e-05 +75,10.759856369432361,0.805772433815022,1.0487295315710269e-08,7.853611777461428e-10,19.50162803135016,1.4096790161341506,0.0006088346770723519,4.400973432494938e-05 +77,26.228510218372403,1.7218707752475615,1.2615373299494196e-08,8.281843849454217e-10,27.03178417123828,1.693763021521184,0.0005928406198559041,3.7146327937762245e-05 +78,13.030932426192962,0.7083988889716037,1.270084183125939e-08,6.90454216782153e-10,17.527045565691168,0.8907802770657285,0.0005471888297620151,2.7809879055532553e-05 +79,39.44839935897121,2.328185874018291,1.1788803525481374e-08,6.957576552053686e-10,38.76478940650263,2.1384793381504186,0.000670127747371916,3.6967938266052784e-05 +80,44.02426040757055,2.462827933383349,1.3156259038315891e-08,7.359942440468493e-10,37.126228890739,1.971803060236969,0.000641801919197196,3.408660201022106e-05 +81,198.43690865754266,9.686910952479781,1.2695452537431015e-08,6.197421591754535e-10,92.9540345217289,4.405411871601801,0.0007435002366368239,3.523703716435191e-05 +82,45.37190480778461,2.7945145699534684,1.3558990399400327e-08,8.351158362318163e-10,36.069192426639745,2.1397662481768913,0.0006235289026122496,3.699018499751769e-05 +83,47.723813942430816,2.8448625704576886,1.4261837620694226e-08,8.50161893640803e-10,40.07776355317413,2.3080637735540326,0.0006928251596560375,3.989954804457253e-05 +86,41.659747392343,2.0917935065059265,1.244964562964285e-08,6.251139173055405e-10,39.50236666689413,1.8927262316015165,0.0006828782722671803,3.271959955741148e-05 +87,28.65718382828829,1.5602253293939399,1.3783515034911297e-08,7.504362401556795e-10,30.386855376353864,1.5982625431056046,0.0006664214945655244,3.5051883437513404e-05 +88,20.784015365445935,1.0712810864710438,9.996683204881509e-09,5.152641323888147e-10,22.878398107560802,1.1425519302320541,0.000501751697280602,2.505758346934725e-05 +89,40.89338236802751,2.3282074103016783,1.2220623854524704e-08,6.957640911322412e-10,35.553324945817934,1.9491101382323428,0.000614611092238415,3.369430883827533e-05 +90,30.018760300922867,1.4223658170844806,8.970841143068865e-09,4.250614503892069e-10,33.98777088282419,1.5169699851257445,0.0005875473726089287,2.6223894828526502e-05 +91,4.629434601394543,0.18841739617646808,4.512165045949705e-09,1.83644540268528e-10,14.640849177928732,0.5244938122423173,0.00045708269417197537,1.637453141294941e-05 +92,52.3220196804222,3.683216462762814,1.5635970423448902e-08,1.1006964950259486e-09,40.04362043179556,2.683211669020913,0.0006922349242919437,4.638473760702025e-05 +94,18.376349796060552,1.0135002284818593,1.2978393682712091e-08,7.157898662538543e-10,22.98994264485136,1.217400094292704,0.0006109683810424756,3.23529717399075e-05 +95,40.28701050764018,2.4645717264886593,1.2039415399575945e-08,7.365153786136583e-10,38.45129278772119,2.2519811546361703,0.0006647083352432219,3.893004723043622e-05 +96,69.0371782911743,4.286797419681472,1.1034930429748368e-08,6.852034289857012e-10,46.61911158021491,2.822860151007305,0.0005893961252553337,3.56888576110811e-05 +97,84.73065095668295,4.176326276358099,1.3543381509011284e-08,6.675456806739549e-10,58.15591259089866,2.8238988218043803,0.0007352536004565491,3.570198942044653e-05 +98,15.743433812556221,0.91617856159171,1.111888292314058e-08,6.470559272085223e-10,21.540276532482398,1.2340403830837339,0.0005724428322227808,3.27951951268811e-05 +99,37.33732676232825,1.0721501508540536,1.1157928200556517e-08,3.2040254192797483e-10,36.868275839276386,0.9854596186052323,0.0006373426753606414,1.7035661567678652e-05 +100,14.591307061511072,0.8498313661458435,1.0305187505508372e-08,6.001978807845276e-10,20.205347925291772,1.094647292908167,0.0005369664899288984,2.9090759375012406e-05 +101,15.173890842325372,0.7534095591847125,1.0716640370810324e-08,5.32099471494285e-10,22.257199504647705,1.0774346138506392,0.0005914953970526747,2.8633324447884827e-05 +103,7.676269374985747,0.4182690017488218,9.873368968791824e-09,5.379858340995252e-10,14.888687149879463,0.7485696592998057,0.000533966467345555,2.6846631440007046e-05 +104,26.22955875353676,1.3219880235424553,1.2615877387141639e-08,6.358490041328843e-10,29.127499140392374,1.379055512855738,0.0006388022475402806,3.024440089583307e-05 +105,81.47835215359162,4.8891376240317275,1.3023532716069212e-08,7.814817324718726e-10,53.42571209968326,3.0104146696808414,0.0006754506183824746,3.806007201981033e-05 +107,22.346625362594782,1.3186595236642844,1.0748266421099103e-08,6.342480642642158e-10,27.001928692177383,1.532762047578573,0.0005921858465550693,3.3615376185174465e-05 +108,33.750647512557606,2.023904309093415,1.0086081112443683e-08,6.048258190526657e-10,30.420189445603405,1.7306674317295478,0.0005258744707411066,2.9918085201839006e-05 +109,30.024066108575163,1.2209407310691516,1.4440957157021315e-08,5.872473343507646e-10,29.916434455012883,1.1508986192791435,0.0006561045771054237,2.5240636648356682e-05 +110,51.09981345179079,2.409817247498714,1.5270725067705818e-08,7.201524656188113e-10,40.32668242834448,1.83797873045895,0.0006971282255993876,3.1773177804323133e-05 +111,26.45145811234344,1.6993717979116187,1.2722606407225242e-08,8.173628248598956e-10,26.170382280501986,1.6157130280628271,0.0005739490005370851,3.54345942551367e-05 +112,20.39599560824857,1.0875650490794908,9.810053695533379e-09,5.23096382926284e-10,27.40642777340673,1.3852657932722454,0.0006010570140031169,3.0380600061741517e-05 +114,27.634622327298075,1.9180950883119448,1.3291683892034008e-08,9.22564212629792e-10,26.787628328817096,1.7607296668865338,0.0005874859704994076,3.861498914501372e-05 +117,7.794139513227802,0.44444151244730573,1.0024976598297766e-08,5.71649475100444e-10,12.406393527364635,0.6616925237910299,0.00044494174001348486,2.3730878940774233e-05 +119,33.940478138599275,1.256508675702632,1.6324671058969573e-08,6.043547981211049e-10,35.55216020670031,1.272284864970151,0.000779703054768476,2.790278818461128e-05 +120,25.96252740330887,1.9003878616262815,1.2487440808979846e-08,9.140474102354727e-10,26.38912993885366,1.8399799356452666,0.000578746408482261,4.0353046193700244e-05 +122,14.104426072362447,0.7473067192501723,9.961325241155172e-09,5.277893086297507e-10,20.22233638706039,1.007708156525112,0.000537417966177608,2.678031151370024e-05 +123,24.2764356852001,1.4874815789040423,1.1676465352407096e-08,7.154479901267143e-10,26.785589086407036,1.567602787134518,0.0005874412482705461,3.4379476781192296e-05 +124,22.049535089909476,0.8323488127914631,1.5572600029175833e-08,5.878507230881493e-10,25.261025977428467,0.8989768905075458,0.0006713234713802949,2.3890727453644967e-05 +126,19.266372137239077,1.4183076501018073,1.3606976851914022e-08,1.001687252086549e-09,23.869996406655375,1.6580893054848083,0.0006343562225450797,4.406449211598843e-05 +127,43.92592825518536,2.012858950006236,1.3126873660080967e-08,6.015250259207889e-10,35.381106372747915,1.5449328431727423,0.0006116339558706009,2.670728768255784e-05 +128,67.5593479336806,3.6926091887607924,1.07987136702956e-08,5.902281556191735e-10,52.60958728532276,2.8174383793095177,0.0006651325216705764,3.562031163100208e-05 +129,20.676771253674573,0.4890589076347655,9.945101182706132e-09,2.3522726353453843e-10,27.032124591846284,0.5758396926845158,0.0005928480857028855,1.2628880068965264e-05 +130,24.573964758351185,1.2227966314445724,1.1819570706052585e-08,5.88139984190804e-10,27.097807436972836,1.243763641224163,0.0005942885846124007,2.7277281959239085e-05 +131,9.024862558560534,0.42890426539446924,8.796251138091532e-09,4.180395666003545e-10,17.19755200706619,0.7818988435892256,0.0005369021502115183,2.4410635315913828e-05 +132,23.43004962237223,1.4035659823572508,1.1269371169678377e-08,6.75086321678761e-10,26.41099139118363,1.4913546578500785,0.0005792258572950673,3.2707260679073295e-05 +133,32.66863446109656,1.7086881273787575,9.762731007698199e-09,5.106262578410335e-10,35.158820532128246,1.68925349372683,0.0006077912847934002,2.920216138524202e-05 +134,25.009033899831802,1.3678437751569843,1.2028829962092981e-08,6.579046696474494e-10,28.15008610160728,1.4670696333597866,0.0006173663621894417,3.217465976326856e-05 +135,33.01469834674273,1.2722627196565928,9.866149123660946e-09,3.802044042557431e-10,32.06355463008296,1.1796135386246382,0.00055428335674268,2.0392004548195768e-05 +136,39.1416017851382,2.34528194088878,1.1697119797401563e-08,7.008666628373562e-10,36.30857472467887,2.0729998868495607,0.0006276671113929088,3.583599358452092e-05 +137,33.578500050844994,1.3600408537390778,1.0034636230162306e-08,4.064361184914688e-10,33.02350580298785,1.2639923357588543,0.000570878052665749,2.185066260158119e-05 +139,26.674642792448857,1.4095826243692933,1.282995364037375e-08,6.779802025335432e-10,26.9201593537471,1.356763248186954,0.0005903925433635599,2.975550383314517e-05 +140,10.26657477807598,0.5180258033894085,1.000650900628064e-08,5.049035320106363e-10,16.521001460453373,0.7838420040463048,0.0005157804509259369,2.447129995535988e-05 +143,17.184517385330626,0.8926032126076361,1.2136655962413913e-08,6.304057227473803e-10,24.908100354813246,1.2290232556631064,0.0006619443163153392,3.2661862892661646e-05 +145,18.48807964123526,1.112028444532156,1.3057303402839562e-08,7.853759327420315e-10,21.764479032165994,1.261409953424269,0.0005784011160003047,3.352255405315254e-05 +146,95.76224339688635,3.043962119755532,1.5306676456748662e-08,4.865481599109205e-10,62.46156467277945,1.8253397732567291,0.0007896891201131923,2.307740715433758e-05 +147,22.400115807551543,1.397065616891737,1.0773994152536819e-08,6.719597754056025e-10,23.974759953450274,1.4405617387615564,0.0005257962730858385,3.1593308748931865e-05 +148,27.229660397783622,1.896831026707208,1.3096905588424786e-08,9.123366399384563e-10,26.915094443952793,1.8064529929562463,0.0005902814616647333,3.961775855296772e-05 +150,24.361573248682447,1.3426690050594128,1.1717416246841271e-08,6.45796207552574e-10,24.62112656961705,1.3124347961957423,0.0005399719301691506,2.8783327526429794e-05 +151,16.379722375323254,1.08057826916865,1.1568265066767817e-08,7.631640852450916e-10,20.365113827858128,1.3036104050002932,0.000541212338689271,3.4644050703255e-05 +152,19.74123349676713,0.9578333797790023,9.495126546905183e-09,4.6069811966617474e-10,22.151452908240998,1.0168262765552327,0.0004858088842267387,2.2300263594987505e-05 +153,55.91405663349491,1.3505471370712436,1.6709418732616453e-08,4.0359900515501576e-10,43.35282816679306,0.9613265855036333,0.0007494412693027313,1.661847327889331e-05 +154,8.51572569157504,0.4454053125221563,1.0953094228809082e-08,5.728890918708083e-10,14.017344961771693,0.6942257514307398,0.000502716733547715,2.4897646669591447e-05 +155,22.037753485830223,1.139883298339714,1.0599705411658844e-08,5.482603829759566e-10,28.494450286705295,1.441222485564456,0.0006249186996054253,3.160779985081005e-05 +156,15.389387676110095,0.8584591259742521,1.0868836145296684e-08,6.062912816299372e-10,20.217990038207958,1.1027078753325497,0.0005373024599415401,2.930497309047065e-05 +159,17.837521632287295,1.0816467479612968,8.579480421990687e-09,5.202498020154537e-10,21.798328964984524,1.242121429989145,0.00047806443898042595,2.7241266315743325e-05 +160,42.61964026196392,2.460799020365709,1.2736500682903533e-08,7.353879153069126e-10,37.96519751890748,2.102618905586067,0.0006563051852309976,3.634801819781425e-05 +161,20.135445366187966,1.545360129183061,1.422076410311536e-08,1.0914187122165808e-09,25.81295043938796,1.931090362370255,0.0006859911197202088,5.1319621252667814e-05 +162,44.30398897230228,3.573587825443867,1.3239853434313825e-08,1.0679349679574998e-09,36.31570930262649,2.811867839712164,0.0006277904496044067,4.860881996302907e-05 +163,14.60534672578164,0.7664375445895067,1.0315102933028627e-08,5.41300546478836e-10,21.223735032340787,1.0540977410810628,0.0005640305951475574,2.8013136016807627e-05 +164,18.43948511309074,1.3185950665074533,1.3022983261969683e-08,9.312646950348637e-10,23.33404810454675,1.6051773448708782,0.0006201131414415241,4.265833178361745e-05 +165,33.36844468019669,1.8954844745316817,9.971863070859538e-09,5.664486857005844e-10,35.65130517797421,1.8692470923656594,0.0006163048774313049,3.231371458627483e-05 +166,316.45786170124467,15.392842462913949,2.0246111424052103e-08,9.847921045843645e-10,134.69655013792598,6.204738263132205,0.001077381067072473,4.962909238576368e-05 +168,20.54902774191851,1.804412753303364,1.4512858829380834e-08,1.2743759893421214e-09,26.207879410917773,2.199549084957067,0.0006964865401498041,5.845403620993567e-05 +170,24.287608971745325,0.4492428393554987,1.1681839768241514e-08,2.1607655461210578e-10,28.633167652011117,0.49640948613969454,0.0006279609496630093,1.0886876929808158e-05 +172,9.90466440382079,0.6165543288405986,9.653766466712773e-09,6.00936211667295e-10,14.658625954951058,0.8595267443169576,0.00045763767954449803,2.683415389576757e-05 +173,42.89572732606993,2.8142681308083017,1.2819006848110784e-08,8.410190172792861e-10,37.1915138502694,2.303811817059899,0.0006429304990278551,3.982604438130074e-05 +175,31.59862362536986,1.2899603130667865,1.519828726318692e-08,6.204443468341124e-10,30.620793205759664,1.1885505490961628,0.0006715520481218182,2.6066390579056145e-05 +176,37.143879554603245,2.8603490869466373,1.110011835711229e-08,8.547899085525368e-10,32.05231107175396,2.3704673156611764,0.0005540889924774625,4.0978319588097685e-05 +177,30.885006978778538,1.735322993015187,9.229709825302192e-09,5.185858526666426e-10,33.699518601651405,1.8160494680903987,0.0005825643021358564,3.1394086174585044e-05 +179,17.482227820286308,1.1706795186092331,1.2346915525976756e-08,8.267985792684066e-10,21.041701103271087,1.3331752938997177,0.00055919296343388,3.542975160200918e-05 +180,32.62935213314793,1.5515896057423153,9.750991800515365e-09,4.636787595910674e-10,31.907606509373494,1.4201801882023548,0.0005515874773104998,2.4550685339145146e-05 +182,65.73963306811494,4.00391064554442,1.050784950082278e-08,6.399866947010533e-10,45.30754938866478,2.6910678760166764,0.0005728143069926357,3.40226342247566e-05 +183,18.139528103448566,1.1330022545791107,1.2811137047613765e-08,8.001887963066067e-10,22.875223278529077,1.3537097642492009,0.0006079196590693961,3.597546429781576e-05 +184,91.84141127200945,5.578158070160092,1.467996855706564e-08,8.91615056238241e-10,58.81030591187199,3.418437904199642,0.0007435269708396734,4.3218628784585026e-05 +185,10.336028263628643,0.5771903145098206,1.0074203323024476e-08,5.625693386417865e-10,18.718614776533002,1.009419332420171,0.0005843892501893447,3.1513753225969784e-05 +187,15.047884808029401,0.7652423023244316,1.0627647780876217e-08,5.404564003434763e-10,21.20966697301337,1.0327409328006032,0.0005636567299507424,2.744556893841524e-05 +188,8.233275283967266,0.43206232809707956,1.0589801068697602e-08,5.557270886759063e-10,14.388537500518739,0.7168927296304731,0.0005160291505930287,2.5710573178420247e-05 +189,30.673882932856422,2.487447376809254,1.4753505756793315e-08,1.1964109426187443e-09,33.2437107856204,2.592940880162685,0.0007290758833800559,5.686641527318861e-05 +190,39.401253288551274,1.1907583200022294,6.297912361906335e-09,1.903312945064087e-10,41.88742559720661,1.188667508619582,0.0005295743694520746,1.5028086290587478e-05 +193,18.20243685252858,1.1622160120438159,1.2855566682241625e-08,8.208211660364969e-10,22.285845480054146,1.3460177454865316,0.0005922566709556035,3.577104533469479e-05 +195,16.939801822928217,0.9582997841292484,1.1963824306864364e-08,6.768042725925198e-10,25.07745194997855,1.38938792985861,0.0006664449134817925,3.6923628467287724e-05 +196,10.133456572683691,0.5653515284282749,9.876762904661601e-09,5.510304370501021e-10,17.064815403430906,0.9133141863475364,0.0005327581518029828,2.8513380685977522e-05 +197,27.493208364082367,1.6764878600081528,1.32236666897462e-08,8.063561144473813e-10,28.5658061828433,1.639176405708394,0.0006264836200662168,3.59491751082486e-05 +198,27.066939502223367,1.5473555515834687,1.3018640190498995e-08,7.442461372916417e-10,27.9792095295503,1.5431028529622552,0.0006136188275957344,3.3842162784988125e-05 +199,79.01664781804176,4.402176609053915,1.2630053146919627e-08,7.036457008719415e-10,55.631832660065996,3.069794469189407,0.0007033421673062306,3.881079935542421e-05 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev4/X_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev4/X_data.csv new file mode 100644 index 00000000..34157e56 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev4/X_data.csv @@ -0,0 +1,135 @@ +2,1,1,1,1,0,0,1,0,0,0 +0,0,1,2,0,2,2,1,1,0,2 +0,1,2,1,1,0,2,2,1,1,1 +1,2,2,0,0,1,1,2,1,1,2 +0,2,0,0,2,2,1,2,0,0,0 +1,2,0,2,1,0,0,0,2,0,0 +0,2,0,0,2,1,0,2,1,1,0 +0,2,0,1,1,0,1,2,1,0,2 +0,0,1,2,0,2,0,0,0,1,1 +2,2,2,1,0,2,1,2,1,1,2 +0,2,2,0,0,1,0,1,1,1,2 +1,0,1,0,2,1,1,2,2,1,0 +2,2,1,2,2,1,0,0,1,2,0 +0,0,1,0,1,0,1,0,1,0,2 +1,0,0,0,2,1,1,0,0,2,0 +0,1,2,1,0,0,2,2,0,1,2 +2,1,0,1,1,2,0,1,2,0,2 +1,0,2,1,2,0,2,0,1,0,0 +1,2,0,2,0,1,0,0,1,1,2 +2,2,1,0,1,0,2,1,2,0,0 +1,0,1,2,0,1,0,0,1,1,2 +2,2,0,2,2,2,1,2,1,2,2 +1,0,1,2,2,0,1,0,0,0,0 +2,0,1,0,2,0,2,0,0,2,1 +2,0,1,2,1,2,1,1,1,1,2 +0,0,0,0,0,1,2,1,0,2,0 +0,1,1,1,1,1,1,2,0,0,0 +2,0,1,2,0,1,0,1,1,2,2 +2,0,0,0,1,1,0,1,0,0,2 +0,2,1,1,2,0,1,0,2,2,1 +2,1,2,0,0,1,2,0,0,2,2 +2,0,0,1,0,0,1,2,0,2,1 +1,0,1,2,0,0,0,0,0,1,2 +2,1,0,1,0,0,2,1,2,0,2 +0,2,0,0,0,0,0,1,2,0,0 +0,0,0,2,2,1,2,0,1,2,2 +2,0,0,1,0,1,0,0,0,0,0 +2,1,2,1,1,0,0,2,0,1,1 +2,0,2,1,1,1,0,0,2,2,2 +1,2,2,0,1,0,2,1,1,0,2 +1,1,1,2,0,0,0,1,0,1,1 +1,0,0,1,1,0,2,1,0,1,1 +1,0,0,2,0,0,1,2,2,1,2 +2,2,1,0,2,2,1,0,0,1,1 +0,2,1,2,2,0,2,0,1,1,2 +2,1,2,1,1,1,0,1,0,2,0 +0,0,2,2,2,1,1,2,0,0,1 +1,2,0,0,2,2,1,0,1,1,1 +1,2,1,2,2,0,2,1,2,0,1 +0,0,1,0,1,1,2,2,1,1,0 +0,0,0,1,0,0,0,0,2,1,2 +0,1,2,0,1,1,2,0,0,2,1 +1,0,2,1,0,2,0,2,0,0,0 +2,2,2,0,0,1,1,0,0,2,2 +0,1,0,1,0,0,1,1,0,1,0 +1,0,0,0,2,2,1,2,1,1,2 +2,0,2,2,1,1,0,2,0,1,2 +1,1,1,2,0,1,2,1,0,1,0 +0,1,1,1,0,0,2,2,2,1,2 +0,0,2,2,2,1,1,2,1,1,2 +2,1,1,0,1,1,2,0,2,2,2 +1,0,2,2,2,0,0,2,1,2,2 +0,1,2,1,0,0,2,0,1,2,2 +0,0,2,1,1,0,2,2,0,2,1 +1,1,1,0,0,1,1,1,1,2,0 +1,2,0,0,1,0,2,0,0,1,2 +2,1,1,1,1,1,1,1,0,1,0 +0,0,1,2,0,1,2,0,0,2,1 +1,2,2,1,0,0,0,1,2,1,1 +0,2,0,0,1,2,1,2,0,2,0 +2,0,2,1,0,2,2,0,0,0,1 +1,1,0,1,0,0,0,0,0,0,2 +0,2,1,0,0,2,0,1,1,2,2 +1,1,2,1,2,2,0,0,1,1,1 +1,0,0,2,2,1,2,0,2,0,1 +2,0,2,2,1,2,1,2,0,1,0 +1,2,0,1,0,1,2,2,1,0,2 +2,2,0,0,0,1,2,1,2,0,1 +1,1,2,0,2,2,1,1,2,2,2 +1,0,2,1,0,2,1,1,0,1,0 +0,1,2,1,1,2,1,0,2,1,1 +1,0,2,1,1,2,2,2,0,2,1 +0,2,0,0,0,0,0,1,0,2,2 +0,2,1,2,1,0,0,0,2,2,2 +2,1,2,1,0,0,2,2,0,1,0 +1,0,0,0,1,2,2,1,1,0,1 +0,1,0,0,0,2,2,2,0,2,1 +1,1,0,2,0,0,0,1,1,2,0 +2,1,2,1,2,2,1,1,2,1,1 +0,2,1,2,0,0,1,0,2,2,0 +1,0,0,2,2,2,2,1,2,2,1 +1,2,2,0,1,0,2,0,0,2,1 +0,0,1,0,1,1,2,1,0,2,1 +0,2,1,1,1,2,2,0,0,1,1 +0,1,2,1,0,0,0,1,0,0,1 +2,1,1,2,0,0,2,1,1,2,1 +2,2,1,1,0,0,2,2,1,1,0 +2,1,0,0,2,2,1,1,0,1,0 +0,0,1,2,1,0,2,1,2,1,0 +1,2,2,1,1,1,1,1,0,2,0 +1,2,2,1,0,0,0,0,1,0,2 +0,0,1,2,1,2,1,2,0,1,0 +1,0,1,0,1,1,1,2,1,1,0 +1,0,0,2,2,2,0,0,2,1,1 +0,1,2,2,2,0,2,0,1,0,0 +2,2,2,0,2,1,0,2,1,2,0 +0,0,2,0,2,2,1,2,1,1,1 +2,1,2,2,1,1,2,0,0,0,0 +1,0,2,0,2,1,2,0,1,1,2 +1,0,1,1,0,1,0,0,0,2,2 +0,1,1,2,2,0,2,1,0,2,2 +0,0,1,2,1,2,2,0,0,0,1 +1,1,0,0,1,2,2,1,0,0,0 +1,0,0,2,2,1,2,0,1,1,1 +2,1,1,2,2,1,0,1,1,1,2 +1,1,1,0,0,0,1,0,0,2,2 +0,2,2,0,2,2,0,1,2,0,1 +0,0,0,2,1,2,0,0,1,0,2 +2,2,1,1,1,0,0,0,1,1,1 +0,2,2,2,0,2,1,0,1,1,1 +1,2,1,2,1,1,2,2,2,2,0 +1,2,2,0,0,0,0,1,0,2,2 +1,1,0,1,1,2,2,2,0,1,0 +1,1,1,1,1,2,2,2,0,0,1 +2,1,1,1,0,2,0,0,1,0,0 +2,1,2,1,2,0,2,0,1,2,2 +0,2,0,0,2,0,1,0,2,0,1 +0,2,2,0,0,1,1,0,2,0,1 +0,0,0,0,1,2,0,1,0,2,0 +2,1,0,1,2,1,0,0,2,0,2 +2,0,2,2,0,1,2,1,2,1,2 +0,1,1,1,0,0,0,2,1,2,0 +2,0,1,2,2,0,0,1,2,1,1 +0,2,0,2,1,0,0,2,2,0,1 +1,0,0,1,2,2,0,0,1,1,2 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev4/Y_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev4/Y_data.csv new file mode 100644 index 00000000..1c41a34c --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev4/Y_data.csv @@ -0,0 +1,136 @@ +sim_id,qoi,qoi_err,qoi_kla,qoi_kla_err,qoi_sum,qoi_sum_err,qoi_sum_kla,qoi_sum_kla_err +1,36.07584001788666,1.4944043441048203,7.748412599841807e-07,3.209699744587803e-08,44.50778213746871,0.9201301317197476,0.006522800513341893,0.00013484889624437832 +2,38.01538204266846,2.9227468123696863,6.226229029726544e-07,4.786928362127673e-08,32.03095642912799,2.287537935583192,0.004099234592655657,0.00029275287668361445 +3,116.13148841916453,8.355945758198212,9.579580949846692e-07,6.892743724619157e-08,73.23612016500374,5.02544765383488,0.006651561153608707,0.00045642877201071885 +4,133.2160874271533,8.695126406821187,1.0988874147601935e-06,7.172530857753779e-08,85.96908583480283,5.387697373052412,0.0078080137830666444,0.0004893295646835308 +5,34.837109352520336,3.573942144871707,9.499479459262051e-07,9.745524420597065e-08,39.65772696195647,3.9742723591147757,0.00654872368788165,0.0006562759273922901 +6,7.323877708646155,0.8850693746780647,1.9970943336660614e-07,2.4134305669580442e-08,21.889723633731418,1.1682004375791348,0.003614673092104825,0.00019290616722978548 +8,33.15185098281714,2.7271263591288895,7.120395046207717e-07,5.8573553036264675e-08,34.42722154658428,2.6808773434537416,0.005045452573424188,0.00039289373013330777 +9,23.504048773390597,1.5154902416974898,3.849536089530675e-07,2.482097631345442e-08,23.169537686801483,1.1056522852514619,0.0029651742917988027,0.00014149836635557036 +12,33.84302096218575,1.3626643799966673,9.228403627112019e-07,3.7157489341593995e-08,36.60030196978353,1.365040377840476,0.00604384610985522,0.00022541054399544485 +13,198.23604461397557,12.577584397134652,1.0347078192729791e-06,6.564963979493945e-08,113.05040898086821,6.457059616660763,0.008167510312785573,0.00046650075382100584 +14,69.51727954626844,4.711426618428412,1.1385667169067434e-06,7.716460672660231e-08,61.1379343044717,3.8332951155968735,0.00782426621988976,0.0004905746624422562 +15,43.712260915607324,1.9727008671102653,5.231678035137411e-07,2.3610162412515213e-08,35.54709342790707,1.208041847161979,0.003888865878434782,0.000132160249013815 +18,60.74526690647444,3.793629608303654,7.270264520399728e-07,4.540385144286578e-08,48.995639426060315,2.6498179547643894,0.005360142230650424,0.0002898911268277823 +21,29.6048570905226,3.118019447545674,8.072729756383452e-07,8.502296869131728e-08,31.717293704266584,3.161687964341966,0.0052375097739832165,0.0005220928295436062 +22,25.237583982235602,1.2174186598400236,6.881850524556869e-07,3.3196890988941804e-08,33.52559851701207,1.0745488538868482,0.005536117115779351,0.0001774413750950761 +23,44.79624628670165,3.5406137816766816,7.336811418598693e-07,5.7988822224073136e-08,42.259558746467135,3.0689626833992936,0.0054082632676665954,0.0003927574883127587 +24,17.84609524415117,1.5588771810480935,2.135900191406819e-07,1.865733665447953e-08,22.21435316998962,0.7790688096964776,0.002430258922119349,8.523043237952855e-05 +25,28.0075659023622,1.5774678955213715,6.015499213328372e-07,3.3881048134065926e-08,28.574803139090196,1.5523014124309884,0.004187756303195383,0.00022749623130295844 +27,71.84284814926004,5.608663020376987,1.1766553047590232e-06,9.185970859369837e-08,59.50096378826024,4.304905428462439,0.0076147711942782725,0.0005509300650557819 +28,16.973882760591902,0.9760930998599804,2.78001366585119e-07,1.5986631904008573e-08,21.173962281950665,0.8018842293289066,0.002709786042193474,0.00010262296036782953 +29,63.82723413307343,5.334109444630809,1.0453740938923328e-06,8.736301835949481e-08,54.04982430217737,4.1816021225162805,0.0069171491563345755,0.0005351500391968 +31,166.42303317004396,12.349002380802748,8.686576629198481e-07,6.44565559416244e-08,100.76884840647195,7.06667100738037,0.007280209993962814,0.000510543185771622 +33,12.399738722731932,0.7418705188621412,3.381193243119695e-07,2.0229519683731833e-08,19.903475305414485,0.9732741676501795,0.0032866816753736256,0.0001607177803295567 +36,44.25742529686018,3.113677768860384,9.505664778895427e-07,6.68759578799665e-08,44.077065423937086,3.0152617063546674,0.006459677659385964,0.0004418991712448141 +37,134.12427938640096,8.703216920304133,7.000716449732768e-07,4.542708757751083e-08,77.95199078346437,4.6596555697910675,0.005631767976706199,0.0003366443724744056 +38,35.94981271970667,1.733489156309015,1.2132560543306371e-06,5.850284201496063e-08,44.08635810539846,1.929136079064044,0.008099013846921934,0.00035439760706891266 +39,50.19680806869854,3.700960592651168,8.221324792416393e-07,6.061500770024561e-08,50.68410262102007,3.5929243905077066,0.0064864132401309385,0.00045981266575119894 +40,74.96198741420584,6.940833895001216,8.971784643966427e-07,8.307099251705894e-08,56.3250071318058,4.934284341902632,0.006161977802055939,0.0005398126362005739 +42,23.334884960018776,2.258949999562732,6.363017569970826e-07,6.159764044918475e-08,28.140074444194955,2.5402106293573086,0.004646799898017067,0.0004194676356257628 +44,68.24029624319373,2.716698374254876,8.167302696384782e-07,3.2514656557530744e-08,54.774284524651584,1.84369081486099,0.005992328142534904,0.00020170049598826594 +45,7.958148946544634,1.426691157010236,1.303400381776236e-07,2.336661215082338e-08,18.388204394612476,0.5899724490153058,0.0023532724625829108,7.550307186911051e-05 +46,52.57299575623597,3.587291648096317,1.1291692241890968e-06,7.704828817445647e-08,50.146357683551145,3.360327418933034,0.007349157383495725,0.0004924699659675462 +49,30.80683651174401,1.8287077034530776,8.400488896144454e-07,4.9865680792298064e-08,37.60572004437191,1.9572914231251457,0.006209871847126342,0.0003232095779776393 +50,15.33486177643806,1.0097229900047433,2.5115718014391574e-07,1.6537428415933188e-08,19.091458990687485,0.6959889912809916,0.0024432729410391687,8.907077612493973e-05 +51,28.88263450696164,0.6528913865518959,1.1818532500624766e-06,2.671576953785743e-08,36.1130211549457,0.6228000130899611,0.00730511735129554,0.00012598301212435385 +52,68.06527526898363,4.660280643314377,1.114785691587461e-06,7.632693997663536e-08,63.951819030299504,4.2254101297588305,0.008184380129045286,0.0005407565136916619 +53,14.90142179192025,1.271304262174914,6.097534878350627e-07,5.202068760855081e-08,35.48157501978784,2.579790228822996,0.007177384005154519,0.0005218524012725409 +55,83.72326585619116,3.966968046434534,1.0020373273655448e-06,4.7478440052990717e-08,64.1871780103725,2.7969088483644495,0.007022102296599886,0.00030598291833778293 +56,2.3629583929974256,0.13796067941256782,2.828094013355779e-08,1.6511749537419981e-09,19.21517547886195,0.6028013652983276,0.002102147757639505,6.59467065371272e-05 +58,32.50615543495209,1.8238266820450901,3.890481512372784e-07,2.1828370329636537e-08,28.154516816515226,1.3323195668729466,0.003080115147522314,0.00014575628152348666 +59,61.5072493030116,1.896329947101721,1.0073769489807637e-06,3.105843779423655e-08,52.26271052856814,1.2855615885003027,0.006688439175344966,0.00016452266642664893 +61,53.923556818724684,4.869721616253522,8.831698500875407e-07,7.97571889453192e-08,45.138532103237594,3.7501178448789223,0.005776706247790783,0.0004799298553820263 +63,61.46086740392494,3.269880418733637,1.0066173644999365e-06,5.3554701525826565e-08,53.96651737469116,2.5352168476648504,0.0069064879582026615,0.00032445014949290135 +64,92.20590646224588,8.013233624759623,1.1035613705249927e-06,9.590595028635752e-08,68.1847083760119,5.5903398004170946,0.007459433755053883,0.0006115853598652811 +66,84.15799387848212,5.757681383288932,1.0072404125654317e-06,6.891049922480454e-08,63.68017754574575,4.205504814360092,0.00696663647860703,0.00046008388135588386 +67,28.138494513155376,2.550000412887383,3.367740322801472e-07,3.051954044530094e-08,41.952273787897255,1.1627293150090345,0.004589595106766883,0.00012720304033197316 +68,60.88893605424962,4.41526979328821,9.972501679047207e-07,7.231409888289551e-08,57.46995899348059,4.116413579773016,0.007354848877704626,0.0005268074021210999 +69,93.10931573582445,6.0705891622859385,1.114373751891344e-06,7.265551430064551e-08,70.15226632520094,4.402473866601842,0.007674685283628992,0.00048163235723480533 +70,101.30653156504461,3.7669011126981786,8.35668405575201e-07,3.1072826185810316e-08,67.95647018191922,2.0236580373164332,0.0061720449550782645,0.00018379572021010653 +72,66.62511047242597,6.422699681617244,1.0911982234006786e-06,1.0519214801028228e-07,53.08735295705006,4.926186057910713,0.0067939746976032585,0.0006304398612642953 +73,30.285471058226154,2.3275228081392916,1.022092421068612e-06,7.855064950087125e-08,35.83999899478591,2.5717074243220925,0.006584092236389454,0.0004724430625460555 +74,45.8207837994003,3.8892530264449667,7.504611762296341e-07,6.369889728771408e-08,40.46827441160794,3.243884633293809,0.005179019475520851,0.0004151435151717881 +75,0.9050474701704486,0.04680128213432722,2.4679073658513115e-08,1.2761897327754424e-09,12.298525298241106,0.3768152628843159,0.0020308684208154427,6.222390077796333e-05 +77,16.963571889255064,1.3555457785643084,2.7783252393565476e-07,2.2201379958627483e-08,22.09353143117038,1.082357019525436,0.0028274701543678908,0.0001385171120611856 +78,42.58358950331254,3.0498922806427258,1.1611804248802944e-06,8.316525815655727e-08,40.84780437985339,2.849356623452479,0.0067452404734255345,0.00047051722636074194 +79,77.21270915612037,3.4982703483663,9.241161050042387e-07,4.186885817006507e-08,57.31110726384917,2.323857003274497,0.0062698575420449,0.00025423086473510046 +80,73.37764992218037,4.150938702487016,8.782164471198987e-07,4.9680286073167133e-08,60.16815312367989,2.920645363453345,0.006582419625019484,0.0003195197518959789 +82,40.87640943730353,2.5351874520291577,4.892270646655656e-07,3.0342251988535147e-08,32.45981755438765,1.705276826124047,0.0035511166741578333,0.00018655794848993238 +83,34.679340263057725,2.181248274025221,4.150577955141375e-07,2.6106151190261997e-08,33.70043182061734,1.7761772225541,0.003686840417301621,0.0001943144825935655 +84,72.2420916906668,4.12527415210092,5.959184728360354e-07,3.402901293717041e-08,55.38684696089749,2.9827179996091466,0.005030427690660917,0.00027090090954734236 +85,4.970209190621199,0.6457173349429254,4.0998805561069664e-08,5.326463826249591e-09,20.433772183771215,0.5469347908140101,0.0018558668539205444,4.967453588103744e-05 +86,63.78019065735429,4.585173175142391,7.63349871982397e-07,5.4877405040470535e-08,54.40630523508966,3.8617682630396337,0.005952071583599909,0.0004224789946967678 +87,51.064665872952546,2.7722541252717363,8.36346468107587e-07,4.54044867763598e-08,48.04255101024316,2.2057321921264954,0.0061483548721487325,0.00028228360036969654 +88,63.76847240719365,2.5821686388148426,1.0444117426923418e-06,4.229123179820587e-08,56.10534561834782,1.8946518381730515,0.0071802093734075305,0.00024247238365367283 +92,32.775285416162426,1.6973721682468492,3.9226920339873687e-07,2.0314905571532874e-08,25.06569745742975,1.0420745459352811,0.0027421970482780725,0.00011400336052099058 +94,50.23807055031827,3.811433930394057,1.0790194154254805e-06,8.18624434906882e-08,48.143945541865826,3.435274107144972,0.00705569555185615,0.0005034537149871084 +96,41.98625340782016,2.7592167647146693,3.46340784310629e-07,2.2760528049314453e-08,33.5142595064229,1.5591302571158896,0.003043882507763087,0.00014160567432646695 +98,51.288151118713465,3.6453524534907773,1.1015731741317306e-06,7.82953252443438e-08,49.15655353727629,3.426887785502158,0.007204097467166114,0.00050222466465387 +99,83.25688188008469,5.861032567981248,9.964554362607881e-07,7.01474476653857e-08,62.24617262575618,4.1854723201776,0.006809755550855363,0.0004578923034616801 +100,50.251362485330695,1.4020273568256438,1.0793050053506007e-06,3.011291772043248e-08,48.955059913132665,0.9930664296323606,0.007174568084177089,0.00014553802455048614 +101,45.204479387565144,3.3469346466010945,9.70907423286476e-07,7.188587807370241e-08,45.218666433806895,3.1819217739002474,0.006626984045790347,0.00046632389881416094 +103,7.644658053967196,0.631720824615439,2.579965304903696e-07,2.1319695379274567e-08,28.154386176339163,1.841988849985986,0.005172183970703118,0.0003383879564782673 +104,70.65101503604848,2.57528631329839,1.1571352888242973e-06,4.2178511807980695e-08,58.200270617536624,1.5712457421866766,0.007448312170921393,0.00020108375203174936 +105,111.77834523045344,6.155988919523123,9.220494123954857e-07,5.078019319624876e-08,70.31569503717229,3.4183661894386317,0.006386317906307507,0.0003104679999875887 +107,55.08350973167135,4.026736383786388,9.021678302893697e-07,6.59506274056296e-08,48.22175240839042,3.2773866067840913,0.006171288579169401,0.00041943101454874166 +108,53.272321883372314,4.18676504538259,6.375869124162418e-07,5.010907172662455e-08,43.82510091695135,3.158163025303419,0.004794483283394437,0.00034550427755421047 +110,24.986425735336066,1.3869809301154379,2.990486758058035e-07,1.6600005735608054e-08,23.339108098143353,0.8924961132123073,0.002553307551013755,9.763942373173604e-05 +112,53.21096761257695,3.735169601807364,8.714989918486425e-07,6.117529314744908e-08,52.60092561188836,3.3317519617141214,0.006731723242515425,0.00042638854465135596 +113,88.569178076686,5.429880962479172,4.6229343044542905e-07,2.8341668643254386e-08,54.26842165194804,2.860755063711893,0.0039207102167661476,0.0002066798934727834 +114,29.881064795929476,1.9742279899402528,4.893975347648161e-07,3.233426646402758e-08,26.04412405379263,1.3939276368788147,0.0033330559914309926,0.00017839105865584322 +115,83.59300522554484,6.298582336297782,6.895511039251564e-07,5.195643333361591e-08,55.33011243790279,3.8598459564700938,0.005025274764522847,0.0003505647399824789 +116,61.651079414736884,3.652094055924139,5.085541715878859e-07,3.012579317025847e-08,43.27394573103627,2.395546640484855,0.003930291519270754,0.00021757194741690847 +117,30.90089230872733,2.0055034956613906,1.0428624635868097e-06,6.768297482551026e-08,36.760153980395536,2.2633295411014713,0.006753133412713277,0.00041579168455455106 +119,2.014718629402948,0.1039101271489487,3.299743506152496e-08,1.701859318116463e-09,18.21059173250343,0.5928123590151805,0.002330542076419175,7.58665158387065e-05 +120,50.824807062172525,2.3374956566646765,8.324180164901915e-07,3.828393279870281e-08,45.00668051628307,1.6712160940264928,0.005759832432139827,0.00021387768546949926 +121,62.663552078884734,2.8749342142426073,1.026315096749514e-06,4.708619745214104e-08,53.57616844963867,2.1672950649059706,0.006856531971670591,0.0002773645136370684 +122,39.492037944226155,2.6738464788805842,8.482148964048858e-07,5.742920680085722e-08,41.57375586317201,2.7085960139601504,0.0060928072089902465,0.00039695603578404946 +124,35.96555109939184,3.0494855758830357,7.724724733113242e-07,6.549722145560028e-08,31.972019636322376,2.6276244921196033,0.00468563243798283,0.0003850892966775991 +125,319.51550017821455,11.34088337895161,9.203454656512178e-07,3.266674257892241e-08,128.82437108679088,3.865048413480344,0.006913970206898754,0.00020743613458839113 +126,16.89379053715062,1.43088802324926,3.628469315914367e-07,3.07327906987593e-08,24.29697977595018,1.4750643359283393,0.0035608236605520985,0.0002161768267761911 +128,112.50491055400711,7.314743643441323,9.280428704050028e-07,6.033866125227768e-08,76.80568931614053,4.872577737737456,0.006975762262369385,0.0004425446110308814 +132,55.88448274382703,4.031428580668274,9.152863132621667e-07,6.602747706718608e-08,50.43934438476128,3.4467219937499487,0.00645508996243589,0.000441102096320747 +134,47.29592972782607,3.936853258076221,7.746213721393614e-07,6.447850143197703e-08,41.04972368517892,3.243664256775448,0.005253431721983679,0.0004151153082709105 +135,81.78377825273544,6.558153596134565,9.788246760821662e-07,7.849090255522404e-08,66.37271659756907,5.040989786518259,0.007261201070033741,0.0005514862477880885 +140,39.55338670658884,2.913025694595634,1.078552079666144e-06,7.943314549354789e-08,42.30627173692466,2.962966902985891,0.006986078755298283,0.0004892778135194379 +141,122.39459812832675,9.147595748626873,1.0096219316709584e-06,7.54576871128779e-08,78.77992535940506,5.633376856748936,0.007155069023499832,0.0005116430367449329 +144,82.06804834289869,2.2253121315984723,9.822269676691888e-07,2.6633527070179926e-08,62.29834094760009,1.225125421888352,0.006815462856945706,0.00013402920015162385 +147,64.69873236910057,1.8724007677142502,1.0596476700801654e-06,3.0666522176133016e-08,55.59549146140483,1.0984657318085127,0.0071149594890356545,0.00014057865083065476 +148,74.28376092685737,2.4431677389171824,1.2166330205957744e-06,4.0014648005608356e-08,59.45767538914564,1.6988453899036293,0.007609231262928635,0.00021741360332591756 +149,81.40837193914159,2.8243427427777976,6.715302624654375e-07,2.3297746634311667e-08,70.26679179435985,1.0090090998868968,0.006381876342370971,9.164174340918305e-05 +151,46.016179667052796,3.9448018680268495,9.883411273672537e-07,8.472693634490523e-08,44.730089909569834,3.650776373194073,0.006555380803482987,0.0005350364688072192 +152,69.64766531089047,3.185752484842829,1.1407021988031298e-06,5.217683676949496e-08,58.34866816525719,2.4249893095338972,0.007467303540669141,0.00031034352328112777 +153,71.92840643656046,2.3333097360460764,8.608711819393152e-07,2.7926089424379458e-08,52.10387718993827,1.247531753365516,0.005700184424421071,0.0001364804589029327 +155,48.73655644689069,3.189930107028017,7.98216264716084e-07,5.224526064971356e-08,44.53725759692319,2.8125730425529487,0.005699756965024656,0.0003599454401529932 +156,40.83673249304287,3.3364985201604136,8.770964129534019e-07,7.166172965370314e-08,47.111750725008996,3.7992266351937785,0.006904423439397791,0.0005567924992796224 +157,53.720559041332734,2.603854053011066,6.429516977666122e-07,3.116409088058524e-08,44.017451097872225,1.5531891660544224,0.004815526780031531,0.00016991951685161206 +158,44.80228413266511,1.4070982266341236,5.362136979840692e-07,1.6840778503527302e-08,44.04520615779452,1.128872035754772,0.00481856277436757,0.00012349904207565766 +159,53.82105546151303,2.117128984742454,8.814911225905244e-07,3.46747270083562e-08,56.193979570763794,1.7473872248643834,0.007191552505312795,0.00022362585940190283 +160,74.2651521526847,6.634979376894386,8.888384295145036e-07,7.941038937205938e-08,55.181248031566795,4.611826744436388,0.006036850109305193,0.0005045356489639532 +161,1.1621800238082571,0.06388180497758605,2.496144365877265e-08,1.3720611635911233e-09,13.448760895340172,0.3971164741460889,0.001970971837834434,5.8199070752551255e-05 +162,24.182187934699297,1.9764609836801488,2.894232125738575e-07,2.3655166727191688e-08,30.505488241226825,0.9123976020504849,0.0033373124160399957,9.981665664911665e-05 +163,45.27252441444197,3.6294441418189,9.723688090206221e-07,7.795364458319259e-08,44.05211235165056,3.3465298152369742,0.006456020371224487,0.0004904478697324153 +164,20.854955981925805,1.3843280490488379,4.4792527670817294e-07,2.97327659172468e-08,23.976179964612943,1.3371458059320562,0.003513808882235094,0.00019596427857407068 +165,93.02071973131784,6.542816849710045,1.1133133954580013e-06,7.830734554463028e-08,69.79536954974826,4.512883751638232,0.007635640637264415,0.0004937112416991774 +166,124.39865607883726,8.650541907822381,6.493080312676516e-07,4.5152146434819956e-08,67.61048796449782,4.359154639731087,0.004884629336351845,0.0003149341955068506 +168,9.210301378124871,0.6485124473058094,1.9781997127865847e-07,1.3928829083115848e-08,16.616196347648987,0.6272530216442666,0.002435172675609915,9.19265388446131e-05 +170,63.94584319663291,4.136836254833012,1.0473168697311612e-06,6.775387078217813e-08,59.57211550536567,3.734791708162097,0.007623877565645254,0.00047796850044128954 +172,36.565307115460286,3.6317227321595573,9.970724601646014e-07,9.903077547676313e-08,39.10791583980101,3.817793784317712,0.006457931285006888,0.0006304363040067246 +174,87.41236592208365,2.669000479031016,1.0461901077961788e-06,3.194378586382681e-08,66.81730145344878,1.575855342075057,0.007309838785014966,0.00017239918776274847 +177,83.37180639203793,5.002726934883134,9.978309248856409e-07,5.987486490230915e-08,68.65647469364771,3.8193013208981674,0.007511045174653475,0.00041783305776889855 +178,87.46859187729096,3.2984968482926402,4.565488386961561e-07,1.7216750300994757e-08,64.44965799552914,0.9957204772508915,0.004656270163720239,7.193744224290876e-05 +179,29.599630987076374,2.220512967072282,6.357445510100987e-07,4.769245332415896e-08,30.240813958825424,2.05708689556552,0.0044319173350725076,0.0003014746588706379 +181,30.01986367498078,1.6130450775068679,3.5929109617421015e-07,1.930564176941511e-08,25.426548010717507,1.0498578404798777,0.0027816742644740313,0.00011485485701748429 +182,66.19150730792924,4.791127850755908,5.460077288943427e-07,3.9521578266284487e-08,50.943562768634074,3.314364419081382,0.004626872947048832,0.00030102219463831265 +183,35.06349634799953,2.810458081739047,7.530980318369091e-07,6.03633599145787e-08,38.63358571805416,2.987988496844758,0.00566191265034914,0.0004379021401960389 +184,81.91402706870191,3.7253985383550114,6.757014287903331e-07,3.0730476882410586e-08,62.43190329847359,2.0249829211354555,0.005670284569737795,0.00018391605581529128 +185,31.220765156813236,2.0785491127023197,8.51336077250207e-07,5.6678426652644924e-08,37.732464758091595,2.40497406801088,0.006230801600879671,0.00039713589793581724 +187,50.80889059536673,3.766697645057404,1.091279558073762e-06,8.090159209007729e-08,50.53677742297116,3.6805199911200295,0.0074063750208907975,0.0005393955197810074 +188,34.510496630378555,3.5433190963807064,1.1646811431596652e-06,1.1958207903966882e-07,39.947578220040285,3.8476444756868298,0.0073386871372231955,0.0007068428245336156 +189,1.272139672012257,0.05918148323753854,2.0835336987694625e-08,9.692851923525543e-10,14.483578614972934,0.3908047086215728,0.00185356895649716,5.001412255980767e-05 +190,41.84391257708448,2.5839046908060013,3.451666646885784e-07,2.1314396983209225e-08,50.58541326326525,2.4919253799545373,0.004594344768078142,0.00022632540871518926 +193,22.56944634776773,1.0846572814740374,4.847493089525375e-07,2.329640078640571e-08,24.70393920590753,0.8814911930748892,0.0036204650255391513,0.00012918620015407275 +194,76.39065691866357,5.221622859578134,9.142774175641622e-07,6.249470885729113e-08,59.89105969270161,3.9598984865168205,0.006552105346465895,0.00043321444265797225 +195,51.13940701231056,3.6855406146354706,1.0983785360080707e-06,7.915849911453033e-08,49.78621750551758,3.400443288632349,0.007296377693762441,0.0004983491376369693 +198,64.55391311794969,4.884569716531635,1.0572757939019842e-06,8.000037604969901e-08,53.5527621980613,3.8056490951689628,0.006853536564735283,0.00048703660008850947 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev5/X_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev5/X_data.csv new file mode 100644 index 00000000..ef7b8dc3 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev5/X_data.csv @@ -0,0 +1,165 @@ +1,2,2,0,1,1,1,1,0,1,2 +2,1,1,1,1,0,0,1,0,0,0 +0,0,1,2,0,2,2,1,1,0,2 +0,1,2,1,1,0,2,2,1,1,1 +1,2,2,0,0,1,1,2,1,1,2 +0,2,0,0,2,2,1,2,0,0,0 +1,2,0,2,1,0,0,0,2,0,0 +0,2,2,1,0,0,2,2,1,2,0 +0,2,0,0,2,1,0,2,1,1,0 +0,2,0,1,1,0,1,2,1,0,2 +0,0,2,2,0,2,1,1,2,1,1 +0,0,1,2,0,2,0,0,0,1,1 +2,2,2,1,0,2,1,2,1,1,2 +0,2,2,0,0,1,0,1,1,1,2 +1,0,1,0,2,1,1,2,2,1,0 +2,2,0,2,2,2,1,0,0,2,2 +2,1,2,2,2,0,2,1,1,0,0 +0,0,1,0,1,0,1,0,1,0,2 +1,0,0,0,2,1,1,0,0,2,0 +0,1,2,1,0,0,2,2,0,1,2 +2,1,0,1,1,2,0,1,2,0,2 +1,0,2,1,2,0,2,0,1,0,0 +2,0,1,1,1,1,1,0,2,2,0 +1,2,0,2,0,1,0,0,1,1,2 +2,2,1,0,1,0,2,1,2,0,0 +1,0,1,2,0,1,0,0,1,1,2 +1,0,0,2,2,1,1,2,2,2,0 +2,2,0,2,2,2,1,2,1,2,2 +2,1,0,1,2,0,2,1,2,0,1 +1,0,1,2,2,0,1,0,0,0,0 +2,0,2,2,1,2,1,0,1,1,2 +2,0,1,0,2,0,2,0,0,2,1 +0,1,1,1,1,1,1,2,0,0,0 +2,0,1,2,0,1,0,1,1,2,2 +2,0,0,0,1,1,0,1,0,0,2 +2,2,1,2,1,2,0,0,1,0,1 +0,2,1,1,2,0,1,0,2,2,1 +2,1,2,0,0,1,2,0,0,2,2 +2,0,0,1,0,0,1,2,0,2,1 +2,1,2,0,1,0,2,1,1,0,0 +0,1,0,0,2,0,0,2,0,2,0 +1,0,1,2,0,0,0,0,0,1,2 +0,0,0,2,2,1,2,0,1,2,2 +2,0,0,1,0,1,0,0,0,0,0 +2,2,2,0,1,1,0,1,1,1,2 +2,1,2,1,1,0,0,2,0,1,1 +2,0,2,1,1,1,0,0,2,2,2 +1,1,1,1,0,0,2,0,2,1,1 +1,2,2,0,1,0,2,1,1,0,2 +1,0,1,2,2,0,1,0,0,1,2 +1,0,0,1,1,0,2,1,0,1,1 +2,0,2,0,1,0,0,1,2,0,1 +1,0,0,2,0,0,1,2,2,1,2 +2,2,1,0,2,2,1,0,0,1,1 +0,0,1,0,2,2,1,2,2,2,2 +2,1,2,1,1,1,0,1,0,2,0 +0,0,2,2,2,1,1,2,0,0,1 +1,2,1,2,2,0,2,1,2,0,1 +1,1,1,1,0,0,0,0,1,1,2 +0,0,1,0,1,1,2,2,1,1,0 +0,0,0,1,0,0,0,0,2,1,2 +0,1,2,0,1,1,2,0,0,2,1 +1,0,2,1,0,2,0,2,0,0,0 +2,2,2,0,0,1,1,0,0,2,2 +0,1,0,1,0,0,1,1,0,1,0 +1,0,0,0,2,2,1,2,1,1,2 +2,0,2,2,1,1,0,2,0,1,2 +2,1,2,0,1,2,1,2,1,1,1 +1,1,1,2,0,1,2,1,0,1,0 +0,1,1,1,0,0,2,2,2,1,2 +0,0,2,2,2,1,1,2,1,1,2 +2,1,1,0,1,1,2,0,2,2,2 +1,0,2,2,2,0,0,2,1,2,2 +0,1,2,1,0,0,2,0,1,2,2 +0,0,2,1,1,0,2,2,0,2,1 +1,0,1,2,2,0,2,1,0,2,1 +0,0,0,0,2,2,0,2,0,1,1 +1,1,1,0,0,1,1,1,1,2,0 +1,2,0,0,1,0,2,0,0,1,2 +2,1,1,1,1,1,1,1,0,1,0 +0,2,2,2,1,1,0,1,2,1,1 +0,0,1,2,0,1,2,0,0,2,1 +1,2,2,1,0,0,0,1,2,1,1 +0,2,0,0,1,2,1,2,0,2,0 +2,0,2,1,0,2,2,0,0,0,1 +1,1,0,0,0,2,2,1,1,2,2 +1,1,0,1,0,0,0,0,0,0,2 +0,2,1,0,0,2,0,1,1,2,2 +1,1,2,1,2,2,0,0,1,1,1 +0,0,2,0,2,0,1,2,2,1,1 +1,0,0,2,2,1,2,0,2,0,1 +2,0,2,2,1,2,1,2,0,1,0 +2,0,1,0,2,0,1,2,1,1,0 +1,2,0,1,0,1,2,2,1,0,2 +2,0,2,2,1,1,0,2,0,1,0 +1,0,2,1,0,2,1,1,0,1,0 +1,0,2,1,1,2,2,2,0,2,1 +0,2,0,0,0,0,0,1,0,2,2 +1,0,1,2,2,1,2,1,1,1,0 +0,2,1,2,1,0,0,0,2,2,2 +2,1,2,1,0,0,2,2,0,1,0 +0,1,0,0,0,2,2,2,0,2,1 +2,2,2,0,1,1,1,0,0,0,1 +2,1,2,1,2,2,1,1,2,1,1 +0,2,1,2,0,0,1,0,2,2,0 +1,0,0,2,2,2,2,1,2,2,1 +2,0,0,2,0,0,2,1,1,2,2 +1,0,0,1,2,1,2,2,0,1,0 +0,0,0,2,2,0,0,2,1,0,1 +1,2,2,0,1,0,2,0,0,2,1 +1,0,0,2,2,0,1,2,1,1,1 +0,0,1,0,1,1,2,1,0,2,1 +0,2,1,1,1,2,2,0,0,1,1 +1,0,0,1,2,1,2,2,0,2,1 +0,1,2,1,1,1,2,1,1,0,0 +1,2,0,1,2,1,0,0,0,2,2 +0,1,2,1,0,0,0,1,0,0,1 +2,1,1,2,0,0,2,1,1,2,1 +2,0,2,1,0,2,0,0,2,0,1 +2,2,1,1,0,0,2,2,1,1,0 +1,0,0,1,0,1,0,2,1,0,2 +2,1,0,0,2,2,1,2,2,2,2 +2,1,0,0,2,2,1,1,0,1,0 +0,0,1,2,1,0,2,1,2,1,0 +2,2,2,0,2,2,0,2,0,1,0 +1,2,2,1,0,0,0,0,1,0,2 +0,0,1,2,1,2,1,2,0,1,0 +1,0,1,0,1,1,1,2,1,1,0 +2,0,0,1,1,0,0,1,0,0,0 +0,1,2,2,2,0,2,0,1,0,0 +2,2,2,0,2,1,0,2,1,2,0 +0,0,2,0,2,2,1,2,1,1,1 +2,1,2,2,1,1,2,0,0,0,0 +1,0,2,0,2,1,2,0,1,1,2 +1,0,1,1,0,1,0,0,0,2,2 +0,1,1,2,2,0,2,1,0,2,2 +1,1,0,0,1,2,2,1,0,0,0 +1,0,0,2,2,1,2,0,1,1,1 +2,1,1,2,2,1,0,1,1,1,2 +1,2,1,0,1,0,1,0,1,1,1 +1,1,1,0,0,0,1,0,0,2,2 +2,1,2,1,0,1,2,0,2,2,0 +0,2,2,0,2,2,0,1,2,0,1 +0,1,0,1,2,0,1,2,2,1,2 +2,1,1,2,0,0,1,2,0,1,2 +2,0,2,2,0,1,0,1,0,2,2 +2,2,2,1,0,1,2,2,1,0,0 +0,2,2,2,0,2,1,0,1,1,1 +1,2,1,2,1,1,2,2,2,2,0 +1,2,2,0,0,0,0,1,0,2,2 +0,1,1,2,1,1,1,1,0,0,1 +1,1,0,1,1,2,2,2,0,1,0 +1,1,1,1,1,2,2,2,0,0,1 +2,1,1,1,0,2,0,0,1,0,0 +2,1,2,1,2,0,2,0,1,2,2 +0,2,0,0,2,0,1,0,2,0,1 +2,2,0,0,1,1,2,2,1,0,1 +0,2,2,0,0,1,1,0,2,0,1 +2,1,0,1,2,1,0,0,2,0,2 +0,1,1,1,0,0,0,2,1,2,0 +2,0,1,2,2,0,0,1,2,1,1 +0,2,0,2,1,0,0,2,2,0,1 +1,0,0,2,0,1,1,1,0,1,2 +1,0,0,1,2,2,0,0,1,1,2 +2,2,2,2,0,1,1,0,2,2,1 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev5/Y_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev5/Y_data.csv new file mode 100644 index 00000000..4cbf0284 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev5/Y_data.csv @@ -0,0 +1,166 @@ +sim_id,qoi,qoi_err,qoi_kla,qoi_kla_err,qoi_sum,qoi_sum_err,qoi_sum_kla,qoi_sum_kla_err +0,75.31260976968582,3.238079989011666,7.642122854086134e-05,3.2857452640481335e-06,65.52420630134999,2.6240595440150822,0.06600471010113729,0.002643302365148521 +1,17.125618618661928,1.8934400925948427,2.5920128425771166e-05,2.86577737478525e-06,29.72112730736887,2.9880398691429733,0.03656459086991675,0.0036760535422599543 +2,74.77167153383817,7.167060797859717,9.991116521855821e-05,9.576747193385321e-06,73.1501948890811,6.89286959631731,0.08455785445255344,0.007967801930939619 +3,91.01711824270915,8.594547370800814,9.2356910955918e-05,8.721061065840268e-06,75.50828110485132,6.841107299017686,0.07606200037951794,0.006891274683523081 +4,82.36608997978375,3.843152957199135,8.357854134088118e-05,3.899725219340089e-06,68.20730825957243,2.9440715173526515,0.06870748939509123,0.002965661125155293 +5,19.98026923845076,2.4503164049641413,3.4004225903005566e-05,4.1701696595707025e-06,30.648159746523802,3.579363261462785,0.03998252163514974,0.004669512630614897 +6,3.1491043013869047,0.3255978884604246,5.359418576902211e-06,5.541307003538772e-07,21.52713115885259,1.7221517061604583,0.028083515565034637,0.0022466567369530547 +7,54.73252567106776,4.362459713855856,7.313455397721029e-05,5.829194642575174e-06,54.587010658759624,4.229018033143473,0.06309978443584315,0.004888527930844384 +8,53.52434221013517,2.784535758169979,8.101068649177434e-05,4.214477824774255e-06,59.537524852760626,2.9904941210179503,0.07324639634548537,0.0036790732936686416 +9,31.419958793082095,3.487028974332993,4.198387090959136e-05,4.659426044461732e-06,35.85314315803164,3.8059651118726507,0.04144438206090539,0.004399499132103051 +10,51.081238731014224,4.742231107942143,5.976233563392424e-05,5.548158466141561e-06,57.13364883076858,5.21684254003952,0.06179808707976729,0.005642749871021317 +12,46.57262900416803,3.4712301768653275,7.926130441727679e-05,5.907637976081125e-06,50.69433295927467,3.7054611869516565,0.06613397752022969,0.004834009494450023 +13,80.78105164271268,5.304047424243655,7.032289912029845e-05,4.617369845518886e-06,74.14233953724406,4.671832577492183,0.06917671230476229,0.004358940116623216 +14,61.2407395780285,4.860764380980748,8.183089359805109e-05,6.495034116275401e-06,67.45692387912007,5.223186864047021,0.07797672057863589,0.0060377342933341715 +15,52.425389339401015,2.704944367134757,6.133491571419469e-05,3.1646409661493144e-06,48.892786986077645,2.223168744370267,0.052884432435537046,0.002404669983077991 +19,28.65681137575307,3.127065938661847,3.352705451032754e-05,3.6585127636221233e-06,36.26608413494068,3.69736555585093,0.039226940117743136,0.003999227948435568 +20,64.30397811374857,4.533806217628798,7.523225077427789e-05,5.304313299610672e-06,62.97230211488626,4.120952056782897,0.06811341850406662,0.004457390354996942 +21,24.16671385380193,2.627487407962718,4.1128985849164486e-05,4.471683368897733e-06,29.54451522566868,3.1242355240986814,0.038542694162091426,0.004075763415845709 +22,14.392894894234168,1.367503221287946,2.4495066051686007e-05,2.327334561774688e-06,27.892284312959564,2.1994392501196756,0.036387256643124304,0.0028693082132351766 +23,45.58819910734964,3.1835487991029567,6.0915718474605225e-05,4.2539114550164026e-06,47.50750811412515,3.1891537559956915,0.05491623040251558,0.0036864973433796038 +24,24.269187875479428,2.6470328693923757,2.839366051819254e-05,3.0968878340573434e-06,34.4191273686651,3.459112357881669,0.03722913333679609,0.0037415171459511147 +25,24.826132451854786,2.580181342353536,3.757509106724982e-05,3.905181328463819e-06,30.960916729851284,2.9862786197398825,0.038089853140898654,0.0036738871479870426 +26,26.212929413621122,2.160407590231804,3.0667732494992575e-05,2.5275619146539296e-06,39.864666222737625,2.824241914273352,0.043119248817252445,0.0030548152376654474 +27,66.08858292481996,4.5402660463117295,8.830866241378959e-05,6.066778917148733e-06,60.259287634287965,3.908899368651131,0.069656624760219,0.004518485817490133 +28,27.542079681019636,2.2854240885256285,3.6802190148012534e-05,3.0538221096183615e-06,37.544317306445556,2.655254415255037,0.04339929542406153,0.003069337227605242 +29,50.288733811886146,6.1313864128505084,6.719663670841213e-05,8.192859793296849e-06,46.52391932544596,5.446890003841151,0.053779246341637964,0.006296323344197757 +30,39.42831439906267,4.025726023067068,4.612904090055274e-05,4.709886364731204e-06,42.11186757374552,4.025841576192741,0.045549918991452804,0.0043545149677077614 +31,72.2189972988533,4.119886894845398,6.286936028947973e-05,3.5865168893455937e-06,71.28495400003345,4.068885657808901,0.06651072275033496,0.0037963765241289904 +32,66.7330273333493,5.543513050297672,7.807409680028088e-05,6.485615770742502e-06,58.43165386002456,4.6361884197043235,0.06320206231099283,0.005014690669026578 +33,8.406418359354994,0.835150527788008,1.4306765559234155e-05,1.4213309755678713e-06,23.584697073393922,1.8637585275951123,0.03076773546515124,0.0024313913877934 +34,80.98034484066493,8.089116067135265,8.217240444994661e-05,8.208190745779772e-06,78.61110747430084,7.941759165644607,0.07918758552828141,0.007999998389287269 +36,56.4085531463549,5.609423088833227,8.537606135343415e-05,8.490032505301776e-06,58.177025896110045,5.665090068075801,0.07157264931799195,0.0069695124243939685 +39,28.029478469592917,1.3272877697517365,3.7453450611040196e-05,1.7735437705329637e-06,41.316166091841936,1.6298636680027918,0.04775935181021763,0.0018840381304936033 +40,60.85267617563756,2.4967554911279324,7.119439833832609e-05,2.9210712849458773e-06,58.24048608994043,2.2381906331198893,0.06299528744636801,0.002420918363823705 +42,21.537136809635207,2.82760938052715,3.665375121495202e-05,4.812268765481379e-06,30.90148003682123,3.685675667311236,0.04031294361321846,0.0048081980272752425 +43,62.185184885534284,1.9642192742419466,7.275336273962645e-05,2.298032202077326e-06,59.45672399573429,1.8184294907974763,0.06431082001868091,0.0019668875753687375 +44,67.28423637224662,5.975321407245854,7.871898209291246e-05,6.990808608632756e-06,62.00347866812817,5.355032182818668,0.06706549384463552,0.005792221430299511 +45,14.380988010961161,1.3878642880683594,1.9216126627410848e-05,1.8544884315914635e-06,30.136439928427166,2.041464604664391,0.034836178794164084,0.002359828371862962 +46,56.47520226988218,4.641447598962464,8.547690110199327e-05,7.024969215527278e-06,56.76999319658139,4.650713872924358,0.0698416239588519,0.005721568581631583 +47,41.68474671815817,1.303692702226581,5.569985106089609e-05,1.7420158465678258e-06,48.732764324911216,1.2256205251833852,0.0563325590357128,0.0014167540369751058 +48,0.9381656509138259,0.05372445738640994,1.7837249038055546e-06,1.0214576976916202e-07,15.812347523142105,0.8597194455257232,0.021803214358027487,0.0011854436750222072 +49,33.45478752087507,1.2296516456585427,5.693623389115698e-05,2.0927268977026095e-06,40.10062258585628,1.2647319887424269,0.05231380941082176,0.0016499232168574096 +52,57.15883612253174,4.900649422658998,7.637663225703399e-05,6.548333104136228e-06,63.82946800648272,5.23281249884061,0.07378359106421029,0.0060488628464039655 +53,4.941947434543911,0.8268806287477947,1.0436052565956147e-05,1.7461476111753207e-06,21.938519906242668,2.0145808201051527,0.031880593109987185,0.002927546237733248 +54,79.97961851040743,5.752222973330586,8.115694035908084e-05,5.836897267995567e-06,76.38524633663985,5.4750059665464414,0.07694539832364021,0.005515155545399454 +55,70.15079156369275,7.052698383168905,8.207269306075307e-05,8.251281799526723e-06,64.59361616906159,6.2577232126961455,0.06986708961860703,0.006768608640296083 +56,13.322909376213897,1.507109563266076,1.5587098786661256e-05,1.7632384174954158e-06,32.064617175485715,2.945542802440749,0.03468240187347779,0.0031860196131667227 +57,52.35923482654685,5.739364879303405,6.125751589179134e-05,6.714751208023037e-06,48.525561953824166,5.139533403044051,0.05248722576590783,0.005559128821912357 +58,49.74086928045618,3.363346599333538,5.8194174583650534e-05,3.93493684405405e-06,48.79280982893773,3.072957915763476,0.05277629509724866,0.003323836736444211 +60,45.682876356710615,4.929441404214104,6.104221830364863e-05,6.586801495630433e-06,45.5920838581519,4.784683998362735,0.05270209459855406,0.005530847624566601 +61,66.7527523155093,5.305116269799922,8.919612666757681e-05,7.088783703639952e-06,57.203232868066024,4.3190849315625055,0.0661239795859765,0.004992638868915617 +62,51.20617235296455,4.279649940015467,7.750206735178293e-05,6.47737768030869e-06,53.4528243594244,4.44507282247258,0.06576065714015779,0.005468577448332994 +63,58.2945350236022,5.81717955867183,7.789413825590824e-05,7.773013175577547e-06,52.66511866757536,5.1611466534584975,0.060878162331239605,0.005966019478050213 +64,71.37835357192431,4.943242828572972,8.350888171731617e-05,5.78333150056914e-06,66.13174271197445,4.579867632844314,0.07153079277251521,0.004953771806639803 +65,33.03707571023349,3.7382463493856184,3.865164829915289e-05,4.373552442091248e-06,39.99354134300499,4.453288427469041,0.043258660950912665,0.004816860116194742 +67,22.383485463345366,2.4205029224638235,2.618748685672375e-05,2.831859612413071e-06,35.45218780509604,3.6611406506144557,0.038346532203297104,0.003960039042764148 +68,59.20355585735416,4.7716156836967105,7.910878718437311e-05,6.375913138674938e-06,63.629374728455716,4.986375998374594,0.07355227713820964,0.005763993610073092 +70,84.41275639524054,7.323915284084283,8.565534232896172e-05,7.431725933805962e-06,68.03904050666505,5.641519109130843,0.0685379905269126,0.005682890005204139 +71,40.75938347611847,4.6056177234818,5.446335926711312e-05,6.154102229439813e-06,41.487142023049685,4.5244831573904385,0.047956991146633286,0.0052300685981577924 +72,81.66224790264314,7.084817507419924,0.00010911844441406885,9.46685016911224e-06,74.52459208083998,6.266917847133761,0.08614657694657063,0.007244233151257258 +73,46.97495314848562,4.150403958591455,8.931282547581215e-05,7.891105356424364e-06,53.092016743317416,4.639021883398794,0.07320705888139575,0.006396614199305299 +74,59.74714928383472,6.129209904080076,7.983513343438543e-05,8.189952096542662e-06,56.32264885605274,5.572727654072392,0.06510607361769219,0.006441785396575783 +75,1.598651294907113,0.11517582478093147,2.7207233003176715e-06,1.9601619885028966e-07,18.602084791950666,1.1860383304029811,0.024267606024317344,0.0015472626457660862 +77,36.62156836993086,4.1703822837505236,4.893437742626569e-05,5.572537435409822e-06,48.24548229026312,5.375386902222219,0.05576930291254874,0.006213671543764 +78,29.636339933724045,3.3999565951801793,5.0437661292899284e-05,5.786337298794387e-06,32.100092509337244,3.4695039824256657,0.041876605495470114,0.004526187876086026 +79,77.25335600582294,6.127830820133581,9.038232245655956e-05,7.169236519677038e-06,68.52204732919374,5.017132649950778,0.07411624383165595,0.005426735500663993 +80,62.12697849686431,4.998035186496232,7.26852764514261e-05,5.847436621479496e-06,63.5999050602217,5.012665873117301,0.06879225952836374,0.005421904503567123 +81,84.18336919848605,2.686193307444012,7.328473254167192e-05,2.338430499581426e-06,68.22733711165327,1.976757738188397,0.06365785831684838,0.001844365753545403 +82,37.61408824955905,4.282985157962108,4.400647978022728e-05,5.010864506468066e-06,38.80001951492727,4.182832222074506,0.0419676826399148,0.004524321828356214 +83,37.3613620419326,4.042058105521362,4.371080877361097e-05,4.728993249870536e-06,41.25512871970082,4.170434334924503,0.04462323148060668,0.004510912036329132 +84,66.94836512296996,6.295696456864278,6.793386897736279e-05,6.388371358080027e-06,72.74891210382019,6.676133839915493,0.073282400978691,0.006725091865922268 +85,16.04574595919682,1.6336817821913359,1.6281945072653157e-05,1.6577301617185085e-06,32.95660875593026,2.8323204619509355,0.033198289127722866,0.002853090689474935 +86,54.28752909933302,3.84092351983265,6.351356579442904e-05,4.493679353906313e-06,52.939705179345204,3.568075275395935,0.05726176478230567,0.00385937712446871 +87,46.70664374205604,1.5584965583905261,6.241020300856926e-05,2.0824893163909347e-06,50.369023294862025,1.457990930166669,0.058223994442425715,0.0016853623569030092 +88,65.75873029714259,6.338162109282551,8.786792153372063e-05,8.469158823016994e-06,64.80595579810146,6.220742869990142,0.07491234420282365,0.007190858082948214 +89,61.16262194933814,2.7465995652582897,7.155701842774383e-05,3.2133755787581548e-06,53.34985304592891,2.3551558109088186,0.0577053790838857,0.0025474326752710783 +91,26.496267942978616,1.9740369281634644,4.509364474515422e-05,3.35958709898266e-06,36.680644210050765,2.687968483543622,0.04785223980877928,0.003506626321402662 +92,34.5995200590322,3.424266901261162,4.047959454373668e-05,4.006209783722263e-06,36.9099105637183,3.565454940435814,0.0399232632517657,0.003856541346899103 +94,44.4144692000276,5.126746572367728,6.722262229652754e-05,7.75948366943624e-06,44.831030583930776,4.98417515912689,0.05515364373725573,0.0061318113251025265 +96,57.560138015840536,5.685807939379934,5.840743375010762e-05,5.769504069704928e-06,55.492753940507974,5.308800567235007,0.05589969358665771,0.005347731081057158 +97,57.544049389648926,2.2605551344035466,5.8391113527605e-05,2.2938311239547814e-06,60.68916310895485,2.1838112362848077,0.06113421181842748,0.0021998256665826097 +98,59.307933964393435,5.291337555724581,8.976432491223693e-05,8.008597026116968e-06,59.268911890030246,5.215612253712844,0.07291593364015218,0.006416538196113933 +99,84.27547476233224,7.105122154471195,9.859782075927348e-05,8.3126148222236e-06,72.21658408368367,5.865123216034689,0.07811240260831025,0.006343956472205381 +100,29.687471861191685,2.0585903137954014,4.493289186966563e-05,3.1157390702111748e-06,37.34453190513251,2.498524190880191,0.04594334352470446,0.0030738249845519276 +101,50.164794558848826,2.854574105539793,7.5925942771951e-05,4.320484755922841e-06,53.416650227395714,2.9491146744647585,0.06571616743170199,0.003628166740096689 +102,53.29374067552988,1.6021540394495308,6.235084537025086e-05,1.874435112018851e-06,52.52260906571691,1.2929743837458292,0.056810598222317064,0.0013985338796636128 +103,1.3489001325351777,0.09682389357051299,2.5646441160299294e-06,1.8408985435417209e-07,16.602132769985353,0.9839133935898835,0.022892200356541666,0.0013566897007512798 +104,62.14019471546058,2.4600484441183945,8.303277342302137e-05,3.2871581108727607e-06,59.83821354367979,2.159353032237857,0.06916989024020422,0.0024961007921921927 +105,95.6188063083289,9.039424321240705,9.70263369180765e-05,9.172486706328595e-06,74.86026820968827,6.983513412400134,0.07540923545947716,0.007034725093089421 +106,42.210671386770564,4.049147131523641,5.640260912184288e-05,5.410538506803702e-06,49.294861064963285,4.563475342534108,0.05698231827694274,0.005275142252142027 +107,54.52768157571368,3.4083245056173896,7.286080531756714e-05,4.554260534955298e-06,50.81474206160534,3.0705196156378554,0.058739222360303475,0.0035493623926294033 +108,60.52410899515532,6.312732654238973,7.081000397453975e-05,7.385563071612494e-06,63.75758455692329,6.465191589233407,0.06896281212351506,0.006993015748781508 +109,68.71506305701543,6.552832236409422,9.181820879934941e-05,8.756003294510852e-06,66.47489707660148,6.313152948426793,0.07684154830606171,0.0072976788018352294 +110,38.57601135972646,1.6427272428196142,4.513188394740937e-05,1.9219036045179222e-06,44.99835043553241,1.453619678873063,0.0486720529069963,0.0015722943892826193 +111,36.67731676579148,4.634166146457991,4.9008847602156636e-05,6.192250755013271e-06,40.224508109769225,4.963619431486486,0.04649745783082148,0.005737688191834873 +114,35.48945902998482,4.258416610426264,4.74216013140563e-05,5.6901666085744105e-06,35.82592176361299,4.103140780693136,0.04141291404242892,0.004743018688423916 +116,64.53863514154604,4.408865596618124,6.548866690964702e-05,4.473765673430849e-06,53.933743488165845,3.4536198240272635,0.05432925527382678,0.00347894621999484 +117,42.26001615569936,2.954250729203487,8.034854311572954e-05,5.616887159142015e-06,52.11295767881642,3.575404382964265,0.07185713477642225,0.0049300275031464915 +118,103.9499086654101,9.977380194856135,0.00010548007499958541,1.0124249504059449e-05,79.82328626633517,7.50163760428795,0.08040864844815367,0.007556648806665742 +119,9.487161623982757,1.0499379678004368,1.267691058237527e-05,1.402945397409531e-06,29.60505141394752,2.6476174174346307,0.0342219209274903,0.00306050993253832 +120,39.803352541485985,4.639622698473768,5.318590918788289e-05,6.199541891600007e-06,42.959179026276075,4.846251812347289,0.049658596440011055,0.005602017274325173 +122,48.98632865667196,4.813081523536677,7.41422987755142e-05,7.284745318434062e-06,53.65648885079557,5.187070667847342,0.06601123039549393,0.006381426072904557 +123,54.109153599243946,3.5018967452968637,7.230154993831767e-05,4.679292607017438e-06,55.77788417771532,3.3955384063465543,0.06447635378077898,0.003925067054646216 +125,104.28870514283255,8.426998810390216,7.690216474271921e-05,6.2140425457940025e-06,80.76793982506996,6.401149192487401,0.06935689627990552,0.005496783025258564 +126,18.008277074479345,1.0004436757790824,2.7256075233685406e-05,1.51420194065888e-06,35.68270581525143,1.545105348319121,0.043898871602558634,0.001900875501131325 +128,79.39406602048325,4.413776058530684,8.05627894327286e-05,4.478749219304209e-06,66.23418976324677,3.4348174985014714,0.06671991024979705,0.003460006320657325 +129,53.46709352090576,4.6059362050640225,7.144366150046421e-05,6.154532170308856e-06,58.635656088512434,4.883615778252965,0.06777981088886836,0.005645209348458699 +130,32.894047374809865,3.5406396903307837,4.39535725610839e-05,4.731061573796595e-06,33.401626997500976,3.485359343173008,0.038610555973812195,0.004028895419330892 +131,48.14511974971248,3.349318403632292,8.193753667039574e-05,5.700160285094965e-06,61.764372790971095,4.230407711441945,0.08057556354537915,0.005518836668668989 +132,56.94538258102278,4.74121569373512,7.609137806838758e-05,6.335292160737854e-06,53.121132980507994,4.268098510682875,0.061405291369784315,0.0049337018609823735 +133,80.38175734570504,6.075987738190555,9.404237858568086e-05,7.108582320480982e-06,71.65168416518917,5.277729609125131,0.0775013838177273,0.0057086075908556536 +134,62.35026378238889,5.803282891333765,8.33134522680819e-05,7.754442448756351e-06,59.40653380560084,5.2881530318364165,0.06867088289543254,0.006112831608231754 +135,68.00113356278577,2.3441542679845004,7.955770759357061e-05,2.7425357495598113e-06,61.62782710583062,1.8900121826200025,0.06665917121180495,0.0020443142585136564 +136,53.24175481243696,6.330626046907266,6.22900246721715e-05,7.406496161543325e-06,46.99275127777142,5.4719920517774545,0.050829278280186053,0.005918729999499465 +137,81.84899684477168,6.817351665953486,9.575896671438141e-05,7.975938330659862e-06,74.29917509650255,5.892155329352902,0.08036501630257815,0.006373195375126834 +138,7.522461688812619,0.9838491374137059,1.005163984198351e-05,1.3146357664853313e-06,27.688384131360035,2.3171333344321168,0.03200634473983343,0.0026784866880691922 +140,54.21229112881753,5.6207431812211,9.22631255609105e-05,9.565862705237508e-06,55.30751377328182,5.676666529557577,0.07215215995073124,0.007405571566759959 +141,77.41248975241376,4.752005696570745,7.855202276398796e-05,4.821956519490275e-06,65.82147974730985,3.925437905124919,0.066304165009661,0.003954224116440016 +143,49.112338506107946,2.193212772948186,7.433301851634268e-05,3.3194942578749642e-06,52.54404470228226,2.1600575433396743,0.06464263903660289,0.0026574242783089924 +144,61.170487761029314,3.387474222294758,7.156622100955274e-05,3.9631648811431685e-06,57.506265117054944,3.0409862255372224,0.062201124067225784,0.003289254851038263 +145,21.375696817446233,2.231043017108444,3.235274920882361e-05,3.3767495779456915e-06,28.302671163736658,2.682878254283017,0.03481952807383489,0.00330062679078081 +146,35.580247792922044,3.4777528740046924,3.610402663373602e-05,3.52894907082674e-06,41.19426299553102,3.9773228778483687,0.041496366773901894,0.004006491120749796 +147,40.0786709980159,5.301971264208152,5.355378600239167e-05,7.084582083280403e-06,41.2637742145192,5.195782234186251,0.04769879216122144,0.006006055956369926 +148,79.41772219986936,6.9175823373701455,0.00010611927974607105,9.24338843889771e-06,74.31015057919899,6.369989878792751,0.08589869674837214,0.007363379358321256 +150,29.79626840353003,1.117389090794966,3.981438838874501e-05,1.4930783492669444e-06,40.74858733978344,1.4002166160024754,0.04710333345706307,0.001618580532024783 +151,31.198902787561106,3.40981817523852,4.7220468823096906e-05,5.1608613909485015e-06,35.94654265402648,3.7828153610009774,0.04422344927838623,0.004653831242042645 +152,59.42586932936722,5.884796600690786,7.94058338218992e-05,7.863362980189587e-06,59.59519030921153,5.690517392450616,0.06888896254592501,0.006577944251566092 +153,71.80634064437203,8.767725984910182,8.400959175139853e-05,1.0257772140602232e-05,59.29542106959619,7.041563649972471,0.06413634356818948,0.007616442169823425 +154,15.367120622182405,1.7051070833856496,2.921728194208958e-05,3.2418951878870233e-06,26.37869494182532,2.7323278697743283,0.036372818969625076,0.003767527817131881 +156,46.21761942085536,4.509892854376381,6.995177311225894e-05,6.825860043487629e-06,50.32974647630617,4.691628191572958,0.06191848481984645,0.005771904873334349 +157,64.9722631744674,7.612250596095024,7.601414506071516e-05,8.905934513875365e-06,62.4955727049211,7.1432408760772015,0.06759778453698102,0.007726423436692495 +158,40.65279853590325,1.7894149039877147,4.75616146146015e-05,2.0935203753297235e-06,47.64181933715522,1.9659194023516389,0.0515313367916826,0.0021264186850412353 +159,22.050590154791095,2.138172553016319,2.9464369472133912e-05,2.85706213099064e-06,38.18386168226351,3.478423121465989,0.04413857575446069,0.004020877818238339 +160,74.73213648294407,4.094256264065211,8.743262955411226e-05,4.790062322349317e-06,63.61518687596935,3.183658580626295,0.06880878324087843,0.0034435750949594205 +161,4.181777963592859,0.4613685244090738,6.32924460234126e-06,6.982949042797594e-07,23.655010493251158,1.7739911003079891,0.029101716131018168,0.002182463010736976 +162,29.598669686114363,2.9071421940901705,3.462887687091129e-05,3.401202491631145e-06,43.19802272788136,4.027139300482611,0.04672474884663313,0.004355918639396586 +164,23.124334000066586,0.9963611392999256,3.499936329161535e-05,1.5080220465551773e-06,37.23184877582702,0.9875103027229971,0.04580470147820238,0.0012148903723589379 +165,72.61626966629937,3.045503342146517,8.495717124058257e-05,3.563076844094431e-06,63.14775456578867,2.478022510393874,0.06830318674084314,0.0026803302103024164 +166,106.83846798410707,9.816188439797811,9.300683289257176e-05,8.545354637601883e-06,84.76300170183609,7.4537480566013485,0.0790860581883189,0.006954538427025454 +167,81.67266588025196,7.869585142324063,9.555266646756928e-05,9.206995219736669e-06,68.22992451005504,6.272391805370721,0.07380026654793975,0.0067844745608835345 +168,6.220492611235887,0.6866887393002867,9.414899505984778e-06,1.0393237121969822e-06,25.19949932646016,1.8985581462049466,0.031001832624494238,0.0023357123534082473 +169,11.76569403929621,1.181450425360136,1.3765239266099264e-05,1.3822344633304625e-06,31.112255236113747,2.4804677172376017,0.03365228823358828,0.002682975372280253 +170,57.38903073649236,4.312859418128456,7.66842223090835e-05,5.762917863627284e-06,65.51295400770327,4.717243128871287,0.07572961453198795,0.005452891099386028 +171,54.2121417622394,5.649687595906064,6.34253258518131e-05,6.60983434860122e-06,50.0492534847986,5.109453280345668,0.05413531585025012,0.005526593263526322 +173,50.15094839771713,5.662562381832287,5.867394536546858e-05,6.624897164164277e-06,49.109034671196234,5.406461284375826,0.05311833679664302,0.0058478492461576815 +175,49.458325338868754,5.150002497876035,6.608707564229895e-05,6.881523025764196e-06,56.88229516463099,5.992694600596129,0.06575301559453041,0.006927247580039021 +176,49.44393716917436,3.8197401267511117,5.784678941323004e-05,4.468893768904645e-06,52.620667887053315,3.80720741360217,0.056916667382040737,0.004118031311946709 +177,49.35146795550623,5.488335474992379,5.773859572033249e-05,6.421060938933794e-06,52.11002153492478,5.659880854559052,0.05636432670495885,0.006121958199224692 +178,38.52404127555214,2.382788384603337,3.35366055929684e-05,2.0743055925615144e-06,45.513342994392204,2.7296441832232508,0.042465121197982486,0.0025468283242174794 +179,32.179282662644404,1.4454530254757902,4.87043233281895e-05,2.1877371303309638e-06,40.6533737708407,1.6035978843118648,0.05001406688766788,0.0019728363087154854 +180,61.22186460460808,3.0860327180606246,7.162631886736637e-05,3.610493815020104e-06,57.70743058509863,2.673624122616777,0.06241870835353757,0.0028919007944826543 +181,39.01076301107285,1.8839924703263076,4.5640516768318855e-05,2.2041709337730166e-06,43.134989455505476,1.595181103139618,0.04665656380187226,0.0017254129386294625 +182,56.85778191820166,2.893375248408679,5.769474141960106e-05,2.9359663911436065e-06,51.83135126519515,2.4323786567092704,0.05221144226723639,0.0024502158386156803 +183,20.208337041592895,2.170407645811726,3.0585915669445045e-05,3.2849761505107774e-06,29.768279115472293,3.0087430357048164,0.036622600897790826,0.0037015238594478935 +184,56.83153461709193,1.5794906066909817,5.766812541524669e-05,1.6027415591108402e-06,55.401592454645034,1.418463291040632,0.05580787338808618,0.001428865421456067 +185,53.317105327117645,4.447256393092118,9.07396698899299e-05,7.5687262942951486e-06,60.76504266268975,4.887616470886952,0.07927187365725134,0.006376207411159264 +186,49.86482632388414,2.4819996161793245,5.8339197739266244e-05,2.9038076951591343e-06,54.872577240902935,2.51294150960626,0.05935241973900303,0.0027181001286474362 +187,55.45571755332422,4.009134701421482,8.39338806117649e-05,6.067944807711234e-06,61.34638088131701,4.3102257339615235,0.07547175230254305,0.005302681010489095 +189,7.163502671379355,0.946808671770677,9.571992764931931e-06,1.2651416732449757e-06,27.60693331043392,2.3025156217318643,0.031912191789573295,0.0026615893657201337 +193,28.101988431570245,1.9075229598427133,4.2533190462067675e-05,2.8870924048424618e-06,35.92438727590241,2.300350299523548,0.04419618925903017,0.002830019519024787 +194,51.50350309865452,2.690912920272132,6.0256362511346944e-05,3.148225162467068e-06,52.89509457902915,2.701436647451345,0.05721349376038787,0.002921984165131206 +195,58.68195360837749,5.888954299708472,8.8816922118343e-05,8.913111497382374e-06,64.39566583290403,6.355347031768656,0.07922316992428469,0.007818705363371517 +197,56.01895940529496,2.695460070286345,7.485345878903744e-05,3.601718265220112e-06,53.67819908938798,2.4547733614802545,0.06204922400905247,0.002837591140945256 +198,61.169672127064075,6.947581509716685,8.173593208945038e-05,9.283473831354335e-06,54.612775193786604,6.038631394237074,0.06312954796072306,0.0069803460612818105 +199,71.68792089330172,4.1223003383970545,7.274320569886361e-05,4.182982819585871e-06,69.94356913730401,3.982746306285074,0.07045649191259379,0.004011953298634644 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/X_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/X_data.csv new file mode 100644 index 00000000..65a57991 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/X_data.csv @@ -0,0 +1,301 @@ +1,2,2,0,1,1,1,1,0,1,2 +2,1,1,1,1,0,0,1,0,0,0 +0,0,1,2,0,2,2,1,1,0,2 +0,1,2,1,1,0,2,2,1,1,1 +1,2,2,0,0,1,1,2,1,1,2 +1,2,0,2,1,0,0,0,2,0,0 +0,2,2,1,0,0,2,2,1,2,0 +0,2,0,1,1,0,1,2,1,0,2 +0,0,2,2,0,2,1,1,2,1,1 +0,0,2,1,1,1,1,1,1,1,2 +0,0,1,2,0,2,0,0,0,1,1 +2,2,2,1,0,2,1,2,1,1,2 +0,2,2,0,0,1,0,1,1,1,2 +1,1,2,0,1,0,0,2,1,0,0 +1,0,1,0,2,2,1,2,1,0,0 +2,2,1,2,2,1,0,0,1,2,0 +2,2,0,2,2,2,1,0,0,2,2 +2,1,2,2,2,0,2,1,1,0,0 +0,0,1,0,1,0,1,0,1,0,2 +1,0,0,0,2,1,1,0,0,2,0 +2,1,0,1,1,2,0,1,2,0,2 +2,0,1,1,1,1,1,0,2,2,0 +1,2,0,2,0,1,0,0,1,1,2 +1,0,1,2,0,1,0,0,1,1,2 +1,0,0,2,2,1,1,2,2,2,0 +2,2,0,2,2,2,1,2,1,2,2 +1,0,1,2,2,0,1,0,0,0,0 +2,0,2,2,1,2,1,0,1,1,2 +2,0,1,0,2,0,2,0,0,2,1 +2,0,1,2,0,1,0,1,1,2,2 +2,0,0,0,1,1,0,1,0,0,2 +2,2,1,2,1,2,0,0,1,0,1 +2,1,2,0,1,0,2,1,1,0,0 +1,0,1,2,0,0,0,0,0,1,2 +2,1,0,1,0,0,2,1,2,0,2 +0,2,0,0,0,0,0,1,2,0,0 +0,0,0,2,2,1,2,0,1,2,2 +2,0,0,1,0,1,0,0,0,0,0 +2,1,2,1,1,0,0,2,0,1,1 +2,0,2,1,1,1,0,0,2,2,2 +1,1,1,1,0,0,2,0,2,1,1 +1,2,2,0,1,0,2,1,1,0,2 +1,1,1,2,0,0,0,1,0,1,1 +1,0,1,2,2,0,1,0,0,1,2 +1,0,0,1,1,0,2,1,0,1,1 +2,0,2,0,1,0,0,1,2,0,1 +1,0,0,2,0,0,1,2,2,1,2 +2,2,1,0,2,2,1,0,0,1,1 +0,0,1,0,2,2,1,2,2,2,2 +0,2,1,2,2,0,2,0,1,1,2 +2,1,2,1,1,1,0,1,0,2,0 +0,0,2,2,2,1,1,2,0,0,1 +1,2,1,2,2,0,2,1,2,0,1 +0,0,1,0,1,1,2,2,1,1,0 +0,0,0,1,0,0,0,0,2,1,2 +0,1,2,0,1,1,2,0,0,2,1 +1,0,2,1,0,2,0,2,0,0,0 +2,1,0,2,2,0,1,2,2,1,2 +2,2,2,0,0,1,1,0,0,2,2 +1,0,0,0,2,2,1,2,1,1,2 +2,0,2,2,1,1,0,2,0,1,2 +2,1,2,0,1,2,1,2,1,1,1 +0,1,1,1,0,0,2,2,2,1,2 +0,0,2,2,2,1,1,2,1,1,2 +2,1,1,0,1,1,2,0,2,2,2 +0,1,2,1,0,0,2,0,1,2,2 +0,0,2,1,1,0,2,2,0,2,1 +1,0,1,2,2,0,2,1,0,2,1 +2,0,2,0,1,2,1,2,1,1,1 +2,1,1,1,1,1,1,1,0,1,0 +0,2,2,2,1,1,0,1,2,1,1 +0,0,1,2,0,1,2,0,0,2,1 +1,2,2,1,0,0,0,1,2,1,1 +0,2,0,0,1,2,1,2,0,2,0 +2,0,2,1,0,2,2,0,0,0,1 +1,1,0,0,0,2,2,1,1,2,2 +1,1,0,1,0,0,0,0,0,0,2 +0,0,2,0,2,0,1,2,2,1,1 +1,1,2,0,2,2,1,1,2,2,2 +1,0,2,1,0,2,1,1,0,1,0 +0,1,2,1,1,2,1,0,2,1,1 +1,0,2,1,1,2,2,2,0,2,1 +1,0,1,2,2,1,2,1,1,1,0 +0,2,1,2,1,0,0,0,2,2,2 +2,1,2,1,0,0,2,2,0,1,0 +2,2,2,0,1,1,1,0,0,0,1 +1,1,0,2,0,0,0,1,1,2,0 +2,1,2,1,2,2,1,1,2,1,1 +0,2,1,2,0,0,1,0,2,2,0 +2,1,2,2,0,2,2,0,2,1,0 +1,0,0,2,2,2,2,1,2,2,1 +2,0,0,2,0,0,2,1,1,2,2 +1,0,0,1,2,1,2,2,0,1,0 +0,0,0,2,2,0,0,2,1,0,1 +1,2,2,0,1,0,2,0,0,2,1 +1,0,0,2,2,0,1,2,1,1,1 +0,0,1,0,1,1,2,1,0,2,1 +0,2,1,1,1,2,2,0,0,1,1 +0,1,2,1,1,1,2,1,1,0,0 +1,2,0,1,2,1,0,0,0,2,2 +2,0,0,1,2,0,2,1,0,1,2 +0,1,2,1,0,0,0,1,0,0,1 +2,1,1,2,0,0,2,1,1,2,1 +0,2,1,1,2,0,2,2,0,2,2 +1,0,0,1,0,1,0,2,1,0,2 +2,1,0,0,2,2,1,2,2,2,2 +2,1,0,0,2,2,1,1,0,1,0 +0,0,1,2,1,0,2,1,2,1,0 +1,2,2,1,1,1,1,1,0,2,0 +2,2,2,0,2,2,0,2,0,1,0 +1,2,2,1,0,0,0,0,1,0,2 +0,0,1,2,1,2,1,2,0,1,0 +1,0,1,0,1,1,1,2,1,1,0 +2,0,0,1,1,0,0,1,0,0,0 +2,2,2,0,2,1,0,2,1,2,0 +2,1,2,2,1,1,2,0,0,0,0 +1,0,1,1,0,1,0,0,0,2,2 +0,0,1,2,1,2,2,0,0,0,1 +2,1,1,2,2,1,0,1,1,1,2 +1,2,1,0,1,0,1,0,1,1,1 +0,2,2,0,2,2,0,1,2,0,1 +0,1,0,1,2,0,1,2,2,1,2 +0,0,0,2,1,2,0,0,1,0,2 +2,1,1,2,0,0,1,2,0,1,2 +2,2,1,1,1,0,0,0,1,1,1 +2,0,2,2,0,1,0,1,0,2,2 +2,2,2,1,0,1,2,2,1,0,0 +0,2,2,2,0,2,1,0,1,1,1 +1,2,1,2,1,1,2,2,2,2,0 +1,2,2,0,0,0,0,1,0,2,2 +0,1,1,2,1,1,1,1,0,0,1 +1,1,0,1,1,2,2,2,0,1,0 +1,1,1,1,1,2,2,2,0,0,1 +2,1,1,1,0,2,0,0,1,0,0 +2,1,2,1,2,0,2,0,1,2,2 +0,2,0,0,2,0,1,0,2,0,1 +2,2,0,0,1,1,2,2,1,0,1 +0,2,2,0,0,1,1,0,2,0,1 +0,0,0,0,1,2,0,1,0,2,0 +2,1,0,1,2,1,0,0,2,0,2 +2,0,2,2,0,1,2,1,2,1,2 +2,0,2,0,0,0,2,2,2,2,1 +1,0,2,1,1,2,0,2,0,1,0 +0,1,1,1,0,0,0,2,1,2,0 +0,2,0,2,1,0,0,2,2,0,1 +1,0,0,1,2,2,0,0,1,1,2 +1,2,2,2,0,0,2,0,1,2,1 +1,0,0,1,1,0,2,0,2,1,2 +0,2,0,1,1,2,0,2,2,0,0 +0,0,0,1,2,0,1,0,0,0,2 +2,0,2,1,1,1,0,2,1,0,0 +1,0,1,2,1,0,0,2,0,2,1 +0,1,2,2,1,1,2,0,2,1,0 +2,2,0,0,2,1,2,2,0,1,2 +0,2,0,1,1,0,1,1,2,0,1 +2,1,2,1,1,1,0,0,0,2,1 +1,1,1,0,0,2,1,1,0,1,2 +1,2,2,0,1,0,1,2,2,0,0 +2,0,1,0,2,2,1,1,1,0,0 +0,1,0,1,2,1,2,0,1,2,1 +2,2,1,2,2,0,1,0,1,1,0 +2,0,2,2,2,1,1,1,0,1,2 +1,2,2,1,0,1,1,1,1,2,1 +2,2,2,1,1,2,0,1,2,0,0 +0,2,0,1,1,2,0,1,0,2,2 +1,0,0,2,2,1,0,2,1,2,1 +2,1,2,1,0,1,2,0,1,0,0 +0,2,1,1,2,2,2,1,1,0,1 +1,0,0,1,0,2,1,0,2,2,0 +2,0,2,2,0,0,0,0,2,2,1 +2,0,2,0,0,1,1,0,1,2,0 +1,1,1,1,1,1,1,0,0,0,0 +1,0,1,0,1,2,2,0,1,0,0 +1,2,2,2,1,2,1,0,2,1,2 +2,2,1,0,0,2,0,0,0,0,1 +2,0,2,0,0,2,1,2,0,1,0 +0,0,2,1,0,0,0,2,0,0,2 +1,1,1,2,0,0,2,1,0,1,0 +0,2,0,2,0,1,0,2,1,1,0 +1,2,2,0,2,1,1,0,0,1,2 +1,0,2,1,1,0,1,2,1,2,0 +2,2,2,0,1,2,0,0,1,2,2 +1,0,1,2,1,0,1,1,0,2,2 +1,2,0,2,0,1,2,1,1,1,2 +2,1,2,0,2,2,2,2,2,2,0 +0,1,0,2,1,0,0,2,1,0,1 +1,0,1,1,2,2,0,0,1,0,2 +2,0,2,0,2,2,2,2,1,2,1 +2,0,0,0,1,2,2,2,1,0,0 +2,0,0,0,1,1,1,2,2,2,0 +2,1,1,1,2,0,2,0,0,2,2 +2,1,0,2,2,0,1,1,2,0,0 +1,1,2,0,1,1,2,2,2,2,0 +0,0,0,1,0,0,2,1,0,0,0 +0,0,2,0,0,2,1,0,1,2,2 +1,2,0,2,0,0,1,2,2,1,1 +1,2,1,1,2,2,2,1,0,1,2 +2,2,2,0,1,1,2,2,2,0,1 +2,1,1,2,1,1,2,0,0,0,1 +0,2,0,2,2,1,0,2,2,2,2 +1,2,2,0,1,2,0,0,2,0,1 +2,1,2,1,2,1,0,2,0,0,0 +1,0,2,1,1,2,2,1,2,2,2 +0,0,2,0,1,0,2,0,0,1,0 +1,2,0,2,2,0,2,0,0,0,0 +1,0,0,2,0,0,0,2,1,2,1 +2,1,1,2,0,2,2,0,2,1,2 +1,1,2,1,1,2,0,2,0,0,1 +1,2,0,0,0,1,2,0,0,1,1 +2,0,1,1,2,0,0,2,2,0,1 +0,1,1,0,1,1,2,0,1,0,2 +1,1,0,1,1,1,2,2,1,0,2 +2,1,0,0,2,1,0,0,1,0,1 +2,1,0,0,0,0,1,1,0,2,1 +2,1,2,0,0,0,0,1,1,0,1 +1,0,0,2,0,1,1,0,1,1,0 +2,1,1,1,0,0,0,1,1,2,2 +1,2,1,1,2,0,0,1,1,1,1 +2,1,2,1,2,0,0,2,1,1,0 +1,1,0,1,1,2,1,2,2,0,1 +0,0,2,0,2,1,2,0,2,1,1 +2,1,1,0,2,1,2,0,1,0,0 +0,2,1,1,2,0,0,1,0,0,1 +2,1,0,1,0,1,1,1,2,0,0 +2,2,2,0,0,1,2,1,1,2,2 +0,0,1,0,0,2,0,0,0,2,0 +0,1,1,0,0,1,2,1,1,0,0 +0,2,2,0,1,0,1,0,0,0,2 +1,0,1,2,2,2,0,2,0,2,0 +2,1,0,0,2,0,0,2,1,1,1 +0,0,0,2,1,0,1,1,0,0,2 +2,1,1,2,1,0,2,2,1,0,0 +0,1,1,0,2,2,2,2,0,2,0 +2,1,1,2,0,1,0,0,0,2,2 +0,0,0,0,2,2,1,1,1,0,1 +0,0,2,1,2,2,1,0,0,0,0 +1,1,1,0,0,0,2,1,1,2,0 +1,0,2,0,1,2,2,0,1,0,2 +0,2,1,1,2,1,0,1,1,1,2 +1,2,2,0,0,1,1,0,1,2,2 +2,0,1,1,0,0,2,2,1,2,2 +1,1,1,1,0,0,0,0,1,0,0 +2,0,1,2,1,1,0,0,2,1,2 +1,1,2,2,0,2,1,0,0,0,0 +0,2,2,1,1,2,0,1,0,0,0 +0,1,2,2,2,2,0,0,2,0,2 +0,0,0,0,2,0,0,2,0,1,0 +1,0,1,0,0,1,2,1,1,2,2 +2,2,1,0,0,1,2,1,0,0,2 +2,0,2,1,0,1,0,2,1,1,0 +0,1,1,0,0,2,2,2,0,1,1 +2,2,2,0,2,1,0,0,1,1,1 +1,2,2,2,1,2,0,1,2,1,0 +0,0,1,1,2,1,0,0,0,2,1 +0,0,2,0,0,1,2,1,0,1,1 +1,0,1,2,0,1,2,2,2,1,1 +0,0,1,0,2,1,2,2,2,2,2 +0,1,0,0,1,1,1,2,1,1,0 +1,1,1,1,0,1,1,2,2,0,1 +2,1,1,2,2,2,1,0,1,0,0 +2,1,0,2,0,2,2,0,1,2,1 +2,2,2,1,1,2,0,0,2,2,2 +0,1,1,1,1,1,1,2,2,1,0 +0,2,2,2,2,0,0,2,1,0,1 +0,2,1,1,1,2,0,2,1,0,1 +2,0,0,1,2,0,0,2,2,0,0 +1,1,2,0,0,2,2,1,2,2,0 +0,0,2,0,0,1,2,2,2,2,0 +2,2,1,0,0,1,2,1,1,1,1 +0,1,0,2,1,0,0,2,1,1,1 +1,2,0,0,0,1,1,2,0,0,2 +2,2,1,2,0,1,1,0,1,1,0 +1,1,0,2,0,0,1,2,0,1,1 +1,1,0,0,2,0,1,2,0,2,1 +2,0,2,1,1,0,2,1,2,0,2 +0,0,1,2,2,1,0,0,2,0,1 +2,0,1,1,1,2,0,2,2,2,2 +2,0,1,0,2,2,2,2,1,1,2 +0,2,0,0,2,1,1,0,2,0,0 +0,2,1,0,1,0,2,1,1,0,2 +2,0,2,1,1,1,0,2,0,0,0 +2,0,0,0,2,2,0,0,2,0,1 +1,2,2,2,2,0,1,2,2,1,0 +2,1,1,0,0,1,2,2,0,2,2 +1,1,1,2,2,2,0,1,0,0,2 +2,1,0,2,1,0,1,0,0,1,2 +0,0,1,2,0,0,0,0,2,1,0 +1,2,1,1,2,0,0,1,0,1,2 +2,1,1,2,1,0,2,0,1,1,0 +2,0,2,2,2,0,0,0,1,2,2 +1,1,1,1,2,0,1,1,2,1,2 +1,2,0,0,0,1,1,0,1,0,2 +0,1,2,0,0,1,2,0,1,2,1 +2,2,1,0,0,2,0,2,1,0,2 +1,1,1,1,0,2,0,1,2,1,0 +1,0,2,2,2,2,2,1,2,1,0 +1,0,1,1,2,0,2,1,1,2,2 +0,0,0,1,2,1,0,1,0,0,0 +2,0,0,0,1,2,1,1,1,0,2 +0,2,2,2,0,1,1,0,2,2,0 +2,1,2,2,1,0,0,1,1,0,0 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/Y_data.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/Y_data.csv new file mode 100644 index 00000000..d5b7754a --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/Y_data.csv @@ -0,0 +1,302 @@ +sim_id,qoi,qoi_err,qoi_kla,qoi_kla_err,qoi_sum,qoi_sum_err,qoi_sum_kla,qoi_sum_kla_err +0,17.338820036625307,1.504621568901604,0.26528828560031775,0.023021086535762673,37.0771160590263,2.590384166424954,4.586223480296684,0.32041544623195456 +1,10.597655943331029,1.092778160806681,0.1691856625129047,0.017445593450507897,31.43211477913992,2.5229477181729596,3.9714625530689522,0.31877563620772836 +2,12.474378628948209,1.2825944016295003,0.19636548697594317,0.020189965509314577,32.726677145542894,2.502456952602995,4.106057536325839,0.3139711429874244 +3,16.059254635411634,1.0550748828288026,0.24571061475048947,0.01614290973978449,33.374223505090924,1.1262183889758282,4.1281972209501205,0.13930666050833332 +4,15.58267003435941,1.5411112254586703,0.23841882043678628,0.023579394271044194,34.46774971135103,2.6338904063168203,4.2634606687597705,0.32579696229653543 +6,7.26227820844476,0.4618471895982591,0.11756940090956995,0.00747686825460577,25.439075724789262,0.9395901989271344,3.2367714862916444,0.11954989236196535 +7,13.361344436669967,1.3272092039281531,0.21032834858896143,0.020892337699801918,35.54677903611469,2.6731295802528034,4.459889316460897,0.33538515667967417 +9,15.083251960678808,1.4720848658398604,0.23743280739611886,0.023172804069896826,36.8589548821891,2.686470685991622,4.624511755211787,0.3370582618826082 +10,8.95462942883682,0.8822838343656652,0.1389766611799275,0.013693125158066075,27.554423847511462,1.690055915108808,3.4327206486137056,0.21054658479566396 +11,13.877544851036742,1.2763104327186856,0.21232987183680066,0.01952786559236987,35.93722722696279,2.4349724623180538,4.445225475718888,0.3011918964646552 +12,11.043656345668017,0.9012139899775681,0.17878575441856107,0.014589753433780432,27.831182621184404,2.1131816858263806,3.541128403444577,0.2688727888847519 +13,11.754283150122996,1.2007654829276986,0.1772781338648371,0.018109948629279435,32.994577044134985,2.3246013235528915,4.0520246354545995,0.2854815146757893 +14,8.578941327132195,0.6643367610093042,0.13504528924516573,0.010457648167258018,27.57840786252366,1.4944790889737802,3.460127172837823,0.18750493976206256 +16,12.362094007455191,1.2104255762463467,0.1973540349177611,0.01932377890799164,32.08501529278876,2.3732270088886405,4.0539579040151645,0.29985843244614935 +17,13.82955207430303,1.4469439180958337,0.21769770753632714,0.022777048179918654,34.666167197800874,2.6230906364411055,4.349393471051291,0.32910627883997706 +18,15.10866322227264,1.4848400325347466,0.23448809334394685,0.02304487849305996,35.80583520457451,2.818979288315099,4.460681200155409,0.35118767215373115 +19,10.962684472512741,0.9739929025406403,0.17014562669334904,0.01511679308231213,33.46508720043694,1.999692809684587,4.169115233941133,0.2491238019529113 +20,13.090136136200929,1.302964452712956,0.20316033384512397,0.020222149750561625,32.42051625160412,2.5953206303417775,4.038939086788491,0.32332433744380307 +21,15.034094303258533,1.6067424427980324,0.24338668145244843,0.026011524419974813,36.27547876865312,2.6844848354005424,4.615544288231032,0.3415629254101734 +22,9.565553654415027,0.8824012725126623,0.15485674970379273,0.014285194347609144,27.56964962358593,1.961724480980642,3.5078519904786045,0.2496019796889785 +24,12.722374477577146,1.3743748310075072,0.19745240618003654,0.021330422072860872,34.513232283983086,2.7023518144989542,4.299646610913613,0.3366580598740068 +26,10.729669964395917,1.0481268633024423,0.16652536280358102,0.016267015365317928,32.12046270945523,2.543093472788997,4.0015551363036534,0.31681762620261145 +27,14.937833667089699,1.2185924891923514,0.2351437072880238,0.01918245724032468,32.37771545549025,1.8945408308079816,4.062272688126862,0.23769871855574085 +29,17.625754334546706,1.6237069284281218,0.27745542776541027,0.02555954723082045,35.89927189289482,2.795073047004133,4.504103862457908,0.35068397332467866 +30,11.5908051204751,0.9243135786937261,0.17989055371985693,0.01434544708100324,32.25332622745972,2.0943485050203656,4.018110599105033,0.2609133664817957 +31,9.092010545234386,0.8995495482744841,0.13712634670982551,0.013567069970459858,31.160194109448163,2.1502131242435825,3.8267548554790256,0.26406570140777513 +33,8.370462251598445,0.7998123966467671,0.13550941478463696,0.012948163022466822,26.086892701649063,1.8558795273884685,3.3191919280176556,0.2361346909780338 +34,10.4649945236064,1.1750930401935467,0.16011716738680173,0.017979232438900077,30.98740096516362,2.514791578933165,3.8329627469146392,0.31106521160460826 +36,13.153796669146583,0.719895495951242,0.20999405000678475,0.011492786043366168,29.792533776530426,1.0335073879373196,3.764309927276423,0.1305844662124958 +40,12.807076831234413,1.3748444019417796,0.19876699439375536,0.021337709856364472,33.198453004939594,2.5631631756510718,4.135851860403901,0.3193179871049399 +42,12.340270016659181,1.1773505171780752,0.19977663335409646,0.019060127718600498,35.98781146035268,2.7047531225731665,4.578945245505339,0.3441419733043901 +43,13.814184640747337,1.5098150308276144,0.21439739897125856,0.0234324662624199,33.90804040683345,2.762380513951192,4.224252014947403,0.34413641461150696 +47,15.474233610190858,1.4965564073596809,0.24358743976094444,0.02355802251082116,35.156486657480066,2.6288515465502797,4.4109114417138615,0.32982907189273036 +49,12.34682040369392,1.2068775395370035,0.19988267757089243,0.01953814068848483,28.94472835072957,2.054363957505438,3.6828115099477596,0.2613890562953636 +50,11.253938097592913,1.0736066699899431,0.17715391689351667,0.0169001841970682,31.739327595502786,2.265973560948269,3.9821795745364232,0.28430071820823083 +51,7.480210418104828,0.7342337941014727,0.12449392920768548,0.01221993030617419,27.606899844431233,1.955574849020566,3.5615153408561184,0.2522851122084268 +52,9.712781863366041,0.9683053786098328,0.15289429736725946,0.01524263311810661,31.667607110123118,2.209146298866711,3.9731876265027783,0.27717132871039657 +53,7.039937994044074,0.6452313144379033,0.11716442380394014,0.010738468895654113,24.602440794570647,1.7423985806623814,3.1738884499199167,0.22478171074561062 +55,16.960590761335943,1.7180542913085337,0.2632297674827453,0.026664344301899543,35.65893924551784,2.7407079449917973,4.4423772093120615,0.3414363626574345 +56,9.335425615636726,0.9001216272777203,0.14488681897005193,0.013969985368848189,31.118823832453067,2.4938867299215617,3.8767745996506493,0.3106877297490583 +57,15.141244563585165,1.3879015499357852,0.23499329657300091,0.02154034030482379,32.20646740018359,2.452028006290884,4.012268988887207,0.3054726806041373 +58,16.41347126244998,1.6204595355831364,0.25473856317070337,0.02514967901488849,35.762736835535264,2.8875171331657454,4.455309458316512,0.35972589160629825 +59,17.485704744720927,1.5613696668537191,0.2752507612682162,0.024578259538114277,34.55431982351372,2.5900395619143692,4.335358765239908,0.3249593907336177 +60,16.35927636476525,1.639236297947587,0.25751932835048796,0.025804016084990222,33.708730452645725,2.3939269740282363,4.229268592389004,0.3003542414020464 +61,18.73595398907213,1.7840180498394997,0.2949315268596961,0.028083073202000236,36.18256214346029,2.8962320997447755,4.539646236380097,0.3633758466069813 +62,10.73432992682054,0.8246234001641618,0.1713678702939686,0.013164674166351057,29.785748384542458,1.4823702963963712,3.763446498795022,0.18729834247796956 +63,15.968517911980264,1.5791304871018503,0.25136849612640483,0.02485788962495669,34.14565564930459,2.810706515060176,4.284089890583612,0.3526457213250796 +64,12.67025119951776,1.1901889419017821,0.196643448175463,0.018471840362942468,31.72395570019022,2.3317099428538457,3.952159493169173,0.29048362294590896 +65,9.602322487420588,0.9366325753117479,0.14902957647840456,0.014536686952292021,30.086027770722243,2.135961386554784,3.748115297786622,0.2660979245727567 +66,12.529059166625782,1.1032887938638818,0.19445235836911182,0.017123161849256555,31.705815367623778,2.368533843943811,3.949901845269315,0.29507130134649606 +67,12.871383243708092,1.3782233545631883,0.19976492954162353,0.021390140135211975,35.40913362223645,2.7659305898095643,4.411256518929699,0.3445785902409739 +68,11.731263675099486,1.0170319377328139,0.18466773960654867,0.016009612796227094,34.086903048750166,2.1948067282597155,4.276718486599872,0.2753717606975819 +70,17.482671883996094,1.723065845383837,0.2674894759002379,0.026363360416621424,34.61081995976255,2.765205058742157,4.2811587746606925,0.34203991453345917 +72,15.422086098504769,1.5469402582916159,0.2427664322490213,0.024351126365728542,36.23478843620044,2.9573523611555492,4.546199461586774,0.3710443552245433 +73,12.339540949930846,1.1964994324198077,0.20255544433120065,0.019640720441645092,32.73776691809578,2.2849733461438486,4.1944160923739755,0.2927545118666524 +74,17.246436552609545,1.7798470097458046,0.27148454848730386,0.028017437709136783,36.366462662858744,2.8170668252907296,4.562721179083865,0.35344351706155624 +75,5.554842907404228,0.4512950425316966,0.08992764171591107,0.00730603899506531,22.058910948068565,1.0800079159160714,2.806692143527018,0.13741610996503142 +76,16.070757818434554,1.5051883864985578,0.2458871039702589,0.02302980465932061,35.15294878229135,2.696973219770903,4.34821949783854,0.33360022261528843 +77,11.422643680906951,1.1114030649655686,0.17981018252412245,0.017495213328186446,35.920925424029555,2.571440850624473,4.50683172653295,0.32262674392972834 +79,14.687365081863936,1.4694039331200766,0.22794923864015762,0.0228052823595413,32.77815664648524,2.509627701135548,4.083491484582299,0.31264855609742603 +80,12.487741405139431,1.1144766549081662,0.19381110222555759,0.017296798667171983,36.38150704346333,2.405138593215322,4.532398241093534,0.2996315110435728 +81,16.452159178381972,1.5703307601787433,0.2481313077510264,0.023683713541795177,34.712609809040394,2.608341611210837,4.263012415200463,0.3203271875219216 +83,11.666503592609047,0.9682604979526291,0.18106519424724488,0.015027490777510609,28.796282281911193,1.3747173775612727,3.5874309453707935,0.17126181821395103 +84,10.50274471107167,1.0664989905826947,0.16069475517928702,0.01631771493121969,31.91771504671246,2.5706125551312895,3.9480372322358046,0.31796994435403614 +85,9.11396662792082,0.9854019179418105,0.13944608540680103,0.01507690839994735,28.630427281645503,2.266703274671095,3.541418698591919,0.28037811947801244 +87,13.882730056265967,1.412714583672016,0.21853505726754435,0.022238252936864895,33.17221524239084,2.5943508047271795,4.161957041556602,0.3255006191508151 +88,14.16908969909729,1.2853112249218694,0.2230427888658414,0.02023273239532168,34.81433816905362,2.6670110280513875,4.367986244845744,0.3346169451451916 +89,17.113458679370357,1.6855862679922686,0.26560243139045087,0.026160451810760113,34.22010653325241,2.522742326031171,4.263129105675904,0.314282371557592 +93,10.595790964027094,1.0002693720902764,0.16211830050099305,0.015304376161913158,30.308612176497,2.3887503828522747,3.7489994856447897,0.29547456361566804 +96,17.45904233732039,1.7087966024614132,0.2671276396288684,0.02614500808246539,37.67143403661019,2.7549764384036606,4.659736481559069,0.34077450312588026 +97,11.273607827627634,1.3723128217878182,0.17248907115425524,0.020996735701872264,31.83279617861323,2.5458908162727503,3.9375322038928693,0.3149119235527291 +98,15.547533181256313,1.4802499935417752,0.2482081012751089,0.02363140416078583,34.45958573379212,2.7920097913931725,4.353988545309432,0.35277204851005334 +99,15.171598106600793,1.0079643740648485,0.2354644539296471,0.0156436902198495,31.347522806564534,1.1373963846989612,3.9052625745668066,0.14169641285601914 +100,12.70549187935016,1.3433826096330368,0.20283707922377053,0.021446458539778217,37.32625056868356,2.7962590159804264,4.716200932006327,0.35330951210948525 +101,12.153528676646806,1.2101956757471197,0.19402525163468617,0.019320193069954424,32.11367806179119,2.4704100659465253,4.057588321829463,0.31213824260264367 +102,15.166704702794275,1.3909192436390563,0.2353886330469906,0.021587192857960166,34.02469076273311,2.510002559699467,4.23878427617634,0.3126952558484278 +103,4.7307079335603515,0.4401479898323269,0.07765504353702386,0.0072250732434118135,19.544227793620873,1.212096367197119,2.504034345978217,0.1552955156963357 +106,8.141802006701713,0.3961555172547826,0.1281642127005483,0.006236083846566798,25.7677902074265,0.5610664067794122,3.232959725948724,0.0703942822453522 +113,12.46201834106653,0.7034086332895574,0.1879521981457908,0.010608811125388229,31.344052163613124,0.8083674199464524,3.8493256443943653,0.09927463824556423 +114,17.760130760231423,1.7688305731460117,0.27957071134206063,0.02784400792168331,36.42446020734835,2.9607415840908704,4.5699966394118645,0.37146958424198 +115,18.44240080317489,1.8568466849391299,0.28217334749962825,0.02841021895547691,37.35433837130185,2.888868424688692,4.620514266985601,0.3573362119023157 +116,16.7781112724354,1.7361493054329906,0.2567095133191839,0.026563540794925813,34.700463577826156,2.774140726800582,4.292247173101167,0.34314520512640817 +118,18.609250794683888,1.8078175480480425,0.2847261941239286,0.027660060891501102,37.41467407758871,2.942476370085627,4.627977442719996,0.3639672027679074 +119,8.205471735824581,0.8692634703801634,0.1291668909344809,0.01368355939631297,29.532426789672286,2.375823632963905,3.70529646566873,0.2980835599108949 +120,13.409593747912577,1.3093614140189738,0.2110871799536227,0.02061131855455185,32.28086742021238,2.435426968237612,4.050123951186108,0.30556121578218814 +123,12.777526957535901,1.2253148922364205,0.20113726834347775,0.019288277857215687,35.46527857675457,2.5287602495731143,4.4496540448387645,0.3172711092227426 +124,14.008044222890621,1.2940610434565392,0.22363072526601774,0.020658973164418545,32.75260642084775,2.426249692325562,4.138308380570909,0.3065578753059916 +125,18.324746141287285,1.801660552522969,0.2724028235432995,0.02678222212683605,37.07884991534111,2.820659806486757,4.520776888105712,0.3439042389795965 +126,8.890851298865387,0.794841848384265,0.1419381733819942,0.012689268585745886,28.421999175873836,2.232363820625982,3.5911418093303222,0.28206091345929624 +127,12.628007867810577,1.177415976508642,0.19598869614837383,0.018273683741393005,30.475791316803544,2.1880494206799197,3.796672013904811,0.2725870483289356 +128,14.294665463609682,1.4440325327163597,0.21871239258168637,0.022094102936525428,31.722048172682186,2.5719417607424737,3.9238366382883925,0.3181345434383401 +129,7.171795272825239,0.6308024650886044,0.11289521524582426,0.009929812182957149,24.98964404520646,1.7138778734333762,3.1353346075644533,0.2150322989792806 +130,16.61386899445647,1.614337926134785,0.26152699479851477,0.025412078700763178,35.12199158229414,2.8001283061196824,4.406583514315918,0.35131832438388094 +131,6.3706142990985635,0.5472960753177641,0.10313420734832414,0.008860204724799184,22.745497360418266,1.6398454927372554,2.8940507939123874,0.2086477193683415 +132,16.158637021584536,1.4418456140596245,0.25436125694049777,0.022696819181992258,33.34611438227745,2.5926132677769598,4.183775323648502,0.32528261881251713 +133,13.727159289322595,1.2952723453881787,0.21304664435181356,0.020102733631225493,30.530232714612584,2.2855517742288933,3.803444882994832,0.284733178478196 +134,15.997144459453818,1.691733703547658,0.251818700906509,0.026630389228958263,37.073612246897724,2.926309390854865,4.651442531055015,0.367149547473271 +135,15.835263936437977,1.515218043948695,0.24576460234620645,0.023516309013451996,35.63465272190041,2.7612388891066266,4.4393516033547815,0.3439940999359724 +137,17.630630099621015,1.6412370931334446,0.2736287542526896,0.025472127694237293,38.374576388363494,2.767129186744343,4.780689570562353,0.34472786121695914 +138,8.585594309751155,0.9042170270635208,0.13515017122374468,0.014233736375391609,28.346497434353708,2.135528749667038,3.556497621226444,0.2679344400781932 +139,11.989500340054121,1.1648375826620803,0.1887327732228271,0.018336296016902745,32.52912123582845,2.329835925357236,4.081271154001681,0.29231321949282074 +140,16.194832666275346,1.3263339879372706,0.26217785387099435,0.021471997002950605,33.990016083733394,2.4880578210803646,4.324751317347851,0.3165703515069666 +141,16.847255920031024,1.603697043606883,0.25776730657799524,0.02453697322933994,34.60286522457087,2.664980270601036,4.280173673849347,0.3296425981353376 +142,6.468923803267134,0.5392516551087556,0.10039872915484015,0.008369271692490755,23.37630244132205,1.3428465820907955,2.912218171628132,0.16729173606004966 +145,14.361528193350027,1.5179253599668288,0.2292739025308762,0.024232843910812204,34.80349250682954,2.7469555287156857,4.397438874436354,0.3470792198786322 +146,8.621453145317096,0.4888112467090467,0.13191108825042208,0.00747897395202562,27.162239510324586,0.6087146847247991,3.359819836602511,0.07529466308520834 +147,15.016272474742886,1.3326300300159823,0.23637845072123387,0.02097757765181754,34.411646016412256,2.654325497222667,4.317459950444314,0.3330251631740126 +148,14.368724900278018,1.36263517106308,0.22618508930762388,0.021449903175100003,34.94569482691806,2.558524983951112,4.384464427644897,0.32100554402866055 +149,14.732513383220933,1.5624136577719663,0.22541114157495534,0.023905319957950245,37.55583808711033,3.1106818497666735,4.645438609171299,0.3847732417057708 +150,5.065841184615521,0.45986481926355904,0.07974562476290874,0.007239115081227703,20.575447254089877,1.3460999657088202,2.5815285449863383,0.16889039849142087 +151,13.497561682877466,1.4510065367110045,0.21548139618634768,0.023164547919987656,32.86958238765167,2.698828791131921,4.153090704877461,0.34099857534899564 +152,15.567763442317782,1.3802970412396351,0.24505973835246006,0.021727927266378035,36.64439802167945,2.564029082217065,4.59759236135595,0.3216961161627348 +153,19.089144723282416,1.7507788969512421,0.29626496337757213,0.027172220301460184,38.28559500513555,2.7646639185472512,4.769603889692725,0.344420709089863 +154,10.97397557220647,1.1116084646599085,0.1801389058048595,0.018247164046401636,30.703527725149943,2.594661072998824,3.933779772642846,0.33243167811840457 +157,9.6266307651204,1.0740859287230051,0.14940684482523087,0.01666998491965896,30.97857894287491,2.49361774048425,3.8593092622374003,0.3106547288717324 +159,9.825585304442486,0.9402246471924146,0.15466949501220958,0.014800550488685133,30.338104114240835,2.1779180968561134,3.8063748568828335,0.27325282598433276 +161,7.921821289428838,0.7839785790460017,0.12646752196054828,0.012515787031753172,26.597424847901028,1.7314585159003069,3.360598076848409,0.21877065888717284 +163,14.679618913601155,1.3680042340556702,0.23435231142518123,0.02183946028689744,34.390058265253,2.7357033574954905,4.345203709532757,0.3456576980906481 +166,17.106726203660156,1.672917270545349,0.25800348138075835,0.025230922312321043,35.58955367131401,2.78608944330353,4.370708799680682,0.3421561775965537 +167,19.587452996722423,1.8914173305383921,0.3039987453003099,0.02935493937977264,36.80020033084008,2.7246833505331387,4.584554023932556,0.339439946150521 +170,7.081554135249953,0.6759403859043663,0.11147467934609036,0.010640353280742412,24.74464886335163,1.8725424757077216,3.1045961996477023,0.23493920992232098 +171,16.033978799155758,1.5289717153317635,0.24884880570941356,0.02372977974399071,34.729251685394765,2.630917049664438,4.3265582336654,0.3277587414330424 +172,10.462183649907386,0.9810712730138812,0.16937283709335127,0.015882614037521482,33.336270666963244,2.387981192777947,4.24158061092532,0.3038376676182639 +173,15.572566837601746,1.523474073166094,0.24168765020265934,0.023644455838784058,33.696750608293115,2.5450016573998435,4.197929604495103,0.3170554314058558 +174,15.508046183540303,1.4891328735964862,0.24068608632351304,0.023111458343606985,35.82492027175061,2.8058372142374135,4.46305441853217,0.3495500919944507 +175,9.418242025150064,0.873619593789335,0.1482577820780041,0.013752131555891934,31.672068562646444,2.1444976958839534,3.9737473842356654,0.2690601686676262 +176,14.541971932009915,1.3897780970051077,0.22569298300139612,0.021569506934107623,35.55944875846481,2.8030272846602853,4.429986443788038,0.3492003758820121 +177,8.09059666013305,0.7444415250551933,0.12556679421683456,0.01155380001127565,25.06392663129113,1.855821281468066,3.122455361749195,0.23119757713995975 +178,11.220832232884218,1.3267429599461285,0.16923262552470614,0.02000994131701676,32.75260753730867,2.609053606283819,4.0223086490554545,0.32041476009048997 +179,12.072197360538611,1.1647643728198207,0.19272683621201186,0.018594904125723875,32.38873161498765,2.4466099007636513,4.092341553246313,0.30913107313056315 +180,19.644646452838618,1.7471822151139382,0.3048863920454799,0.027116399528541533,38.27727706653296,2.8077206944762647,4.76856764427698,0.34978470476293805 +181,14.277031735911251,1.4436015983727795,0.2215807100749641,0.02240481587136972,32.52763533055445,2.660704517596688,4.052280547953535,0.33146956583042125 +182,13.398790121477315,1.2947623547364702,0.20500484190601356,0.01981018804176492,30.177208225522833,2.246758031846821,3.7327450364091135,0.27791089317186923 +183,10.700971274567003,1.133778692033535,0.17083512366927855,0.01810015353722918,29.872777234413267,2.451302811221325,3.774440506860295,0.3097233495450061 +184,13.774490624764681,1.3446103404886056,0.21075357158974306,0.020572915498232102,33.39814284259047,2.5549401603526016,4.131160000236048,0.3160315423283181 +185,9.227995033327389,0.923297470405808,0.1493924931715235,0.014947310932085444,29.327155810514775,2.116334740979233,3.7314760460815797,0.2692744036441103 +186,11.820447528632743,1.179096970045291,0.18345441810150867,0.018299691953366448,33.72152644116479,2.4092102230077863,4.201016169235338,0.30013858119980125 +187,12.451299200850515,1.232424047341517,0.19877837191415207,0.01967499468823805,34.912407224607,2.570860179543494,4.41120280201318,0.32482966741958946 +188,11.231893957813199,1.0607072007267317,0.1843732502316896,0.017411670273658867,33.51146729469238,2.2403714347704424,4.293543846517732,0.2870400422364148 +189,8.338711779015307,0.8176039503304914,0.13126386876204962,0.012870316240644575,28.265803854263925,2.3628882142610883,3.5463733889010145,0.2964601299580333 +190,9.572114955073907,1.1505691042404689,0.14645604468469287,0.017604030136949823,30.171403114294012,2.518319029542717,3.732030678598686,0.3115017170779069 +191,5.106675895995272,0.46310959906893706,0.0803884379606222,0.007290193862296434,19.842589894773916,1.3036657401905418,2.4895795258902207,0.16356632640166116 +192,16.459082012113594,1.519141967213161,0.2590904176027051,0.023913552796770418,34.89403475853969,2.673304297924556,4.377982892987866,0.33540633993896 +193,11.744390690601936,1.0827015142320475,0.1874927410391062,0.017284734472687496,30.2124461787644,2.238358704657026,3.8173578497113123,0.282817754018804 +195,11.201728117596133,1.2118457639203433,0.1788302125732575,0.019346535935598402,31.752820615827645,2.476555843745426,4.011993701500717,0.31291476643082033 +198,15.960485087469845,1.3482858991270483,0.2512417608351952,0.021224024304366814,33.94752366234995,2.5676328471918035,4.259228801756621,0.32214826282674003 +200,12.922077416387175,1.2190890364412474,0.20055204426985182,0.018920394184854843,29.441839157682953,2.2606581193910187,3.6678563054967377,0.2816321729553698 +201,15.631836807389293,1.5530176526113484,0.24606834836493646,0.024446806441775326,33.877430587925524,2.608724770265759,4.250434568505278,0.32730386427846725 +204,7.997647544024912,0.785767133724853,0.1276786041733432,0.01254439512206709,27.845543734069974,2.021461175393468,3.518306213724679,0.2554131994013862 +205,9.231898132262398,0.9010741920051873,0.1515430141030709,0.014791270119170129,29.987436726722358,2.281655866342962,3.842039302506181,0.2923294709438009 +206,15.371912972087811,1.5169953519745263,0.24197676081566769,0.02387976188193077,37.12064938880068,2.8705746113613912,4.657345277647997,0.36015687576828126 +208,15.096610563859242,1.4931612821849478,0.2376430916679914,0.02350457819365404,32.35326100355088,2.58380746493607,4.059204508336569,0.3241776125501246 +210,16.306584163400363,1.475816615701337,0.25307966569569607,0.02290480777501861,36.652095169445076,2.7491235683064623,4.566105413758151,0.3424848688813529 +211,9.277769534384339,0.44817214280287804,0.14399246288435774,0.0069557031352394825,28.44002796184172,0.5486841761270341,3.5430567533076265,0.06835503742359993 +213,14.785106462240519,1.5536386422939334,0.23273943118551763,0.0244565688315331,37.18003995121822,2.9528850042156622,4.66479548806018,0.370483858072736 +214,16.83959122284962,1.5786493415201175,0.26135184466570033,0.024500767983414152,35.675913716942055,2.6628563714367903,4.444491882563439,0.3317376429706643 +215,17.60832536954659,1.7104926524399564,0.27328258310227005,0.026546979376283603,34.9841862677878,2.4894557888382116,4.358316108363333,0.3101354189719161 +217,11.259651235081183,1.0469384633083736,0.1772438502728388,0.016480386502323786,32.452871686836275,2.2604637866342916,4.0717044927152815,0.2836094335341177 +218,13.041342964154376,1.3853255721283038,0.20529012445506103,0.02180708381757053,34.203812151442726,2.5300719976329944,4.2913840577676305,0.3174356877991613 +219,18.050089239114378,1.661664467372782,0.2801388737169572,0.02578916958352602,36.50155405502089,2.7873699575621718,4.547349844650216,0.34724949859386933 +220,12.97599514726034,1.3532384514711522,0.2013886219842639,0.021002383544774524,33.23605220321334,2.477069746303046,4.14053595559674,0.30859249727911575 +221,11.208614749536487,1.1109389978345987,0.1714947523362134,0.016997658725148364,33.46427235638494,2.541997908242394,4.139337450043918,0.3144304775989975 +223,19.25702671228018,1.9583494062103346,0.29043424182921984,0.029535801841449206,37.55100310124042,2.8799381923212612,4.611591556072749,0.3536815944413861 +226,13.930279147142205,1.2810747207596733,0.21619944457739884,0.0198824187343875,36.13627646716362,2.548450957910621,4.501847482672358,0.31748532641455074 +228,13.934230651500659,1.319113728574046,0.2193457541177541,0.020764834657735157,35.836767255844435,2.4620172644537246,4.496265466060475,0.30889737134988443 +229,16.372612308575277,1.5433522432527966,0.25410442849947684,0.023952966842055747,33.79050453872821,2.346978109675076,4.209609436912368,0.2923857259186935 +230,13.695774275972772,1.2785143097100033,0.21559184612741944,0.020125715770175037,34.64490725366393,2.452532213000208,4.3467260904407805,0.3077071524492839 +231,16.359798913196038,1.6762798901928528,0.250309090217963,0.025647509268979723,35.93823763653004,2.915886862505025,4.445351493817671,0.3606782878764328 +232,8.69192147896108,0.8433832695783842,0.13876190528579643,0.013464165507722607,27.865506410478215,1.9639076265015567,3.520822817132496,0.24814086204897143 +235,4.946086425945566,0.4259552182073719,0.07896327540970169,0.006800289422981153,19.182362227240482,1.1292883109741212,2.423727634745622,0.1426877073052193 +236,11.342063067677234,1.1041084458919213,0.1810700067818233,0.017626504331055597,34.734242183141056,2.5783990579095932,4.388691546198616,0.32578220905209926 +238,11.148389809953773,1.148168332813141,0.1754920545844747,0.01807385848262194,30.72332762496997,2.319386833979987,3.854702881751148,0.29100191300801737 +240,12.93820952857311,1.2763760097976105,0.20655140249988765,0.020376641324186533,32.67640746937161,2.281549146337015,4.128680604526689,0.2882748881616026 +241,18.14939450887593,1.802928327967388,0.2737292226346087,0.027191770471410255,36.80765109001092,2.8153808333150954,4.520303709013698,0.345753560638757 +242,13.058322477461484,1.37200028648017,0.21140186405608638,0.02221138423775367,30.95656171474527,2.488446054690167,3.938795471813279,0.3166204355116285 +243,8.742152790147143,0.4781639927890933,0.13956427306552086,0.007633658626388924,28.673190010175286,0.9018782312860111,3.622879967564674,0.11395301939369998 +244,5.42932582163481,0.5040650771830442,0.08912474615956943,0.00827444760688822,21.577398978019822,1.3791465985121516,2.764555368538785,0.17670003399402634 +245,15.043517629753701,1.372394899327127,0.23680720494775614,0.02160352440119652,33.18903557762472,2.45862605630387,4.164063933731729,0.30847163556901186 +246,8.464513286152483,0.8063393300906387,0.13513145439089347,0.012872778708491453,26.58512970200125,2.0224288847335266,3.3590464810657807,0.2555350568012672 +247,17.027611718087755,1.5821610107581043,0.2642700787625377,0.024555282434817957,35.93285421855917,2.4147099042385385,4.476502623400493,0.30082372959651876 +248,15.78153068934852,1.5141215460412438,0.24493065791959512,0.023499291275491965,37.45952435254007,2.831384731790293,4.666693423201337,0.3527328425755218 +249,10.162763569887076,0.983423746748984,0.15772771146298736,0.015262893395718076,32.02031243912632,2.424140116415992,3.989088350499636,0.30199921118064255 +250,14.545546480350051,1.4329022321457445,0.22574808105507418,0.02223876082506936,37.19176430326155,2.731621306496109,4.633335977196301,0.3403043526589157 +251,14.234978983008398,1.6186034378345526,0.21779880409377006,0.024765044857686706,31.862491840299043,2.4314292450178514,3.9412053849589523,0.30075369125684487 +252,5.395524230590785,0.28704577059304553,0.08255478100900179,0.004391973739366255,21.476508904344836,0.4500374196938202,2.656549897659446,0.05566765373997411 +254,15.50631265026321,1.5842999290784145,0.24754975705412316,0.02529247741806424,33.08356813495647,2.6192496620035213,4.180125560478535,0.33094351905310554 +255,11.101400781794407,0.7810518616466753,0.17475255074452078,0.01229491735046169,29.078770363229182,1.315340387532184,3.648370275328622,0.16502928809809347 +256,5.912321228986767,0.5137787208217239,0.09046047275978474,0.007860984574313397,21.72787797345344,1.3495510649747218,2.687619163167274,0.16693205421764332 +257,10.312737176488703,1.0385982233313535,0.16463789891370595,0.016580722108832203,33.041942782459685,2.3191148405389974,4.174875294779228,0.29302197262631385 +258,12.91602287935187,1.2139506152768669,0.20331763191880925,0.019109409039453445,38.15561524308182,2.7190097980030434,4.787200082222285,0.34114097874292426 +259,5.6714397051795,0.4432059687006692,0.08802135989253033,0.006878604746849623,21.52364514576768,1.0611158096472457,2.681409851550565,0.13219351863286335 +262,14.119810572071513,1.3285744656318088,0.22226706126737716,0.02091376089244058,35.69993598689503,2.6920420360650996,4.479097910045663,0.33775746438090415 +263,10.04366015211698,0.8969875548915872,0.1536706407370835,0.013724145401746424,29.467556805181488,2.265362281448129,3.644966791626991,0.2802122463519227 +264,13.398366008291156,1.0645135126806733,0.2229865993995718,0.01771650722637865,34.17891796766114,2.5159692225223904,4.409321573990326,0.3245777816272627 +266,9.856204549112345,0.8392169427352892,0.15734957465308624,0.01339769566703582,33.37054965772983,2.1581380796706298,4.216395030295149,0.2726824330778193 +267,14.220919679062286,1.4277269746226082,0.22070996366856108,0.02215845218235273,30.862593828144874,2.346448322068243,3.8448513273203107,0.29231972516079624 +269,17.35568604794513,1.6363575240615567,0.261758368062112,0.024679535794854074,35.54584294042482,2.68718417025151,4.365341378652508,0.33000979242831063 +270,12.71331569035123,1.13927941862808,0.1945172973345586,0.017431294779269253,34.41198414216036,2.251195264850663,4.25656639313372,0.27846002919096785 +271,16.335482130234908,1.5978953942777212,0.25352802997067164,0.02479946830957812,34.624512996886686,2.6215322768354823,4.313508777192034,0.32658950284264915 +272,11.07837526002715,1.1086794700087081,0.17194119798737278,0.0172071871355652,34.85888652993892,2.566743135455885,4.342756198414931,0.3197675190131655 +273,16.230091475287633,1.4025113565204275,0.25548605754302633,0.02207763879102694,33.52267443585138,2.5836505503474982,4.205927457681764,0.3241581101041158 +274,8.786766035274368,0.7991869788641291,0.13831691684075562,0.012580405401941807,28.334522867222436,1.9315600697449153,3.5549952303361327,0.24234347856248292 +275,12.859182489538362,1.4077421122285334,0.1939422290289899,0.02123157077564591,34.641783080697124,2.8175480636211496,4.254316043248407,0.3460197156065594 +276,10.418134540406903,0.9295191347466735,0.17101526543790718,0.01525819818718789,31.899664910220572,2.3330482908990846,4.08703709619267,0.29891395219823746 +277,4.236579772684347,0.364051442832288,0.0685874011318555,0.005893750072442998,18.35665222191618,1.0935802594612432,2.3356510522746383,0.13914421065884308 +278,12.422643294902905,1.0149483118752258,0.19832089561082772,0.01620311019413889,29.646104278658576,2.1159011561329306,3.745802385423044,0.2673453322387333 +279,12.886995252073817,1.3862673598678545,0.19717464336224896,0.02121027958341837,30.88587656849506,2.6372321499642806,3.820406974524395,0.3262105926253927 +280,14.84556176699036,1.3986329703829845,0.23040434304823695,0.02170689905606892,32.47729028259552,2.4758627943966607,4.046008580856741,0.30844205363158367 +281,14.366984368489273,1.4349522469209361,0.2293610073675082,0.02290822377449718,30.509312687306483,2.2142016296016376,3.8548670831574943,0.27976549537204903 +283,12.451688430526149,0.9904546057269594,0.1960083091160064,0.01559124560559686,30.120100323422307,1.3139018127900892,3.7790229780392486,0.1648488912090385 +284,14.138495035738144,1.548675123231307,0.222560811505872,0.02437843570437136,35.41263027082393,2.7677366752724923,4.4430473481045905,0.34725421413988483 +285,14.469429612060246,1.5340739618652337,0.22138589403947942,0.023471715518567957,35.39432642196145,2.8201241609313117,4.378072195455103,0.34883294654376173 +288,14.38525761297252,1.3901990435432803,0.22965272967018874,0.02219376348510372,32.77017789022536,2.5994968777699037,4.140528544610681,0.32844774477843414 +289,15.294015154474385,1.5758567497837161,0.24416054424182834,0.02515768670215981,34.020645460461566,2.669933362681376,4.298525754330353,0.33734743025878017 +290,12.827396238606502,1.3289438107006115,0.20478232924383305,0.021215857367091903,30.480145871528748,2.432796784569234,3.851181841237611,0.30738510372110533 +292,15.776129669961222,1.5423366241820795,0.251857105417874,0.024622543416723115,34.52903003858605,2.5812163411979334,4.362759259298869,0.32613790425709777 +293,14.782350613706042,1.3746335510429872,0.22942330073576764,0.02133442608850049,34.597894349318814,2.53551164864693,4.310192636112119,0.315873085409016 +294,18.6021688641832,1.6350446010408253,0.284617788896821,0.02501658717827999,35.723086038909756,2.7224653468631157,4.418737459308434,0.33675309005359166 +296,15.284431400071435,1.5042132745708088,0.237215762069955,0.023345526497072652,33.849047828876074,2.451075980795931,4.216902739869473,0.30535420290993204 +297,17.374159665480423,1.8032170782605415,0.26582899076554367,0.027589672552484706,34.751731946574274,2.729615728424063,4.298586998530999,0.33763758017090856 +298,8.637342069678068,0.6215061715181462,0.1359647588180623,0.009783442178474662,26.53251686018863,1.154984215972468,3.3289062719985676,0.14491027070180335 +300,13.021446339796302,1.369007158323128,0.20497692201096218,0.021550207726650932,33.86229760026613,2.692372422331063,4.248535906984733,0.3377987237097311 +303,15.810673662472382,1.6169181586668695,0.25240871329526726,0.02581320952196779,35.12075884195593,2.821910108558504,4.437525636285353,0.35654976893784435 +304,14.310121079723265,1.5843312145168769,0.22526245913727258,0.02493971528834297,36.53293581551418,2.8931114512211544,4.583606536770784,0.3629843663917173 +305,9.038050541941905,0.8216146100540248,0.13828470930883585,0.012570934073444763,29.759398736369818,2.1505023980392477,3.6810680842405357,0.26600489521417847 +306,4.655304397641121,0.4118043259524002,0.07747872101531021,0.006853702735213392,19.992665509680542,1.270864595561292,2.57921698265933,0.16395190255871697 +307,15.365983363874435,1.1228988649247218,0.24530934854658393,0.017926453681186803,34.8081933244787,1.46531696941513,4.398031672367623,0.18514349140360026 +308,10.947362306007143,1.0751612679626896,0.1772274196767379,0.01740584187597755,33.048359531724415,2.256168958538844,4.204947890334029,0.2870663789934271 +309,5.486360328311352,0.47942780747160335,0.08636384707296063,0.007546939568175703,20.532702130339207,1.2139614569250008,2.5761427997776427,0.15231010738932166 +310,11.196717165640582,0.9737172989980227,0.17625297231583978,0.015327757735133797,28.25148315484552,1.6675120964586665,3.5445746188230363,0.20921454003996334 +312,12.084429682299861,1.1019516352582235,0.19563483413856134,0.01783949520664766,36.3814097341548,2.570388273357004,4.629025116198528,0.3270459271011027 +313,12.483683719318392,1.2764398988041388,0.193747903955692,0.019810463039528246,33.100187529926956,2.567740251773317,4.123609981314413,0.3198881976744679 +314,5.424440442458234,0.4593894971103817,0.0853891317366386,0.007231505388122545,21.272835281630687,1.3911764395415793,2.669003869717335,0.17454444842161315 +315,7.6005929724381405,0.7617137306820045,0.11964476826727424,0.011990520098093715,26.290639417716807,1.9803196585094236,3.298559081811435,0.24846110779884809 +316,9.579261626087307,0.9941181125250784,0.152927645777576,0.015870549162086536,29.924963484911814,2.3720354113893527,3.781034265995483,0.29970787349965805 +317,9.465069581681318,1.0621975829510133,0.15323050540692196,0.017195972102793857,31.107980164648126,2.4823747789096133,3.9580613809385237,0.31584794941407873 +320,14.489959287824044,1.2952975241827436,0.22809337837114427,0.02038989775042967,34.01515913327849,2.4972033662794955,4.267713565094421,0.3133117396074126 +321,14.940435900489764,1.520468529186744,0.23518493854470257,0.023934462152085965,34.31290080923513,2.82957912782895,4.305073330066112,0.35501357656271215 +322,15.832500819784068,1.4936612453802491,0.24224122462624226,0.022853390843064834,36.53893546826508,2.85309198820449,4.5196536732475145,0.35291087491591194 +323,17.28651478725102,1.6950056288584625,0.2682882778859626,0.026306641146012437,37.099986450043296,2.925386452909353,4.6219035554921994,0.3644436384389752 +324,12.481747931204156,1.1923618670768479,0.19371808285945527,0.018505585614927895,32.67399706934046,2.4124338773563396,4.070517658041371,0.3005403555554157 +325,9.794470674687908,0.9755315785748141,0.1585624265128377,0.015792854905214194,27.13690466559535,2.1044267603022466,3.4527884119044883,0.267758626903585 +326,15.63908950376336,1.5473159211719516,0.24272008801702125,0.024014483482981488,36.31610474837356,2.902943551686599,4.524247842627961,0.36164770952140857 +327,7.9777735696103,0.7773201870584474,0.12736091359515045,0.012409503518229472,25.074181610193932,1.858380205822567,3.1681373176443834,0.23480741154257712 +328,12.424418806637382,1.1865755085056175,0.19834924071170437,0.018943047141445478,31.343666264380598,2.4824070219238967,3.9602903220420393,0.31365355990491006 +329,5.01760670877284,0.5001093029321729,0.07898632571048929,0.00787263701301678,19.583903628768827,1.1689892944300384,2.4571230756541116,0.14666894940787864 +330,5.484738849860212,0.373944891188089,0.09128308589347638,0.006223604178094821,21.559696882560512,0.9924432527097015,2.7813768160909946,0.12803327752745608 +331,17.347790864177906,1.4872224902603481,0.2692391450141418,0.023081815711206093,36.81301274547801,2.6465839422307083,4.586151250900762,0.3297104298741803 +332,12.438433891307081,1.2948740161375711,0.19579966272761198,0.0203832651160107,34.12569469191238,2.8084330271884226,4.281585486021914,0.35236047782272073 +333,11.831766294513963,0.9344935930056651,0.18624958961666768,0.01471031829604441,32.8184162898677,1.6695308025752267,4.11756525395311,0.20946781716613772 +334,15.019093724709633,1.6157921245578921,0.23642286138955107,0.025434969945635936,32.56546332762467,2.5909023881975144,4.08582849008806,0.32506777767091405 +335,8.166728551087129,0.8379020457438068,0.12674836807181056,0.013004315771940493,25.193170356456914,1.7922841252257977,3.138556500591203,0.22328214006190494 +336,17.00753927433009,1.6815871330361352,0.2602198220632283,0.02572872521323125,35.25816082790404,2.8267603890775357,4.36123110582945,0.34965395381073744 +338,15.130431511272748,1.447219465033764,0.2415490213062382,0.023104063167914083,34.23187093536442,2.577318609268902,4.325214199877216,0.3256455093402852 +339,9.055048386283723,0.7483969397969218,0.1445588695839831,0.01194774572171628,27.445083182809284,1.4406072371943324,3.4677001360292246,0.18202145277200507 +340,18.0962102857969,1.5784106846205972,0.2768766264832932,0.024150085496405963,35.431593003630326,2.6003370653892186,4.382682492113309,0.3216466086892268 +342,9.157914083034607,0.9290204169297401,0.1421322871636736,0.01441854504014074,30.234277189857423,2.1801779407376456,3.7665842003610357,0.2716064198919517 +344,14.676772335256349,0.7657147608928261,0.23103402563509778,0.01205347876605841,32.12239017833603,0.6606155459387794,4.030236639916134,0.08288414913583451 +345,16.958951568386702,1.6315732535955638,0.2594761574654935,0.024963474702977967,34.13638813321513,2.6271811885164205,4.22247217962732,0.32496699522106165 +346,13.426675389122698,1.340533725787337,0.20838322022772565,0.020805205049474928,34.27256967211894,2.5451632775719353,4.269664945476978,0.31707556599132347 +347,12.913566021122326,1.3439793594751517,0.20041994649137929,0.02085870555592031,29.90172964007385,2.3694803457925264,3.725149336568651,0.2951892162890845 +348,7.814472077234357,0.7332670931868113,0.11956401066453952,0.01121922935845618,28.35739836685782,2.2086074889625293,3.5076544226477893,0.27319261542718404 +349,16.054751599149732,1.455506941065639,0.24564167408649848,0.022269616533140076,36.53743296137719,2.763158334652568,4.51946742556219,0.34178657538239504 +350,6.365034012320657,0.42213561492351315,0.10019553787190814,0.006645071324093235,22.44991402415668,0.8328838193834445,2.8166864741831676,0.10449806560947353 +351,16.72535089205537,1.6683946030613057,0.25957882530951887,0.02589362184449654,36.77899393252476,2.83581116833162,4.581913200006684,0.3532842863712631 +352,6.39460381584034,0.5896826476711883,0.10352437119776932,0.009546568804649727,24.588943220003575,1.7834629279528191,3.128630995010902,0.22692302572429435 +353,10.240615268541092,1.0008505041800941,0.15893546064678968,0.01553330847308519,28.67110001137946,2.091694761799636,3.571837832516094,0.2605827638739494 +355,11.309313444235224,1.2331555013831084,0.18055091546870117,0.019687079661186414,34.155438085688345,2.6980192022410536,4.31560400040652,0.3408998131762784 +356,12.549385092602833,1.3918495877067611,0.19200873240061392,0.021295647002291748,31.768962072111318,2.679523602026127,3.929635723766106,0.3314414756546223 +357,13.614731377088845,1.3679891747620883,0.21431599728684658,0.021534171783963368,31.218199163010258,2.321636313057604,3.9167928488523,0.2912842108904978 +358,10.63630962543909,0.967954007920088,0.16980302829564858,0.015452871116372367,30.03323936840162,2.1213780405808804,3.79471712744142,0.26803733974963523 +359,13.868996626746796,1.4501801495955313,0.21524797152702357,0.022506915528929174,35.37656409672771,2.7282623296338224,4.407199019719137,0.3398858925876026 +360,17.139651748539066,1.7282443173728135,0.2698034545006818,0.027205120260865443,34.76443740216303,2.7546288260233185,4.3617217988827655,0.34560963720785504 +361,15.378414656772788,1.4189346958514177,0.24207910699748464,0.022336141385560882,32.424988989096406,2.3879021054368224,4.068203865843941,0.29959833077697157 +362,13.322368508680425,1.3306603689165462,0.206764605476196,0.02065199337659598,34.898642525259746,2.687559291998032,4.34766338318738,0.33481540479712046 +363,14.438902809105523,1.452336999402173,0.23050940679544665,0.023185788049501607,33.99240056583376,2.723945062350827,4.294959429708824,0.3441720307129922 +364,7.457033336162799,0.713664954117596,0.11409470243745844,0.010919274047658876,25.40075178463691,1.8152026956818657,3.141928287545385,0.22453023223670765 +365,12.248335111544543,1.2182502500459929,0.1874029640083454,0.01863957065865561,31.04674707635751,2.306975402988601,3.840305739866866,0.2853597144988957 +366,12.446824558100952,1.2433392011836388,0.2015022923276077,0.020128483213513286,37.01117680889195,2.8332229672457494,4.709161726830484,0.3604885418754189 +367,14.22444324470066,1.5006199744242208,0.2239138815714673,0.023621989096985166,35.40217564821508,2.6478603437468933,4.441736830806195,0.33221401217031427 +368,8.640847427114277,0.909373094869019,0.1379465352019683,0.014517657984497702,28.198820492676568,2.175833681620771,3.562937243785595,0.27491784142330045 +369,5.204074458294161,0.21495635250381986,0.08425049486673723,0.0034799999919931874,20.80673564421587,0.3059448092577605,2.6473930765977185,0.03892759458762899 +370,16.48421297318159,1.5655709789852121,0.2522130838506669,0.023953675267321964,35.004941950140115,2.5183905268096747,4.329911895897119,0.31151056088250934 +373,7.492292714441592,0.3916116408980595,0.11628119626058407,0.006077855178485315,25.151872902311137,0.5405996293411695,3.1334134775245706,0.0673477546225497 +376,9.855073197744858,0.9824006276345656,0.15295163016972346,0.015246946873093787,27.806563497222218,2.2348427990497837,3.46413211947901,0.2784159474775842 +377,16.794658039307453,1.6158152011064975,0.2643728831107524,0.0254353332048147,36.35638961543476,2.731972567789819,4.561457363374171,0.34276715916232176 +378,12.527767007099415,1.1212298573233015,0.20564520373142398,0.01840515890089111,32.353348445907905,2.469908449756304,4.145163770736258,0.31644869896797734 +380,17.14101977491912,1.6029870347492563,0.26603004065488683,0.024878490989642028,35.45677789633753,2.653217632559296,4.417192024637357,0.33053685251469833 +381,16.579622194424342,1.6384286282032943,0.2573171039029493,0.025428547443182074,35.84732269563855,2.900525435964117,4.465845948515597,0.3613463654384092 +382,5.98714965384677,0.5544986201243315,0.09424870861427927,0.008728824548679898,22.725201856442666,1.6594795857786557,2.8512506463898135,0.20820903028769663 +383,17.98616747647286,1.7853055608998445,0.2712671583464938,0.02692595667859675,35.95176057184081,2.7171143814523258,4.415190588439261,0.3336854066083647 +385,16.821851070352317,1.5909856062963055,0.26855160472955336,0.025399210579477912,37.07892006022659,2.8072363607675723,4.684940296234991,0.35469573348560196 +389,15.443924207082597,1.577487858728118,0.24311032470052799,0.024832003861470543,33.708120252850684,2.7272728461265916,4.229192033622371,0.34217750820376136 +390,12.691688554496354,1.2794946816744148,0.19978692317417265,0.020141236886788132,32.94740330731077,2.623430723046447,4.133757713071961,0.3291496718254839 +391,14.887405650459343,1.5701873915509919,0.23105369684304186,0.024369430784133676,33.044885757816004,2.757093366104967,4.11671881675076,0.3434776026453167 +392,13.947796301545972,1.4595391111674494,0.21340519707292202,0.022331357937870316,32.20921229216704,2.4871318655908574,3.984096064492162,0.3076440425704961 +394,16.663671583196532,1.4281963799381299,0.25495841946543757,0.021851768375132332,36.36158363893741,2.673860057946624,4.497716938201354,0.3307409763123845 +395,13.60235950738492,1.4344440942845877,0.22328409079299405,0.02354654317229482,35.81758862339643,2.7740283317529486,4.589000550452914,0.35541246718856095 +397,10.844757785859171,1.097779996283735,0.17071260848390554,0.017280689011921663,32.23483241651808,2.537262908839582,4.044345856086746,0.318337896055251 +398,11.8738946258076,1.2150746563598374,0.18691357443876241,0.01912716546570507,37.35809038230828,2.6229595149252085,4.687146140868698,0.32909055153040423 +399,15.624353186844772,1.5835038539196955,0.24595054505302427,0.0249267045686749,36.13982918220449,2.9811702483914484,4.534286591104903,0.37403276631252935 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/best_bootstrap_solution_nn_qoi.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/best_bootstrap_solution_nn_qoi.csv new file mode 100644 index 00000000..c0c9df82 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/best_bootstrap_solution_nn_qoi.csv @@ -0,0 +1,2 @@ +x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,best_y +1,1,0,2,1,1,1,1,2,1,1,-25.298458075806685 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/cfd_all_spargers.txt b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/cfd_all_spargers.txt new file mode 100644 index 00000000..6126fed6 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/cfd_all_spargers.txt @@ -0,0 +1 @@ +23.063376805194807,2.180974782856517 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/convergence_data_nn_qoi.npz b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/convergence_data_nn_qoi.npz new file mode 100644 index 00000000..0fad1a82 Binary files /dev/null and b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/convergence_data_nn_qoi.npz differ diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/hyperparams_qoi.json b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/hyperparams_qoi.json new file mode 100644 index 00000000..3d1b9fb9 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi/hyperparams_qoi.json @@ -0,0 +1,50 @@ +{ + "qoi": "qoi", + "best": "nn", + "best_params": { + "n_units": 23, + "n_layers": 2, + "lr": 0.0009480593464653759 + }, + "amp_physical": 15.408066680154267, + "mean_physical": 12.742125745334835, + "rbf": { + "params": { + "kernel": "multiquadric", + "epsilon": 0.3066926890793783 + }, + "test_mse": 3.5302516629097895, + "val_mse": 2.6923589766690297, + "test_nrmse_amp_pct": 12.194238472226438, + "test_nrmse_mean_pct": 14.745548996215005, + "val_nrmse_amp_pct": 10.649233092529132, + "val_nrmse_mean_pct": 12.877293542819494 + }, + "rf": { + "params": { + "n_estimators": 172, + "max_depth": 9, + "min_samples_leaf": 1, + "max_features": 0.9737361629708418 + }, + "test_mse": 5.4514917312747775, + "val_mse": 4.162827063810487, + "test_nrmse_amp_pct": 15.153380539753266, + "test_nrmse_mean_pct": 18.32381052052904, + "val_nrmse_amp_pct": 13.241769854200745, + "val_nrmse_mean_pct": 16.012247638623524 + }, + "nn": { + "params": { + "n_units": 23, + "n_layers": 2, + "lr": 0.0009480593464653759 + }, + "test_mse": 1.8887684874901578, + "val_mse": 2.5414217695066155, + "test_nrmse_amp_pct": 8.919514480696769, + "test_nrmse_mean_pct": 10.785678670883808, + "val_nrmse_amp_pct": 10.346422847895706, + "val_nrmse_mean_pct": 12.51112854539323 + } +} \ No newline at end of file diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/best_bootstrap_solution_nn_qoi_kla.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/best_bootstrap_solution_nn_qoi_kla.csv new file mode 100644 index 00000000..459e1ba1 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/best_bootstrap_solution_nn_qoi_kla.csv @@ -0,0 +1,2 @@ +x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,best_y +1,0,1,1,1,1,1,1,0,1,1,-0.3629736682995711 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/cfd_all_spargers.txt b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/cfd_all_spargers.txt new file mode 100644 index 00000000..9dec85f5 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/cfd_all_spargers.txt @@ -0,0 +1 @@ +0.34284382189288115,0.03242082615751673 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/convergence_data_nn_qoi_kla.npz b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/convergence_data_nn_qoi_kla.npz new file mode 100644 index 00000000..a8799fd3 Binary files /dev/null and b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/convergence_data_nn_qoi_kla.npz differ diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/hyperparams_qoi_kla.json b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/hyperparams_qoi_kla.json new file mode 100644 index 00000000..908a5901 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_kla/hyperparams_qoi_kla.json @@ -0,0 +1,50 @@ +{ + "qoi": "qoi_kla", + "best": "nn", + "best_params": { + "n_units": 36, + "n_layers": 2, + "lr": 0.009975314935443623 + }, + "amp_physical": 0.23629899091362438, + "mean_physical": 0.19950070655847135, + "rbf": { + "params": { + "kernel": "multiquadric", + "epsilon": 0.2777187935847173 + }, + "test_mse": 0.0008575605372087271, + "val_mse": 0.0006662447859979985, + "test_nrmse_amp_pct": 12.3928309856788, + "test_nrmse_mean_pct": 14.67871220606787, + "val_nrmse_amp_pct": 10.923329760318776, + "val_nrmse_mean_pct": 12.938158687791802 + }, + "rf": { + "params": { + "n_estimators": 170, + "max_depth": 9, + "min_samples_leaf": 1, + "max_features": 0.9796570773174 + }, + "test_mse": 0.0012678287438304637, + "val_mse": 0.0009871358388269475, + "test_nrmse_amp_pct": 15.06844474217578, + "test_nrmse_mean_pct": 17.84784800333656, + "val_nrmse_amp_pct": 13.296171027943922, + "val_nrmse_mean_pct": 15.74867503538024 + }, + "nn": { + "params": { + "n_units": 36, + "n_layers": 2, + "lr": 0.009975314935443623 + }, + "test_mse": 0.000341592703558487, + "val_mse": 0.0006345451226036295, + "test_nrmse_amp_pct": 7.821542792998029, + "test_nrmse_mean_pct": 9.264241221278446, + "val_nrmse_amp_pct": 10.660299052886097, + "val_nrmse_mean_pct": 12.626611466642379 + } +} \ No newline at end of file diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/best_bootstrap_solution_nn_qoi_sum.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/best_bootstrap_solution_nn_qoi_sum.csv new file mode 100644 index 00000000..53acf3eb --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/best_bootstrap_solution_nn_qoi_sum.csv @@ -0,0 +1,2 @@ +x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,best_y +0,2,0,2,1,1,1,2,2,2,1,-42.391510998611544 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/cfd_all_spargers.txt b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/cfd_all_spargers.txt new file mode 100644 index 00000000..42b7b934 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/cfd_all_spargers.txt @@ -0,0 +1 @@ +39.95614453605928,2.8156788973361575 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/convergence_data_nn_qoi_sum.npz b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/convergence_data_nn_qoi_sum.npz new file mode 100644 index 00000000..482dbf0f Binary files /dev/null and b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/convergence_data_nn_qoi_sum.npz differ diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/hyperparams_qoi_sum.json b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/hyperparams_qoi_sum.json new file mode 100644 index 00000000..1d883938 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum/hyperparams_qoi_sum.json @@ -0,0 +1,50 @@ +{ + "qoi": "qoi_sum", + "best": "nn", + "best_params": { + "n_units": 38, + "n_layers": 2, + "lr": 0.009796559328428031 + }, + "amp_physical": 20.017924166447315, + "mean_physical": 32.102839935975965, + "rbf": { + "params": { + "kernel": "multiquadric", + "epsilon": 0.3098578406499811 + }, + "test_mse": 7.443186837003173, + "val_mse": 4.0108651721232595, + "test_nrmse_amp_pct": 13.628887939304555, + "test_nrmse_mean_pct": 8.498377270861624, + "val_nrmse_amp_pct": 10.00460604365068, + "val_nrmse_mean_pct": 6.23843390480062 + }, + "rf": { + "params": { + "n_estimators": 50, + "max_depth": 10, + "min_samples_leaf": 1, + "max_features": 0.7497081419086573 + }, + "test_mse": 10.682255238180035, + "val_mse": 7.966569976196548, + "test_nrmse_amp_pct": 16.327227179611672, + "test_nrmse_mean_pct": 10.180943373908633, + "val_nrmse_amp_pct": 14.09991997907255, + "val_nrmse_mean_pct": 8.79209220919255 + }, + "nn": { + "params": { + "n_units": 38, + "n_layers": 2, + "lr": 0.009796559328428031 + }, + "test_mse": 3.072524705247253, + "val_mse": 3.1047786209819535, + "test_nrmse_amp_pct": 8.756461693293739, + "test_nrmse_mean_pct": 5.460145784370962, + "val_nrmse_amp_pct": 8.802302307279254, + "val_nrmse_mean_pct": 5.488729982414982 + } +} \ No newline at end of file diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/best_bootstrap_solution_rbf_qoi_sum_kla.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/best_bootstrap_solution_rbf_qoi_sum_kla.csv new file mode 100644 index 00000000..a5762411 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/best_bootstrap_solution_rbf_qoi_sum_kla.csv @@ -0,0 +1,2 @@ +x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,best_y +0,0,0,0,1,1,1,0,1,2,2,-5.520224642193352 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/cfd_all_spargers.txt b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/cfd_all_spargers.txt new file mode 100644 index 00000000..c4819b87 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/cfd_all_spargers.txt @@ -0,0 +1 @@ +4.871585084708841,0.343296869076375 diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/convergence_data_rbf_qoi_sum_kla.npz b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/convergence_data_rbf_qoi_sum_kla.npz new file mode 100644 index 00000000..1b7ca894 Binary files /dev/null and b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/convergence_data_rbf_qoi_sum_kla.npz differ diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/hyperparams_qoi_sum_kla.json b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/hyperparams_qoi_sum_kla.json new file mode 100644 index 00000000..d5778cbb --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/qoi_sum_kla/hyperparams_qoi_sum_kla.json @@ -0,0 +1,49 @@ +{ + "qoi": "qoi_sum_kla", + "best": "rbf", + "best_params": { + "kernel": "multiquadric", + "epsilon": 0.2921716473956134 + }, + "amp_physical": 2.451549029947647, + "mean_physical": 4.019339061091513, + "rbf": { + "params": { + "kernel": "multiquadric", + "epsilon": 0.2921716473956134 + }, + "test_mse": 0.11632613915303414, + "val_mse": 0.0639246836136791, + "test_nrmse_amp_pct": 13.912272438895325, + "test_nrmse_mean_pct": 8.485628478598432, + "val_nrmse_amp_pct": 10.31320641871671, + "val_nrmse_mean_pct": 6.2904200932450625 + }, + "rf": { + "params": { + "n_estimators": 61, + "max_depth": 10, + "min_samples_leaf": 4, + "max_features": 0.9062051214822248 + }, + "test_mse": 0.1847629348965339, + "val_mse": 0.10917469903374859, + "test_nrmse_amp_pct": 17.533428341609813, + "test_nrmse_mean_pct": 10.694310330429587, + "val_nrmse_amp_pct": 13.477843782838285, + "val_nrmse_mean_pct": 8.220653781477738 + }, + "nn": { + "params": { + "n_units": 25, + "n_layers": 2, + "lr": 0.0003075580792631554 + }, + "test_mse": 0.22960159920201811, + "val_mse": 0.123730966469215, + "test_nrmse_amp_pct": 19.54550387967679, + "test_nrmse_mean_pct": 11.921552361657959, + "val_nrmse_amp_pct": 14.348239564733525, + "val_nrmse_mean_pct": 8.75154154743703 + } +} \ No newline at end of file diff --git a/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/split.csv b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/split.csv new file mode 100644 index 00000000..60b701c5 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study/study_0_4vvm_lev6/split.csv @@ -0,0 +1,302 @@ +row_index,set +158,test +292,test +133,test +118,test +229,test +0,test +231,test +228,test +159,test +5,test +103,test +109,test +70,test +41,test +150,test +90,test +148,test +93,test +36,test +273,test +281,val +44,val +151,val +212,val +288,val +31,val +144,val +252,val +267,val +152,val +181,val +164,val +277,val +121,val +116,val +63,val +283,val +266,val +173,val +71,val +39,train +244,train +130,train +170,train +155,train +278,train +47,train +17,train +210,train +201,train +33,train +141,train +160,train +124,train +111,train +299,train +197,train +106,train +92,train +18,train +75,train +42,train +295,train +10,train +84,train +117,train +213,train +64,train +235,train +276,train +161,train +198,train +25,train +236,train +8,train +132,train +68,train +296,train +74,train +94,train +83,train +206,train +291,train +65,train +196,train +189,train +43,train +179,train +6,train +54,train +107,train +253,train +61,train +119,train +243,train +223,train +214,train +128,train +162,train +126,train +13,train +97,train +221,train +149,train +254,train +182,train +208,train +186,train +45,train +265,train +293,train +194,train +220,train +72,train +140,train +98,train +167,train +259,train +251,train +37,train +28,train +123,train +280,train +147,train +168,train +204,train +248,train +222,train +99,train +274,train +52,train +199,train +218,train +46,train +91,train +294,train +275,train +60,train +225,train +247,train +284,train +166,train +102,train +82,train +185,train +50,train +138,train +264,train +35,train +122,train +219,train +14,train +209,train +139,train +15,train +89,train +80,train +142,train +233,train +216,train +271,train +53,train +200,train +100,train +242,train +300,train +286,train +32,train +9,train +87,train +261,train +260,train +203,train +232,train +131,train +157,train +16,train +230,train +105,train +224,train +190,train +226,train +249,train +77,train +110,train +113,train +30,train +192,train +129,train +297,train +172,train +195,train +1,train +67,train +2,train +279,train +12,train +177,train +272,train +112,train +11,train +205,train +48,train +165,train +180,train +51,train +255,train +88,train +135,train +23,train +227,train +215,train +38,train +178,train +55,train +20,train +137,train +34,train +202,train +27,train +114,train +57,train +246,train +153,train +171,train +154,train +136,train +40,train +238,train +285,train +175,train +211,train +22,train +19,train +298,train +134,train +174,train +262,train +108,train +257,train +4,train +217,train +96,train +81,train +79,train +183,train +250,train +145,train +239,train +85,train +256,train +3,train +258,train +26,train +234,train +143,train +269,train +66,train +163,train +76,train +237,train +156,train +146,train +193,train +245,train +24,train +282,train +59,train +21,train +188,train +62,train +86,train +125,train +101,train +240,train +49,train +58,train +187,train +169,train +290,train +268,train +207,train +241,train +56,train +270,train +73,train +263,train +115,train +287,train +191,train +104,train +176,train +7,train +69,train +127,train +78,train +120,train +29,train +184,train +289,train +95,train diff --git a/papers/scaleup/SA_optimization/data/study_fine/study_0_4vvm_lev6/X_data.csv b/papers/scaleup/SA_optimization/data/study_fine/study_0_4vvm_lev6/X_data.csv new file mode 100644 index 00000000..cfcfd752 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study_fine/study_0_4vvm_lev6/X_data.csv @@ -0,0 +1,30 @@ +1,2,2,0,1,1,1,1,0,1,2 +0,0,1,2,0,2,2,1,1,0,2 +0,1,2,1,1,0,2,2,1,1,1 +0,2,2,1,0,0,2,2,1,2,0 +0,2,0,0,2,1,0,2,1,1,0 +0,0,2,2,0,2,1,1,2,1,1 +0,0,2,1,1,1,1,1,1,1,2 +0,0,1,2,0,2,0,0,0,1,1 +2,2,2,1,0,2,1,2,1,1,2 +0,2,2,0,0,1,0,1,1,1,2 +1,1,2,0,1,0,0,2,1,0,0 +1,0,1,0,2,2,1,2,1,0,0 +2,2,1,2,2,1,0,0,1,2,0 +2,1,2,2,2,0,2,1,1,0,0 +0,0,1,0,1,0,1,0,1,0,2 +1,0,0,0,2,1,1,0,0,2,0 +0,1,2,1,0,0,2,2,0,1,2 +1,0,2,1,2,0,2,0,1,0,0 +2,0,1,1,1,1,1,0,2,2,0 +1,2,0,2,0,1,0,0,1,1,2 +2,2,1,0,1,0,2,1,2,0,0 +1,0,1,2,0,1,0,0,1,1,2 +1,0,0,2,2,1,1,2,2,2,0 +2,2,0,2,2,2,1,2,1,2,2 +2,1,0,1,2,0,2,1,2,0,1 +1,0,1,2,2,0,1,0,0,0,0 +2,0,2,2,1,2,1,0,1,1,2 +2,2,2,0,2,2,2,0,1,2,0 +2,0,1,2,1,2,1,1,1,1,2 +0,0,0,0,0,1,2,1,0,2,0 diff --git a/papers/scaleup/SA_optimization/data/study_fine/study_0_4vvm_lev6/Y_data.csv b/papers/scaleup/SA_optimization/data/study_fine/study_0_4vvm_lev6/Y_data.csv new file mode 100644 index 00000000..41b86238 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study_fine/study_0_4vvm_lev6/Y_data.csv @@ -0,0 +1,31 @@ +sim_id,qoi,qoi_err,qoi_kla,qoi_kla_err,qoi_sum,qoi_sum_err,qoi_sum_kla,qoi_sum_kla_err +0,15.850686787874913,1.7509774472913333,0.24251946406506036,0.026790391974178523,35.95191090877548,2.8994643948030685,4.447042055950192,0.3586468640328133 +2,11.42137805422052,1.1381221474548402,0.17978964324492502,0.017915751837357302,30.74286662195829,2.5254559291526872,3.857158119710556,0.31685668623188273 +3,15.019437815481403,1.4888287654158034,0.22980114731403373,0.022779451711170583,33.846434920949726,2.820095230058759,4.186606935007318,0.34882936046647506 +7,12.246626353607391,1.1959487199890713,0.19278087819725287,0.018826086291957502,33.000245240282624,2.479041633229303,4.14038675553445,0.3110337838372134 +8,8.051469499428855,0.8878165093535304,0.12853740829905602,0.01417351617186311,27.378384390138166,2.2567029486916983,3.459274377605006,0.2851356959940564 +10,7.536784496094076,0.828748994264199,0.11697156795151172,0.012862258347384184,25.399544341530245,2.0622259629916213,3.1642663487618687,0.2569113890585758 +11,13.871237752605726,1.4415500660851466,0.21223336496781373,0.02205607219423176,35.14576720764102,2.781280982112579,4.347326417305544,0.34402823577738817 +12,10.318211531104183,0.8089301904099251,0.1670415002750406,0.013095768798353764,27.506777089585416,1.3171632074661634,3.4998520481388447,0.16759056629462302 +13,10.98345131196586,1.265031184870516,0.16565242962384732,0.019079202280929332,32.62734209310109,2.5975547837082225,4.006924754163392,0.3190025878735854 +14,8.066399758416116,0.834641168871918,0.12697711094358993,0.01313849145492226,26.853466486748594,2.078720791483491,3.3691721838705915,0.2608068597831008 +16,11.235920986589536,1.1746323333525106,0.17937528475584572,0.018752357686566856,30.38778062843529,2.075696237959309,3.839511264306221,0.2622652566954898 +17,13.192109761845039,1.4060611087436778,0.2076633981674531,0.02213348987720761,33.6097850654103,2.451996762129794,4.216854200336811,0.30763995739563527 +18,13.042849577336888,1.4488397122052843,0.20242640676280768,0.022486145774967933,33.595376866596546,2.5943202204531133,4.185302545070245,0.3231996790661277 +20,12.11083913618283,1.0496287379371476,0.1879615060101337,0.016290349175289695,30.9831569695581,1.6775783602268914,3.8598729293593816,0.20899223748829085 +21,13.475622538391452,1.2852051046887782,0.21815658965473164,0.020806160297750818,34.35057927662785,2.4888771166191823,4.3706277051561795,0.31667458044954694 +22,9.468423222570234,1.0002285032984815,0.1532842795061319,0.01619269669992481,29.56686969503002,2.2187581712426723,3.7619699727884335,0.2823058951856836 +23,11.710474392401496,1.3389105054662322,0.1843404537739369,0.021076462137220166,30.455681995063713,2.4503188097010176,3.821126459777736,0.30742959688629556 +25,12.065623305523559,1.2356846050771364,0.19262122887191002,0.019727044438648707,31.515224748914374,2.5096117768399777,3.9819665004649476,0.3170908697039627 +26,8.934592017958211,0.8937765775636346,0.13866559650018895,0.013871485347809027,30.031838316350402,2.532908695285737,3.7413549817772758,0.31554880076505076 +27,12.723183182404734,1.423284547979727,0.2002817974428094,0.02240461238789451,30.867279141429734,2.6164648664415275,3.872765489192747,0.32827496042045756 +28,11.532237590637749,1.2950082042128535,0.18153473883742982,0.020385373982839405,32.65102666809679,2.5441589188860627,4.096565690454574,0.3192032594906504 +29,15.132288519832107,1.5927859313254555,0.23820457544481283,0.025072803498863,33.63394791328651,2.8482528678197157,4.219884752429374,0.3573561711804768 +30,10.728463491954214,1.0379451106178652,0.1665068896091404,0.016109018041922364,32.059393971761885,2.5063749941381492,3.993950230599628,0.31224348765370846 +31,7.92727097974511,0.9495107398475012,0.11955961554272793,0.014320582619153584,29.46854706988113,2.333383000491595,3.619004529269709,0.2865605700639006 +32,14.437664879139389,1.503943984092087,0.22407384732131091,0.023341344842971734,32.62897517809353,2.566965796021421,4.064906313370792,0.3197917008885974 +33,7.38997067534197,0.7459208208027214,0.11963621649706362,0.012075710273788365,24.854805051965833,1.8778791375081378,3.1624257572563703,0.23893381344386794 +34,9.406404808078303,0.8976796452248414,0.14392045252379018,0.013734733237421517,30.87542910627087,2.206394410921485,3.8191122892004743,0.2729182477292938 +35,4.824354377240122,0.5484844930800219,0.0748759612606225,0.008512704591035022,22.027994101570076,1.5306235318867432,2.744268218662688,0.19068651888710256 +37,13.033800320180966,1.3921766485366625,0.19657564355755014,0.020996794020862207,33.62506620603363,2.6944179478730845,4.129452449239282,0.33089810815368054 +38,9.613255947637654,1.0736933700454074,0.15780300179935552,0.01762483363889499,32.67592789558932,2.3191256347472593,4.18649239419681,0.2971301033005032 diff --git a/papers/scaleup/SA_optimization/data/study_op/study_0_1vvm_lev6/X_data.csv b/papers/scaleup/SA_optimization/data/study_op/study_0_1vvm_lev6/X_data.csv new file mode 100644 index 00000000..97f7486b --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study_op/study_0_1vvm_lev6/X_data.csv @@ -0,0 +1,23 @@ +2,1,1,1,1,0,0,1,0,0,0 +1,2,2,0,0,1,1,2,1,1,2 +0,2,0,0,2,2,1,2,0,0,0 +1,2,0,2,1,0,0,0,2,0,0 +0,2,2,1,0,0,2,2,1,2,0 +0,2,0,0,2,1,0,2,1,1,0 +0,0,1,2,0,2,0,0,0,1,1 +2,2,2,1,0,2,1,2,1,1,2 +0,2,2,0,0,1,0,1,1,1,2 +1,1,2,0,1,0,0,2,1,0,0 +1,0,1,0,2,2,1,2,1,0,0 +2,2,0,2,2,2,1,0,0,2,2 +0,0,1,0,1,0,1,0,1,0,2 +1,0,0,0,2,1,1,0,0,2,0 +0,1,2,1,0,0,2,2,0,1,2 +1,0,2,1,2,0,2,0,1,0,0 +2,0,1,1,1,1,1,0,2,2,0 +1,2,0,2,0,1,0,0,1,1,2 +2,2,1,0,1,0,2,1,2,0,0 +1,0,1,2,0,1,0,0,1,1,2 +2,2,0,2,2,2,1,2,1,2,2 +2,0,2,2,1,2,1,0,1,1,2 +0,0,0,0,0,1,2,1,0,2,0 diff --git a/papers/scaleup/SA_optimization/data/study_op/study_0_1vvm_lev6/Y_data.csv b/papers/scaleup/SA_optimization/data/study_op/study_0_1vvm_lev6/Y_data.csv new file mode 100644 index 00000000..e777678b --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study_op/study_0_1vvm_lev6/Y_data.csv @@ -0,0 +1,24 @@ +sim_id,qoi,qoi_err,qoi_kla,qoi_kla_err,qoi_sum,qoi_sum_err,qoi_sum_kla,qoi_sum_kla_err +1,8.031306063609746,0.26762939317302437,0.012426420446235476,0.00041408898341051444,21.05521621383773,0.14098668995773758,0.8282084154693453,0.005545721397789557 +4,20.116534031867,1.0291018226317419,0.02328553232076663,0.0011912183139645583,28.557170724143404,0.27919931285017724,0.9715869772437155,0.009499064842277485 +5,10.687316585417946,0.3300885946134763,0.018058342516954443,0.0005577501943381581,24.996302131116234,0.19500928600389256,1.0274965472852713,0.008016040412959181 +6,2.3936340031659897,0.13162171111671,0.004044516326341037,0.0002224008176723586,14.189615910748275,0.18729313909285558,0.5832772848308089,0.007698857694574411 +7,8.658061273934077,1.042357321086582,0.0122171398059533,0.0014708402627979244,18.95268338068146,0.3151144451012318,0.7119428811455423,0.01183703022046071 +8,9.0730980449997,0.2046691872294818,0.01403833193993608,0.00031667397111264056,22.273216768009455,0.11199793019543641,0.8761185896378403,0.004405446670196092 +12,10.904765130421627,0.5412906476572354,0.0184257466648352,0.0009146170712061146,21.212478002857935,0.20395187335970053,0.8719584582447911,0.00838362972147345 +13,14.966143284476502,0.31566384124444347,0.01556733977433342,0.0003283441951421476,28.54174037996622,0.13456755189975153,0.9205188881866708,0.004340028730263011 +14,7.4533456652406835,0.44205288226888634,0.01051719804559268,0.0006237678913952281,21.191490606472577,0.28214924378650613,0.7960418502872549,0.010598716732666238 +16,10.175742125127627,0.3109625418585424,0.015744394787683903,0.0004811361140051654,22.078669816741254,0.12331628622111761,0.8684660465812821,0.004850654883761792 +17,13.307627088526909,0.3484376480160907,0.01877800331462447,0.0004916701727407949,25.325984631554203,0.12167300468838216,0.951350900266133,0.004570551717233437 +19,11.499478196523269,0.17740072301921103,0.014732752427658622,0.0002272799589741271,27.458990185761987,0.12284890059685913,0.9828504486781359,0.004397179075210339 +21,7.081712051575755,1.0014912211470757,0.01196594548873726,0.0016922164121355796,17.721648158200047,0.30155332074279445,0.7284646604344176,0.012395626830912233 +22,3.183280529252148,0.24848941881608563,0.0053787789001957876,0.00041987177396642377,14.86636462908082,0.208820513290126,0.6110956192827514,0.008583759652870932 +23,11.655692026817592,0.9550861486708582,0.016447007049817487,0.0013476942067644478,20.857690719590757,0.3526401367465942,0.7835029406665233,0.013246652654528518 +25,12.751681564991436,0.29209344973982976,0.019730012583779943,0.00045194097810820013,24.699826318185035,0.10917697558759726,0.9715694514888803,0.004294484217031172 +26,7.4116835848116605,0.34349239766171286,0.009495592996158507,0.0004400705950472835,21.646862639624697,0.2086600591909228,0.7748142007716696,0.007468647059229788 +27,17.906152161697918,0.5983308515356486,0.025266847530948808,0.0008442871624397316,26.40642108740205,0.1566812443662824,0.9919366547749843,0.005885608992156031 +28,7.7288273423832505,0.5644296194566079,0.010905922831053612,0.0007964501729257909,20.692392367177934,0.2427722804648016,0.7772936365329105,0.009119552025854478 +29,17.576881858102993,0.9838075529986137,0.02480222315392783,0.0013882220217997622,25.730250653387234,0.21621661086960797,0.9665368254024791,0.008122008583763371 +31,9.116216285480636,0.3180884364270062,0.009482421197168129,0.00033086627584225705,24.00493263488214,0.18682085319586986,0.7741993501538451,0.0060252859418257285 +34,11.421729518893368,0.48659843726397745,0.013221018071010344,0.0005632532902964199,25.279556497742387,0.23055410553581823,0.8600742872786798,0.007844032311864384 +38,7.66683516584798,0.6399680134244669,0.014094846006266315,0.0011765285679200279,19.307274801571698,0.3939008067536852,0.8278336629632266,0.01688919596630636 diff --git a/papers/scaleup/SA_optimization/data/study_pbe/study_0_4vvm_lev6/X_data.csv b/papers/scaleup/SA_optimization/data/study_pbe/study_0_4vvm_lev6/X_data.csv new file mode 100644 index 00000000..87421f27 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study_pbe/study_0_4vvm_lev6/X_data.csv @@ -0,0 +1,26 @@ +1,2,2,0,1,1,1,1,0,1,2 +0,0,1,2,0,2,2,1,1,0,2 +0,1,2,1,1,0,2,2,1,1,1 +0,2,0,0,2,2,1,2,0,0,0 +1,2,0,2,1,0,0,0,2,0,0 +0,2,0,0,2,1,0,2,1,1,0 +0,0,2,1,1,1,1,1,1,1,2 +0,0,1,2,0,2,0,0,0,1,1 +0,2,2,0,0,1,0,1,1,1,2 +1,0,1,0,2,1,1,2,2,1,0 +1,1,2,0,1,0,0,2,1,0,0 +1,0,1,0,2,2,1,2,1,0,0 +2,2,1,2,2,1,0,0,1,2,0 +2,2,0,2,2,2,1,0,0,2,2 +2,1,2,2,2,0,2,1,1,0,0 +2,1,0,1,1,2,0,1,2,0,2 +2,2,1,0,1,0,2,1,2,0,0 +1,0,1,2,0,1,0,0,1,1,2 +2,2,0,2,2,2,1,2,1,2,2 +2,1,0,1,2,0,2,1,2,0,1 +1,0,1,2,2,0,1,0,0,0,0 +2,0,2,2,1,2,1,0,1,1,2 +2,2,2,0,2,2,2,0,1,2,0 +2,0,1,0,2,0,2,0,0,2,1 +2,0,1,2,1,2,1,1,1,1,2 +0,0,0,0,0,1,2,1,0,2,0 diff --git a/papers/scaleup/SA_optimization/data/study_pbe/study_0_4vvm_lev6/Y_data.csv b/papers/scaleup/SA_optimization/data/study_pbe/study_0_4vvm_lev6/Y_data.csv new file mode 100644 index 00000000..52e303c6 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/study_pbe/study_0_4vvm_lev6/Y_data.csv @@ -0,0 +1,27 @@ +sim_id,qoi,qoi_err,qoi_kla,qoi_kla_err,qoi_sum,qoi_sum_err,qoi_sum_kla,qoi_sum_kla_err +0,15.60790946135167,1.7432990949938365,0.23880492063823605,0.02667291241402799,34.43614877224197,3.0221121137636353,4.259551196452832,0.37381768080793437 +2,10.280736665444925,1.1614613732476446,0.16183426219697342,0.018283149401306202,29.82979689595385,2.5145712696327718,3.7426000142633358,0.3154910676200518 +3,13.890486458464714,1.3754173656826874,0.21252791890893571,0.021044229893159638,32.25662808328225,2.632227666614026,3.98995717129763,0.3255912436904034 +5,10.155493474984649,1.0754837162138284,0.16441066663059156,0.017411364122148557,31.13729132418198,2.614826178802271,3.9618251937834037,0.33270344952895103 +6,5.406433697753096,0.5604007760264605,0.08752503727590803,0.009072357408461051,21.922485498780485,1.3944086680817644,2.789333886920631,0.17741926891969867 +8,6.926839310317702,0.7689541110293998,0.11058330688269447,0.012275943562313343,24.093050096991668,2.059792290348181,3.044170784705605,0.2602559446644207 +11,10.403033000538139,0.4656125471511252,0.15916898035125096,0.007123987241505401,30.35140895165187,0.5551754571072282,3.754292323215717,0.06867196708975204 +12,8.926217805968637,0.909873081510398,0.14450654154685788,0.014729935468046976,25.279218506147217,1.8420593380765384,3.216426692585517,0.2343762653451896 +14,6.926422173484384,0.8063622175612021,0.10903218126624155,0.012693339976871932,24.327533799872462,1.8173615919931856,3.0522559956572644,0.22801541911607637 +15,14.124077292986918,1.4064458015151453,0.21920684450548122,0.021828154839622693,33.369209133543535,2.6690886135431913,4.157123495092597,0.33251405334299117 +16,9.638167713814703,0.9287088994918005,0.15386804908523652,0.014826327033931884,27.84223630660519,1.9966754566894844,3.5178806340163526,0.2522809534461616 +17,10.015735746484058,0.9973088048133367,0.15766256922743532,0.015699123105879734,28.16472850807644,2.07032339864447,3.5336899400499893,0.2597532926455223 +18,11.25672914215921,1.1855801089917835,0.1747056582704815,0.018400331993247962,31.110778826626266,2.7341202980630497,3.8757723550153353,0.34061596225452656 +19,8.95724851218112,1.1355191036740961,0.13902038915508455,0.017623749912836363,29.542513249186133,2.493773500736249,3.680436907227945,0.3106768863217681 +20,11.614260664867116,1.1959386605983566,0.18025458631505828,0.018561097838663693,30.384676032181773,2.502742727238163,3.7853146665951796,0.3117910074833462 +24,9.827162935711282,1.2955559360202005,0.15251846037069286,0.020107145671500053,30.9137109469144,2.632990432271123,3.8512194804005135,0.32801704272527166 +28,10.452922836781427,1.240517257266111,0.16454473158312397,0.0195276079531394,30.524962835744162,2.7589764777369403,3.8298191148575977,0.3461554043075325 +29,14.446558450669665,1.6160678807449629,0.22741018503884852,0.025439297328182404,32.640270069811116,2.8462088166540975,4.0952130430868925,0.35709972510586585 +31,6.9598773796084785,0.8034756421560996,0.1049693633620242,0.012118076516854358,26.109891488646294,1.962722353377068,3.2065318232376434,0.2410401318220777 +32,13.57625322889985,1.4429836418082933,0.21070468187211167,0.02239523704129638,32.24999517908005,2.674264448681398,4.017693310575925,0.3331589454980116 +33,6.378568457922549,0.6972596778201505,0.10326264582720857,0.011287937040309807,22.501107613021304,1.672835748548624,2.8629509698514513,0.21284493239514765 +34,9.153801435682793,0.5637244250084206,0.14005556843785827,0.008625131901932061,29.32121619567555,0.8289825922448344,3.626865302404722,0.10254036463036421 +35,4.998160552643469,0.5785616116864034,0.07757362365721504,0.00897952761916296,20.481387283111072,1.3805487881306613,2.551592446863598,0.17199019830192944 +36,11.117276204636264,1.2184661351127752,0.17748197831973123,0.01945222698391056,27.789132922857107,2.340278963421366,3.511178663639579,0.2956960760935039 +37,11.020457794430056,1.3243366233510556,0.16621043930452992,0.0199736323172989,31.746201449667115,2.6903368856346006,3.898711495905444,0.3303969251411668 +38,9.574295991188189,1.122242688044198,0.15716352711357753,0.0184217846714555,32.035651421735295,2.574653245605423,4.104459909839981,0.32986877304942397 diff --git a/papers/scaleup/SA_optimization/data/transfer.sh b/papers/scaleup/SA_optimization/data/transfer.sh new file mode 100644 index 00000000..870cea45 --- /dev/null +++ b/papers/scaleup/SA_optimization/data/transfer.sh @@ -0,0 +1,11 @@ +#scp mhassana@kestrel.hpc.nlr.gov:/scratch/mhassana/ceja_scaleup_actual/study/study_0_4vvm_lev1/*csv study/study_0_4vvm_lev1 +scp mhassana@kestrel.hpc.nlr.gov:/scratch/mhassana/ceja_scaleup_actual/study/study_0_4vvm_lev2/*csv study/study_0_4vvm_lev2 +scp mhassana@kestrel.hpc.nlr.gov:/scratch/mhassana/ceja_scaleup_actual/study/study_0_4vvm_lev3/*csv study/study_0_4vvm_lev3 +#scp mhassana@kestrel.hpc.nlr.gov:/scratch/mhassana/ceja_scaleup_actual/study/study_0_4vvm_lev4/*csv study/study_0_4vvm_lev4 +#scp mhassana@kestrel.hpc.nlr.gov:/scratch/mhassana/ceja_scaleup_actual/study/study_0_4vvm_lev5/*csv study/study_0_4vvm_lev5 +#scp mhassana@kestrel.hpc.nlr.gov:/scratch/mhassana/ceja_scaleup_actual/study/study_0_4vvm_lev6/*csv study/study_0_4vvm_lev6 + +#scp mhassana@kestrel.hpc.nlr.gov:/scratch/mhassana/ceja_scaleup_actual/study_fine/study_0_4vvm_lev6/*csv study_fine/study_0_4vvm_lev6 +#scp mhassana@kestrel.hpc.nlr.gov:/scratch/mhassana/ceja_scaleup_actual/study_op/study_0_1vvm_lev6/*csv study_op/study_0_1vvm_lev6 +#scp mhassana@kestrel.hpc.nlr.gov:/scratch/mhassana/ceja_scaleup_actual/study_pbe/study_0_4vvm_lev6/*csv study_pbe/study_0_4vvm_lev6 + diff --git a/papers/scaleup/SA_optimization/get_optimal_all_qois.py b/papers/scaleup/SA_optimization/get_optimal_all_qois.py new file mode 100644 index 00000000..95fb6d77 --- /dev/null +++ b/papers/scaleup/SA_optimization/get_optimal_all_qois.py @@ -0,0 +1,436 @@ +import argparse +import csv +import json +import os +import random +import warnings + +import numpy as np +import pandas as pd +from load_data import load_full_dataset +from matplotlib.patches import Patch +from model_selection import make_or_load_split, select_or_load_surrogate +from plot_design_schematic import plot_schematic +from prettyPlot.plotting import plt, pretty_labels, pretty_legend +from surrogate import Surrogate_wrapper + +warnings.filterwarnings("ignore") + +QOI_COLS = { + "qoi": { + "label": r"QOI$_1$", + "ylabel": r"Optimal QOI$_1$ [kg$^2$/kWh$^2$]", + }, + "qoi_kla": { + "label": r"QOI$_2$", + "ylabel": r"Optimal QOI$_2$ [kg$^2$/s$^2$]", + }, + "qoi_sum": { + "label": r"QOI$_3$", + "ylabel": r"Optimal QOI$_3$ [kg/kWh]", + }, + "qoi_sum_kla": { + "label": r"QOI$_4$", + "ylabel": r"Optimal QOI$_4$ [kg/s]", + }, +} + + +def simulated_annealing_surrogate( + surrogate: Surrogate_wrapper, + dim: int = 11, + max_iters: int = 1000, + temp: float = 10.0, + alpha: float = 0.95, +) -> tuple[np.ndarray, float, list[tuple], list[np.ndarray]]: + """Run SA on the surrogate and return optimal x, y, traces.""" + x_curr = np.random.randint(0, 3, size=dim) + y_curr = surrogate.predict(x_curr) + x_best, y_best = x_curr.copy(), y_curr + + trace = [(0, y_best)] + trace_x = [x_curr.copy()] + + for i in range(max_iters): + x_new = x_curr.copy() + idx = random.randint(0, dim - 1) + x_new[idx] = (x_new[idx] + random.choice([-1, 1])) % 3 + y_new = surrogate.predict(x_new) + + delta = y_new - y_curr + if delta < 0 or np.random.rand() < np.exp(-delta / temp): + x_curr, y_curr = x_new, y_new + if y_curr < y_best: + x_best, y_best = x_new.copy(), y_new + + trace.append((i, y_best)) + trace_x.append(x_curr.copy()) + temp *= alpha + + return x_best, y_best, trace, trace_x + + +def run_optimization( + X: np.ndarray, + y: np.ndarray, + model_type: str, + params: dict, + n_runs: int = 10, + max_iters: int = 1000, + bootstrap_size: int = 250, + out_folder: str = ".", + qoi_name: str = "qoi", + qoi_ylabel: str = "QOI", +) -> None: + """Bootstrap + SA optimization for one QoI on a fixed, pre-tuned surrogate. + + Hyperparameters are held fixed (``params``); each of ``n_runs`` bootstrap + subsets (size ``bootstrap_size``, drawn without replacement from the full + data) only refits the surrogate on its subset. + """ + os.makedirs(out_folder, exist_ok=True) + + all_x = [] + all_y = [] + all_traces = np.zeros((n_runs, max_iters + 1)) + rng = np.random.default_rng(42) + bs = min(bootstrap_size, len(X)) + bootstrap_idxs = [ + rng.choice(len(X), size=bs, replace=False) for _ in range(n_runs) + ] + + for i, idxs in enumerate(bootstrap_idxs): + X_sub, y_sub = X[idxs], y[idxs] + surrogate = Surrogate_wrapper(model_type, X_sub, y_sub, params) + x_best, y_best, trace, trace_x = simulated_annealing_surrogate( + surrogate, dim=X.shape[1], max_iters=max_iters + ) + + trace_y = [t[1] for t in trace] + all_traces[i, :] = trace_y + all_x.append(x_best) + all_y.append(y_best) + + best_index = np.argmin(all_y) + best_x = all_x[best_index] + best_y = all_y[best_index] + + df = pd.DataFrame( + [ + { + **{f"x{j}": best_x[j] for j in range(len(best_x))}, + "best_y": best_y, + } + ] + ) + df.to_csv( + os.path.join( + out_folder, + f"best_bootstrap_solution_{model_type}_{qoi_name}.csv", + ), + index=False, + ) + print(f" {qoi_name} ({model_type}): best_y = {-best_y:.6g}, x = {best_x}") + + # schematic of the optimum design on the reactor bottom face + plot_schematic( + best_x, + os.path.join(out_folder, f"Optimum_schematic_{model_type}_{qoi_name}"), + title=f"Optimum {qoi_name} ({model_type.upper()})", + ) + + # save the convergence-plot inputs so the plot can be regenerated later + # (via plot_convergence / --plot-only) without rerunning the optimization + np.savez( + _convergence_data_path(out_folder, model_type, qoi_name), + all_traces=all_traces, + qoi_lo=float((-y).min()), + qoi_hi=float((-y).max()), + best_x=np.asarray(best_x), + best_y=best_y, + all_x=np.asarray(all_x), + all_y=np.asarray(all_y), + ) + plot_convergence(out_folder, model_type, qoi_name, qoi_ylabel) + + +def _convergence_data_path( + out_folder: str, model_type: str, qoi_name: str +) -> str: + """Path of the saved convergence-plot data for one model/QoI.""" + return os.path.join( + out_folder, f"convergence_data_{model_type}_{qoi_name}.npz" + ) + + +def plot_convergence( + out_folder: str, + model_type: str, + qoi_name: str, + qoi_ylabel: str, +) -> None: + """Draw the convergence plot from data saved by run_optimization. + + Reads convergence_data_{model_type}_{qoi_name}.npz (the per-run SA traces + plus the CFD QoI range) so the plot can be regenerated without rerunning the + optimization. The grey band + dashed lines mark the CFD QoI range so + extrapolation of the optimum is easy to spot. + """ + data = np.load(_convergence_data_path(out_folder, model_type, qoi_name)) + all_traces = data["all_traces"] + qoi_lo = float(data["qoi_lo"]) + qoi_hi = float(data["qoi_hi"]) + n_runs, n_points = all_traces.shape + iterations = np.arange(n_points) + + mean_trace = np.mean(-1 * all_traces, axis=0) + std_trace = np.std(all_traces, axis=0) + lower_bound = mean_trace - 1.96 * std_trace / np.sqrt(n_runs) + upper_bound = mean_trace + 1.96 * std_trace / np.sqrt(n_runs) + + fig, ax = plt.subplots(figsize=(8, 6)) + ax.axhspan( + qoi_lo, + qoi_hi, + color="grey", + alpha=0.25, + zorder=0, + label="CFD data range", + ) + ax.axhline(qoi_lo, color="dimgray", ls="--", lw=1.2, zorder=5) + ax.axhline(qoi_hi, color="dimgray", ls="--", lw=1.2, zorder=5) + ax.plot( + iterations, + mean_trace, + label=f"Mean Convergence {model_type.upper()}", + color="blue", + ) + ax.fill_between( + iterations, + lower_bound, + upper_bound, + color="blue", + alpha=0.3, + label="95% CI", + ) + # optional red dashed line: CFD-verified QoI of an optimal design, if provided + cfd_file = os.path.join(out_folder, "cfd_all_spargers.txt") + if os.path.exists(cfd_file): + with open(cfd_file) as f: + cfd_value = float(f.read().strip().split(",")[0]) + ax.axhline( + cfd_value, + color="red", + ls="--", + lw=3, + zorder=6, + label="All spargers", + ) + pretty_labels( + "Iteration", + qoi_ylabel, + fontsize=30, + # title=f"Convergence ({model_type.upper()}, {qoi_ylabel})", + grid=False, + fontname="Times", + ) + pretty_legend(fontsize=30, fontname="Times") + fname = f"Mean_Convergence_plot_{model_type}_{qoi_name}" + plt.savefig(os.path.join(out_folder, f"{fname}.png"), dpi=300) + plt.savefig(os.path.join(out_folder, f"{fname}.pdf")) + plt.close() + + +# design choices shown in the bar plot: (code, bar color, name). Only spargers +# (code 1) are shown; mixers (0) and walls (2) are omitted as less +# physically meaningful. Order sets the bar order per QoI. +DESIGN_CHOICES = [(1, "tab:blue", "Sparger"), (0, "tab:red", "Mixers")] + + +def plot_design_composition(studies: dict, out_path: str) -> None: + """Bar plot of the mean sparger/mixer/wall count over the bootstrap optima. + + For each (level, QoI) it reads the saved ensemble (all_x) of the winning + surrogate and, per placement type, plots the mean count across the bootstrap + optima with an error bar for the std. Blue = sparger, red = mixer, + grey = wall; lev1 hatched, lev6 solid. Reads only saved data, so it needs no + optimization rerun. + """ + qoi_names = list(QOI_COLS.keys()) + # stats[level][qoi_name][choice] = (mean_count, std_count) + stats = {label: {} for label in studies.values()} + for study_path, label in studies.items(): + for qoi_name in qoi_names: + out = os.path.join(study_path, qoi_name) + json_path = os.path.join(out, f"hyperparams_{qoi_name}.json") + if not os.path.exists(json_path): + continue + with open(json_path) as f: + best_type = json.load(f)["best"] + data_path = _convergence_data_path(out, best_type, qoi_name) + if not os.path.exists(data_path): + continue + npz = np.load(data_path) + if "all_x" not in npz.files: + print( + f" {label}/{qoi_name}: npz has no all_x (rerun to save)" + ) + continue + all_x = npz["all_x"] + stats[label][qoi_name] = { + choice: ( + float((all_x == choice).sum(axis=1).mean()), + float((all_x == choice).sum(axis=1).std()), + ) + for choice, _, _ in DESIGN_CHOICES + } + + ordered_levels = sorted(studies.values()) # lev1 (hatched) before lev6 + n_bars = len(DESIGN_CHOICES) * len(ordered_levels) + bar_width = 0.8 / n_bars + x_ticks = np.arange(len(qoi_names)) + + fig, ax = plt.subplots(figsize=(11, 6)) + slot = 0 + for choice, color, _ in DESIGN_CHOICES: + for level in ordered_levels: + means = [ + stats[level].get(q, {}).get(choice, (np.nan, np.nan))[0] + for q in qoi_names + ] + stds = [ + stats[level].get(q, {}).get(choice, (np.nan, np.nan))[1] + for q in qoi_names + ] + offset = (slot - (n_bars - 1) / 2) * bar_width + ax.bar( + x_ticks + offset, + means, + bar_width, + yerr=stds, + capsize=3, + color=color, + edgecolor="black", + hatch="//" if level == "lev1" else None, + ) + slot += 1 + + pretty_labels( + "", + "Average count over bootstrap optima", + fontsize=20, + grid=True, + fontname="Times", + ) + ax.set_xticks(x_ticks) + ax.set_xticklabels([QOI_COLS[q]["label"] for q in qoi_names]) + legend_handles = [ + Patch(facecolor=color, edgecolor="black", label=name) + for _, color, name in DESIGN_CHOICES + ] + [ + Patch(facecolor="white", edgecolor="black", hatch="//", label="3.6L"), + Patch(facecolor="white", edgecolor="black", label=r"608 m$^3$"), + ] + ax.legend(handles=legend_handles, fontsize=14) + plt.savefig(f"{out_path}.png", dpi=300) + plt.savefig(f"{out_path}.pdf") + plt.close() + + +if __name__ == "__main__": + studies = { + "data/study/study_0_4vvm_lev6": "lev6", + "data/study/study_0_4vvm_lev1": "lev1", + } + + parser = argparse.ArgumentParser() + parser.add_argument( + "--plot-only", + action="store_true", + help="skip the optimization and regenerate the convergence plots from " + "the saved convergence_data_*.npz in each qoi folder", + ) + args = parser.parse_args() + + selection_rows = [] + for study_path, label in studies.items(): + print(f"\n=== {label}: {study_path} ===") + if not args.plot_only: + X, Y_full = load_full_dataset(study_path) + split = make_or_load_split( + study_path, n_samples=len(X), n_test=20, n_val=20 + ) + + for qoi_name, qoi_info in QOI_COLS.items(): + out = os.path.join(study_path, qoi_name) + json_path = os.path.join(out, f"hyperparams_{qoi_name}.json") + + if args.plot_only: + if not os.path.exists(json_path): + print(f" skip {qoi_name}: no {json_path} (run first)") + continue + with open(json_path) as f: + record = json.load(f) + best_type = record["best"] + if not os.path.exists( + _convergence_data_path(out, best_type, qoi_name) + ): + print(f" skip {qoi_name}: no saved convergence data") + continue + plot_convergence(out, best_type, qoi_name, qoi_info["ylabel"]) + print(f" {qoi_name}: replotted ({best_type})") + else: + y = Y_full[qoi_name].values.reshape(-1, 1) * -1 + best_type, best_params = select_or_load_surrogate( + X, y, split, qoi_name, out + ) + with open(json_path) as f: + record = json.load(f) + run_optimization( + X, + y, + model_type=best_type, + params=best_params, + n_runs=50, + max_iters=1000, + bootstrap_size=250, + out_folder=out, + qoi_name=qoi_name, + qoi_ylabel=qoi_info["ylabel"], + ) + + selection_rows.append( + { + "level": label, + "qoi_name": qoi_name, + "best": best_type, + "val_mse": record[best_type]["val_mse"], + "val_nrmse_amp_pct": record[best_type][ + "val_nrmse_amp_pct" + ], + "val_nrmse_mean_pct": record[best_type][ + "val_nrmse_mean_pct" + ], + "best_params": record["best_params"], + } + ) + + with open("surrogate_selection.csv", "w", newline="") as f: + writer = csv.DictWriter( + f, + fieldnames=[ + "level", + "qoi_name", + "best", + "val_mse", + "val_nrmse_amp_pct", + "val_nrmse_mean_pct", + "best_params", + ], + ) + writer.writeheader() + writer.writerows(selection_rows) + print("\nWrote surrogate_selection.csv") + + plot_design_composition(studies, "design_composition_barplot") + print("Wrote design_composition_barplot.png") diff --git a/papers/scaleup/SA_optimization/get_optimal_constrained.py b/papers/scaleup/SA_optimization/get_optimal_constrained.py new file mode 100644 index 00000000..c0fc81c1 --- /dev/null +++ b/papers/scaleup/SA_optimization/get_optimal_constrained.py @@ -0,0 +1,175 @@ +import csv +import os +import random +import warnings + +import numpy as np +from load_data import load_full_dataset +from model_selection import make_or_load_split, select_or_load_surrogate +from surrogate import Surrogate_wrapper + +warnings.filterwarnings("ignore") + +QOI_COLS = { + "qoi": {"label": "QOI"}, + "qoi_kla": {"label": "QOI Num"}, + "qoi_sum": {"label": "QOI Sum"}, + "qoi_sum_kla": {"label": "QOI Sum Num"}, +} + + +def simulated_annealing_constrained( + surrogate: Surrogate_wrapper, + dim: int = 11, + max_iters: int = 1000, + max_spargers: int = 8, + temp: float = 10.0, + alpha: float = 0.95, +) -> tuple[np.ndarray, float, list[tuple]]: + """SA constrained by max number of spargers.""" + + def is_valid(x): + return np.sum(x == 1) <= max_spargers + + while True: + x_curr = np.random.randint(0, 3, size=dim) + if is_valid(x_curr): + break + + y_curr = surrogate.predict(x_curr) + x_best, y_best = x_curr.copy(), y_curr + trace = [(0, y_best)] + + for i in range(max_iters): + x_new = x_curr.copy() + idx = random.randint(0, dim - 1) + x_new[idx] = (x_new[idx] + random.choice([-1, 1])) % 3 + + if not is_valid(x_new): + trace.append((i, y_best)) + temp *= alpha + continue + + y_new = surrogate.predict(x_new) + delta = y_new - y_curr + if delta < 0 or np.random.rand() < np.exp(-delta / temp): + x_curr, y_curr = x_new, y_new + if y_curr < y_best: + x_best, y_best = x_new.copy(), y_new + + trace.append((i, y_best)) + temp *= alpha + + return x_best, y_best, trace + + +def run_constrained_optimization( + X: np.ndarray, + y: np.ndarray, + model_type: str, + params: dict, + max_spargers: int = 8, + n_runs: int = 10, + max_iters: int = 1000, + bootstrap_size: int = 250, +) -> tuple[float, float]: + """Mean optimal QoI over the bootstrap optima and its 95% uncertainty. + + Each bootstrap subset refits the fixed, pre-tuned surrogate + (``model_type`` + ``params``) and yields one constrained optimum. Returns + the mean of those optima (positive, i.e. negated back to physical) and the + 95% confidence interval of that mean (1.96 * std / sqrt(n_runs)). + """ + rng = np.random.default_rng(42) + bs = min(bootstrap_size, len(X)) + bootstrap_idxs = [ + rng.choice(len(X), size=bs, replace=False) for _ in range(n_runs) + ] + + all_y = [] + for idxs in bootstrap_idxs: + X_sub, y_sub = X[idxs], y[idxs] + surrogate = Surrogate_wrapper(model_type, X_sub, y_sub, params) + _, y_best, _ = simulated_annealing_constrained( + surrogate, + dim=X.shape[1], + max_iters=max_iters, + max_spargers=max_spargers, + ) + all_y.append(y_best) + + optima = -np.array(all_y) # negate back to physical QoI + mean_optimum = float(np.mean(optima)) + ci95 = float(1.96 * np.std(optima) / np.sqrt(len(optima))) + return mean_optimum, ci95 + + +if __name__ == "__main__": + studies = { + "data/study/study_0_4vvm_lev1": "lev1", + "data/study/study_0_4vvm_lev6": "lev6", + } + + results = [] + + for study_path, level_label in studies.items(): + print(f"\n=== {level_label}: {study_path} ===") + X, Y_full = load_full_dataset(study_path) + + split = make_or_load_split( + study_path, n_samples=len(X), n_test=20, n_val=20 + ) + + for qoi_name, qoi_info in QOI_COLS.items(): + y = Y_full[qoi_name].values.reshape(-1, 1) * -1 + + # winning surrogate + tuned params (cached from the selection step) + out = os.path.join(study_path, qoi_name) + model_type, params = select_or_load_surrogate( + X, y, split, qoi_name, out + ) + + for nsparg in range(3, 10): + print( + f" {qoi_name} ({model_type}), max_spargers={nsparg}...", + end="", + flush=True, + ) + mean_optimum, ci95 = run_constrained_optimization( + X, + y, + model_type=model_type, + params=params, + max_spargers=nsparg, + n_runs=10, + max_iters=1000, + bootstrap_size=250, + ) + print(f" mean={mean_optimum:.6g} ci95={ci95:.6g}") + results.append( + { + "level": level_label, + "qoi_name": qoi_name, + "model_type": model_type, + "n_spargers": nsparg, + "optimal_qoi_mean": mean_optimum, + "optimal_qoi_ci95": ci95, + } + ) + + out_file = "marginal_gain_results.csv" + with open(out_file, "w", newline="") as f: + writer = csv.DictWriter( + f, + fieldnames=[ + "level", + "qoi_name", + "model_type", + "n_spargers", + "optimal_qoi_mean", + "optimal_qoi_ci95", + ], + ) + writer.writeheader() + writer.writerows(results) + print(f"\nWrote {out_file}") diff --git a/papers/scaleup/SA_optimization/load_data.py b/papers/scaleup/SA_optimization/load_data.py new file mode 100644 index 00000000..244cde68 --- /dev/null +++ b/papers/scaleup/SA_optimization/load_data.py @@ -0,0 +1,45 @@ +import os + +import numpy as np +import pandas as pd + +# the 4 QoI value columns the surrogate can target (each has a matching _err) +QOI_VALUE_COLS = ["qoi", "qoi_kla", "qoi_sum", "qoi_sum_kla"] +QOI_ERR_COLS = ["qoi_err", "qoi_kla_err", "qoi_sum_err", "qoi_sum_kla_err"] + +# QoI assigned to unreliable designs, and the SNR gate for "reliable" +FAILED_QOI_VALUE = 0.0 +SNR_THRESHOLD = 5.0 + + +def _is_reliable(value: float, err: float, threshold: float) -> bool: + """True when the signal-to-noise ratio |value| / err meets the threshold.""" + return err > 0 and abs(value) / err >= threshold + + +def load_full_dataset(study_path: str) -> tuple[np.ndarray, pd.DataFrame]: + converged_X = pd.read_csv( + os.path.join(study_path, "X_data.csv"), header=None + ).values + converged_Y = pd.read_csv(os.path.join(study_path, "Y_data.csv")) + + X = converged_X.astype(int) + Y_rows = [] + for row_index in range(len(converged_Y)): + source = converged_Y.iloc[row_index] + row = {"sim_id": int(source["sim_id"])} + for qoi, err_col in zip(QOI_VALUE_COLS, QOI_ERR_COLS): + value = float(source[qoi]) + err = float(source[err_col]) + row[qoi] = ( + value + if _is_reliable(value, err, SNR_THRESHOLD) + else FAILED_QOI_VALUE + ) + row[err_col] = err + Y_rows.append(row) + + column_order = ["sim_id"] + QOI_VALUE_COLS + QOI_ERR_COLS + Y = pd.DataFrame(Y_rows)[column_order].reset_index(drop=True) + Y["sim_id"] = Y["sim_id"].astype(int) + return X, Y diff --git a/papers/scaleup/SA_optimization/make_hyperparam_tables.py b/papers/scaleup/SA_optimization/make_hyperparam_tables.py new file mode 100644 index 00000000..8afbc06d --- /dev/null +++ b/papers/scaleup/SA_optimization/make_hyperparam_tables.py @@ -0,0 +1,158 @@ +import json +from pathlib import Path +from typing import Callable + +SCRIPT_DIR = Path(__file__).parent +STUDY_DIR = SCRIPT_DIR / "data" / "study" + +# QoI key -> LaTeX row label. Order matches QOI_COLS in get_optimal_all_qois.py. +QOI_LABELS = { + "qoi": r"$\rm{QOI}_1 (3.6\, \rm{L}~/~608\, \rm{m}^3)$", + "qoi_kla": r"$\rm{QOI}_2 (3.6\, \rm{L}~/~608\, \rm{m}^3)$", + "qoi_sum": r"$\rm{QOI}_3 (3.6\, \rm{L}~/~608\, \rm{m}^3)$", + "qoi_sum_kla": r"$\rm{QOI}_4 (3.6\, \rm{L}~/~608\, \rm{m}^3)$", +} + +# Surrogate label -> key inside the hyperparams JSON. +SURROGATE_COLUMNS = {"RBF": "rbf", "RF": "rf", "MLP": "nn"} + +LEVELS = ("lev1", "lev6") + + +def format_int(value: float) -> str: + return str(int(value)) + + +def format_float(value: float) -> str: + """3 significant figures; scientific notation rewritten to LaTeX math.""" + text = f"{value:.3g}" + if "e" in text: + mantissa, exponent = text.split("e") + return rf"{mantissa}\times10^{{{int(exponent)}}}" + return text + + +def format_kernel(value: str) -> str: + return rf"\texttt{{{value.replace('_', r'\_')}}}" + + +# Per-surrogate column spec: (json param key, LaTeX header, formatter, is_math). +Formatter = Callable[[object], str] +SURROGATE_PARAMS: dict[str, list[tuple[str, str, Formatter, bool]]] = { + "RBF": [ + ("epsilon", r"$\epsilon$", format_float, True), + ("kernel", "Kernel", format_kernel, False), + ], + "RF": [ + ("n_estimators", r"$n_{\rm trees}$", format_int, True), + ("max_depth", "depth", format_int, True), + ("min_samples_leaf", "min. leaf", format_int, True), + ("max_features", "max. feat.", format_float, True), + ], + "MLP": [ + ("n_units", "units", format_int, True), + ("n_layers", "layers", format_int, True), + ("lr", "lr", format_float, True), + ], +} + + +def read_params(level: str, qoi_key: str, model_key: str) -> dict: + """Optimal hyperparameters for one level/QoI/surrogate.""" + json_path = ( + STUDY_DIR + / f"study_0_4vvm_{level}" + / qoi_key + / f"hyperparams_{qoi_key}.json" + ) + with open(json_path) as json_file: + hyperparams = json.load(json_file) + return hyperparams[model_key]["params"] + + +def build_cell(lev1_text: str, lev6_text: str, is_math: bool) -> str: + inner = f"{lev1_text} / {lev6_text}" + body = f"${inner}$" if is_math else inner + return rf"\rev{{{body}}}" + + +def build_table(surrogate_label: str) -> str: + model_key = SURROGATE_COLUMNS[surrogate_label] + columns = SURROGATE_PARAMS[surrogate_label] + headers = [header for _, header, _, _ in columns] + + lines = [ + r"\begin{table}[h]", + r"\centering", + r"\begin{tabular}{ |l|" + "c|" * len(headers) + " }", + r"\hline", + r"\rev{QoI} & " + + " & ".join(rf"\rev{{{header}}}" for header in headers) + + r" \\", + r"\hline", + ] + + for qoi_key, row_label in QOI_LABELS.items(): + lev1_params = read_params("lev1", qoi_key, model_key) + lev6_params = read_params("lev6", qoi_key, model_key) + cells = [ + build_cell( + formatter(lev1_params[param_key]), + formatter(lev6_params[param_key]), + is_math, + ) + for param_key, _, formatter, is_math in columns + ] + lines.append( + rf"\rev{{{row_label}}} & " + " & ".join(cells) + r" \\ \hline" + ) + + lines += [ + r"\end{tabular}", + rf"\caption{{\rev{{Optimal {surrogate_label} hyperparameters for " + r"each QoI, at reactor scales $3.6\,$L (lev1) $/$ $608\,$m$^3$ " + r"(lev6).}}", + rf"\label{{tab:hyperparams_{model_key}}}", + r"\end{table}", + ] + return "\n".join(lines) + + +def write_wrapper(table_file_names: list[str], out_path: Path) -> None: + """Standalone document that defines \\rev (red) and inputs each table.""" + inputs = [rf"\input{{{name}}}" for name in table_file_names] + wrapper = "\n".join( + [ + r"\documentclass{article}", + r"\usepackage[margin=1in]{geometry}", + r"\usepackage{xcolor}", + r"\newcommand{\rev}[1]{\textcolor{red}{#1}}", + r"\begin{document}", + *inputs, + r"\end{document}", + ] + ) + with open(out_path, "w") as wrapper_file: + wrapper_file.write(wrapper) + print(f"Wrote {out_path}") + + +def main() -> None: + table_file_names = [] + for surrogate_label, model_key in SURROGATE_COLUMNS.items(): + table = build_table(surrogate_label) + print(table) + print() + + table_file_name = f"hyperparams_{model_key}_table.tex" + table_path = SCRIPT_DIR / table_file_name + with open(table_path, "w") as table_file: + table_file.write(table) + print(f"Wrote {table_path}") + table_file_names.append(table_file_name) + + write_wrapper(table_file_names, SCRIPT_DIR / "view_hyperparam_tables.tex") + + +if __name__ == "__main__": + main() diff --git a/papers/scaleup/SA_optimization/make_val_rmse_table.py b/papers/scaleup/SA_optimization/make_val_rmse_table.py new file mode 100644 index 00000000..f1d630ef --- /dev/null +++ b/papers/scaleup/SA_optimization/make_val_rmse_table.py @@ -0,0 +1,117 @@ +import json +from pathlib import Path + +SCRIPT_DIR = Path(__file__).parent +STUDY_DIR = SCRIPT_DIR / "data" / "study" + +# QoI key -> LaTeX row label. Order matches QOI_COLS in get_optimal_all_qois.py. +QOI_LABELS = { + "qoi": r"$\rm{QOI}_1 (3.6\, \rm{L}~/~608\, \rm{m}^3)$", + "qoi_kla": r"$\rm{QOI}_2 (3.6\, \rm{L}~/~608\, \rm{m}^3)$", + "qoi_sum": r"$\rm{QOI}_3 (3.6\, \rm{L}~/~608\, \rm{m}^3)$", + "qoi_sum_kla": r"$\rm{QOI}_4 (3.6\, \rm{L}~/~608\, \rm{m}^3)$", +} + +# Surrogate column header -> key inside the hyperparams JSON. +SURROGATE_COLUMNS = {"RBF": "rbf", "RF": "rf", "MLP": "nn"} + +LEVELS = ("lev1", "lev6") +METRIC_KEY = "val_nrmse_amp_pct" + + +def read_val_nrmse(level: str, qoi_key: str) -> dict[str, float]: + """Validation nRMSE (% of amplitude) for each surrogate at one level/QoI.""" + json_path = ( + STUDY_DIR + / f"study_0_4vvm_{level}" + / qoi_key + / f"hyperparams_{qoi_key}.json" + ) + with open(json_path) as json_file: + hyperparams = json.load(json_file) + return { + column: float(hyperparams[model_key][METRIC_KEY]) + for column, model_key in SURROGATE_COLUMNS.items() + } + + +def format_number(value: float, is_lowest: bool) -> str: + text = f"{value:.1f}" + return rf"\textbf{{{text}}}" if is_lowest else text + + +def build_cell( + lev1_value: float, + lev6_value: float, + lev1_is_lowest: bool, + lev6_is_lowest: bool, +) -> str: + lev1_text = format_number(lev1_value, lev1_is_lowest) + lev6_text = format_number(lev6_value, lev6_is_lowest) + return rf"${lev1_text}\% / {lev6_text}\%$" + + +def build_table() -> str: + column_headers = list(SURROGATE_COLUMNS) + lines = [ + r"\begin{tabular}{l" + "c" * len(column_headers) + "}", + r"\hline", + "QoI & " + " & ".join(column_headers) + r" \\", + r"\hline", + ] + + for qoi_key, row_label in QOI_LABELS.items(): + lev1_values = read_val_nrmse("lev1", qoi_key) + lev6_values = read_val_nrmse("lev6", qoi_key) + lev1_lowest_column = min(lev1_values, key=lev1_values.get) + lev6_lowest_column = min(lev6_values, key=lev6_values.get) + + cells = [ + build_cell( + lev1_values[column], + lev6_values[column], + column == lev1_lowest_column, + column == lev6_lowest_column, + ) + for column in column_headers + ] + lines.append(f"{row_label} & " + " & ".join(cells) + r" \\") + + lines += [r"\hline", r"\end{tabular}"] + return "\n".join(lines) + + +def write_wrapper(table_file_name: str, out_path: Path) -> None: + wrapper = "\n".join( + [ + r"\documentclass{article}", + r"\usepackage[margin=1in]{geometry}", + r"\begin{document}", + r"\begin{table}[h]", + r"\centering", + rf"\input{{{table_file_name}}}", + r"\caption{Validation nRMSE relative to amplitude " + r"(lev1 $3.6\,$L / lev6 $608\,$m$^3$); lowest per level in bold.}", + r"\end{table}", + r"\end{document}", + ] + ) + with open(out_path, "w") as wrapper_file: + wrapper_file.write(wrapper) + print(f"Wrote {out_path}") + + +def main() -> None: + table = build_table() + print(table) + + table_path = SCRIPT_DIR / "val_rmse_table.tex" + with open(table_path, "w") as table_file: + table_file.write(table) + print(f"Wrote {table_path}") + + write_wrapper("val_rmse_table.tex", SCRIPT_DIR / "view_val_rmse_table.tex") + + +if __name__ == "__main__": + main() diff --git a/papers/scaleup/SA_optimization/marginal_gain_results.csv b/papers/scaleup/SA_optimization/marginal_gain_results.csv new file mode 100644 index 00000000..9723e371 --- /dev/null +++ b/papers/scaleup/SA_optimization/marginal_gain_results.csv @@ -0,0 +1,57 @@ +level,qoi_name,model_type,n_spargers,optimal_qoi_mean,optimal_qoi_ci95 +lev1,qoi,nn,3,20.777002658440317,4.967135709603668 +lev1,qoi,nn,4,29.33137591333509,6.052693630554447 +lev1,qoi,nn,5,28.728691798440696,7.782960094406028 +lev1,qoi,nn,6,28.00670375941676,5.250816613929773 +lev1,qoi,nn,7,26.578156696520818,6.211729307089006 +lev1,qoi,nn,8,25.752087994106507,5.750639405478412 +lev1,qoi,nn,9,33.39666583737389,6.095517715388951 +lev1,qoi_kla,nn,3,2.1630368613455053e-12,5.646098656009841e-13 +lev1,qoi_kla,nn,4,2.1810997777515023e-12,7.571885282140608e-13 +lev1,qoi_kla,nn,5,2.2262035694651713e-12,7.283823393852845e-13 +lev1,qoi_kla,nn,6,1.919642208364238e-12,7.524940381917437e-13 +lev1,qoi_kla,nn,7,2.270919638464332e-12,6.688943592320943e-13 +lev1,qoi_kla,nn,8,2.1171600394206276e-12,7.240310078697636e-13 +lev1,qoi_kla,nn,9,2.704915189390905e-12,8.320571300855766e-13 +lev1,qoi_sum,nn,3,34.330421521427105,1.5979910200579341 +lev1,qoi_sum,nn,4,36.93759964547867,2.6326362889827815 +lev1,qoi_sum,nn,5,37.37891391484199,1.9716201424039503 +lev1,qoi_sum,nn,6,37.88222566926674,2.0477026431202336 +lev1,qoi_sum,nn,7,38.30321346647001,1.5016840895363077 +lev1,qoi_sum,nn,8,38.52937161920444,1.9463582167721076 +lev1,qoi_sum,nn,9,38.44378376449916,2.5630231918745983 +lev1,qoi_sum_kla,nn,3,7.804334100887237e-06,1.3813566415684952e-07 +lev1,qoi_sum_kla,nn,4,7.8251175178686e-06,1.1370595131964046e-07 +lev1,qoi_sum_kla,nn,5,7.734468577471196e-06,2.8786262283158653e-07 +lev1,qoi_sum_kla,nn,6,7.827537738907247e-06,1.5470669237093723e-07 +lev1,qoi_sum_kla,nn,7,7.704540831548307e-06,2.2034748906434659e-07 +lev1,qoi_sum_kla,nn,8,7.739101235354367e-06,2.6253140249004177e-07 +lev1,qoi_sum_kla,nn,9,7.619820316451526e-06,3.25479214629696e-07 +lev6,qoi,nn,3,15.909415092123254,0.46775342270960824 +lev6,qoi,nn,4,17.479575262616905,0.8682770294330613 +lev6,qoi,nn,5,18.754729256260596,0.529543994336786 +lev6,qoi,nn,6,19.886590714439063,0.3755539258889765 +lev6,qoi,nn,7,21.433241721384228,0.5610737501452722 +lev6,qoi,nn,8,21.610978671926706,1.0828448639168482 +lev6,qoi,nn,9,20.93777004972596,1.9637920266145474 +lev6,qoi_kla,nn,3,0.24658579471534098,0.008536403046175908 +lev6,qoi_kla,nn,4,0.27306325796051867,0.0057937584699469255 +lev6,qoi_kla,nn,5,0.2941745217305499,0.00715797413420681 +lev6,qoi_kla,nn,6,0.30658919100619186,0.00623891361279496 +lev6,qoi_kla,nn,7,0.31463449818349964,0.005752463990180858 +lev6,qoi_kla,nn,8,0.3187942689999229,0.008043733761107999 +lev6,qoi_kla,nn,9,0.33383378816617665,0.007553545891181331 +lev6,qoi_sum,nn,3,37.37678159715111,0.7814896878666623 +lev6,qoi_sum,nn,4,38.04317682799514,0.6625226569542539 +lev6,qoi_sum,nn,5,39.5093564959566,0.9260206104420369 +lev6,qoi_sum,nn,6,39.70000734500967,0.592021708828062 +lev6,qoi_sum,nn,7,39.07709702857392,0.4739951040219765 +lev6,qoi_sum,nn,8,39.57371845662897,0.18470348275441084 +lev6,qoi_sum,nn,9,39.844698183642166,0.3826178119788762 +lev6,qoi_sum_kla,rbf,3,4.830869504994335,0.10543249459025254 +lev6,qoi_sum_kla,rbf,4,4.966668120244677,0.15220367538664611 +lev6,qoi_sum_kla,rbf,5,5.111496616028076,0.07325606131503833 +lev6,qoi_sum_kla,rbf,6,5.182008623639471,0.0704755723932477 +lev6,qoi_sum_kla,rbf,7,5.161792010502566,0.08237835929861465 +lev6,qoi_sum_kla,rbf,8,5.252289373978056,0.04793709953939311 +lev6,qoi_sum_kla,rbf,9,5.233795924095803,0.04269007121971121 diff --git a/papers/scaleup/SA_optimization/model_selection.py b/papers/scaleup/SA_optimization/model_selection.py new file mode 100644 index 00000000..a44ba125 --- /dev/null +++ b/papers/scaleup/SA_optimization/model_selection.py @@ -0,0 +1,139 @@ +import json +import os + +import numpy as np +import pandas as pd +from sklearn.metrics import mean_squared_error +from surrogate import Surrogate_wrapper, tune_nn, tune_rbf, tune_rf + + +def make_or_load_split( + study_path: str, + n_samples: int, + n_test: int = 20, + n_val: int = 20, + seed: int = 0, +) -> dict: + """Return {'train','test','val'} row-index arrays, frozen in split.csv. + + If split.csv already exists in ``study_path`` it is loaded verbatim so the + split is reproducible across runs; otherwise it is drawn deterministically + from ``seed`` and written. + """ + split_file = os.path.join(study_path, "split.csv") + if os.path.exists(split_file): + df = pd.read_csv(split_file) + return { + name: df.loc[df["set"] == name, "row_index"].to_numpy() + for name in ("train", "test", "val") + } + + rng = np.random.default_rng(seed) + perm = rng.permutation(n_samples) + test_idx = perm[:n_test] + val_idx = perm[n_test : n_test + n_val] + train_idx = perm[n_test + n_val :] + + rows = ( + [(int(i), "test") for i in test_idx] + + [(int(i), "val") for i in val_idx] + + [(int(i), "train") for i in train_idx] + ) + pd.DataFrame(rows, columns=["row_index", "set"]).to_csv( + split_file, index=False + ) + return {"train": train_idx, "test": test_idx, "val": val_idx} + + +def _predict_batch(surrogate: Surrogate_wrapper, X: np.ndarray) -> np.ndarray: + """Row-wise predictions (Surrogate_wrapper.predict is single-sample).""" + return np.array([surrogate.predict(X[i]) for i in range(len(X))]) + + +def select_or_load_surrogate( + X: np.ndarray, + y: np.ndarray, + split: dict, + qoi_name: str, + out_folder: str, + n_trials: int = 100, +) -> tuple[str, dict]: + """Tune RBF, RF, and NN on the test set, pick the winner on the validation set. + + Caches the full result to ``hyperparams_{qoi_name}.json`` and reloads it on + subsequent calls so both drivers reuse one selection. Returns + ``(best_model_type, best_params)``. + """ + os.makedirs(out_folder, exist_ok=True) + json_file = os.path.join(out_folder, f"hyperparams_{qoi_name}.json") + if os.path.exists(json_file): + with open(json_file) as f: + record = json.load(f) + return record["best"], record["best_params"] + + X_train, y_train = X[split["train"]], y[split["train"]] + X_test, y_test = X[split["test"]], y[split["test"]] + X_val, y_val = X[split["val"]], y[split["val"]] + + # physical QoI reference values (y is the negated min-space target, so + # physical QoI = -y). Amplitude = max - min = the CFD data range height. + physical = -y + amp_physical = float(np.max(physical) - np.min(physical)) + mean_physical = float(np.mean(physical)) + + def nrmse_pct(mse: float, denom: float) -> float: + """Normalized RMSE as a percent of a physical-QoI reference.""" + if denom == 0: + return float("nan") + return 100.0 * np.sqrt(mse) / abs(denom) + + # 1. HPO scored on the test set + tuners = {"rbf": tune_rbf, "rf": tune_rf, "nn": tune_nn} + tuned = { + name: tuner(X_train, y_train, X_test, y_test, n_trials=n_trials) + for name, tuner in tuners.items() + } + + # 2. compare on the validation set (each refit on the train pool). MSE is in + # physical units since Surrogate_wrapper.predict inverse-transforms. + results = {} + for model_type, params in tuned.items(): + surrogate = Surrogate_wrapper(model_type, X_train, y_train, params) + test_mse = mean_squared_error( + y_test.ravel(), _predict_batch(surrogate, X_test) + ) + val_mse = mean_squared_error( + y_val.ravel(), _predict_batch(surrogate, X_val) + ) + results[model_type] = { + "params": params, + "test_mse": float(test_mse), + "val_mse": float(val_mse), + "test_nrmse_amp_pct": float(nrmse_pct(test_mse, amp_physical)), + "test_nrmse_mean_pct": float(nrmse_pct(test_mse, mean_physical)), + "val_nrmse_amp_pct": float(nrmse_pct(val_mse, amp_physical)), + "val_nrmse_mean_pct": float(nrmse_pct(val_mse, mean_physical)), + } + + best = min(results, key=lambda m: results[m]["val_mse"]) + record = { + "qoi": qoi_name, + "best": best, + "best_params": results[best]["params"], + "amp_physical": amp_physical, + "mean_physical": mean_physical, + **results, + } + with open(json_file, "w") as f: + json.dump(record, f, indent=2) + + val_summary = ", ".join( + f"{m.upper()} val_mse={results[m]['val_mse']:.6g}" + f" (nRMSE amp={results[m]['val_nrmse_amp_pct']:.1f}%" + f" mean={results[m]['val_nrmse_mean_pct']:.1f}%)" + for m in results + ) + print(f" {qoi_name}: {val_summary} -> best={best}") + for m in results: + print(f" {m.upper()} params: {results[m]['params']}") + return best, results[best]["params"] diff --git a/papers/scaleup/SA_optimization/plot_design_schematic.py b/papers/scaleup/SA_optimization/plot_design_schematic.py new file mode 100644 index 00000000..60677ac6 --- /dev/null +++ b/papers/scaleup/SA_optimization/plot_design_schematic.py @@ -0,0 +1,121 @@ +import argparse + +import numpy as np +import pandas as pd +from matplotlib.lines import Line2D +from matplotlib.patches import Circle +from prettyPlot.plotting import plt + +# fraction-along-branch of each spot (matches randsim.optimization_setup) +BRANCH_SPOTS = { + 0: np.linspace(0.2, 0.8, 4), + 1: np.linspace(0.2, 0.8, 3), + 2: np.linspace(0.2, 0.8, 4), +} + +# bottom-face leg endpoints in (x, z) block coords (matches mesh.json Fluids) +BRANCH_ENDS = { + 0: ((0.0, 0.0), (9.0, 0.0)), + 1: ((9.0, 0.0), (9.0, 4.0)), + 2: ((9.0, 4.0), (0.0, 4.0)), +} + +CHOICE_COLOR = {1: "tab:blue", 0: "red", 2: "black"} +CHOICE_NAME = {1: "Sparger", 0: "Mixer", 2: "Wall"} + + +def spot_positions() -> list[tuple[float, float]]: + """(x, z) of the 11 spots, ordered as the design vector [b0, b1, b2].""" + positions = [] + for branch_id in (0, 1, 2): + (start_x, start_z), (end_x, end_z) = BRANCH_ENDS[branch_id] + for frac in BRANCH_SPOTS[branch_id]: + positions.append( + ( + start_x + frac * (end_x - start_x), + start_z + frac * (end_z - start_z), + ) + ) + return positions + + +def plot_schematic( + design_x: np.ndarray, out_path: str, title: str | None = None +) -> None: + """Draw the bottom-face schematic for one design vector (length 11).""" + design_x = np.asarray(design_x, dtype=int) + if len(design_x) != 11: + raise ValueError(f"expected 11 design values, got {len(design_x)}") + positions = spot_positions() + + fig, ax = plt.subplots(figsize=(7, 4)) + # legs as thick rounded grey lines (the tube centerlines) + for branch_id in (0, 1, 2): + (start_x, start_z), (end_x, end_z) = BRANCH_ENDS[branch_id] + ax.plot( + [start_x, end_x], + [start_z, end_z], + color="lightgray", + linewidth=16, + solid_capstyle="round", + zorder=1, + ) + # placement spots + for (spot_x, spot_z), choice in zip(positions, design_x): + ax.add_patch( + Circle( + (spot_x, spot_z), + 0.32, + facecolor=CHOICE_COLOR[int(choice)], + edgecolor="k", + linewidth=1.2, + zorder=3, + ) + ) + + ax.set_aspect("equal") + ax.axis("off") + ax.set_xlim(-1.0, 10.0) + ax.set_ylim(-1.5, 5.5) + legend_handles = [ + Line2D( + [0], + [0], + marker="o", + color="w", + markerfacecolor=CHOICE_COLOR[choice], + markeredgecolor="k", + markersize=12, + label=CHOICE_NAME[choice], + ) + for choice in (1, 0, 2) + ] + # place the legend in the open interior of the U so it clears the legs + ax.legend(handles=legend_handles, loc="center", frameon=False) + if title is not None: + ax.set_title(title, fontsize=13) + + fig.savefig(f"{out_path}.png", dpi=200, bbox_inches="tight") + fig.savefig(f"{out_path}.pdf", bbox_inches="tight") + plt.close(fig) + + +def design_from_csv(csv_path: str) -> np.ndarray: + """Read x0..x10 from a best_bootstrap_solution CSV.""" + row = pd.read_csv(csv_path).iloc[0] + return np.array([int(row[f"x{i}"]) for i in range(11)]) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Plot a design schematic") + parser.add_argument( + "-i", "--input", required=True, help="best_bootstrap_solution CSV" + ) + parser.add_argument( + "-o", "--out", default="optimum_schematic", help="output path (no ext)" + ) + parser.add_argument("-t", "--title", default=None) + args = parser.parse_args() + + plot_schematic(design_from_csv(args.input), args.out, title=args.title) + print(f"Wrote {args.out}.png / .pdf") diff --git a/papers/scaleup/SA_optimization/plot_marginal_gain.py b/papers/scaleup/SA_optimization/plot_marginal_gain.py new file mode 100644 index 00000000..cdc4926e --- /dev/null +++ b/papers/scaleup/SA_optimization/plot_marginal_gain.py @@ -0,0 +1,72 @@ +import os + +import pandas as pd +from prettyPlot.plotting import plt, pretty_labels + +QOI_LABELS = { + "qoi": { + "label": "QOI", + # "ylabel": r"Optimal QOI [kg$^2$/kWh$^2$]", + "ylabel": r"Optimal QOI$_1$ [kg$^2$/kWh$^2$]", + }, + "qoi_kla": { + "label": "QOI Num", + # "ylabel": r"Optimal QOI Num [kg$^2$/s$^2$]", + "ylabel": r"Optimal QOI$_2$ [kg$^2$/s$^2$]", + }, + "qoi_sum": { + "label": "QOI Sum", + # "ylabel": r"Optimal QOI Sum [kg/kWh]", + "ylabel": r"Optimal QOI$_3$ [kg/kWh]", + }, + "qoi_sum_kla": { + "label": "QOI Sum Num", + # "ylabel": r"Optimal QOI Sum Num [kg/s]", + "ylabel": r"Optimal QOI$_4$ [kg/s]", + }, +} + +LEVEL_TITLES = { + "lev1": "3.6 L reactor", + "lev6": r"608 m$^3$ reactor", +} + + +if __name__ == "__main__": + df = pd.read_csv("marginal_gain_results.csv") + + for level in df["level"].unique(): + df_lev = df[df["level"] == level] + for qoi_name in df_lev["qoi_name"].unique(): + df_q = df_lev[df_lev["qoi_name"] == qoi_name].sort_values( + "n_spargers" + ) + info = QOI_LABELS[qoi_name] + + n_spargers = df_q["n_spargers"].values[:-1] + mean_optimum = df_q["optimal_qoi_mean"].values[:-1] + ci95 = df_q["optimal_qoi_ci95"].values[:-1] + + fig, ax = plt.subplots() + ax.plot(n_spargers, mean_optimum, linewidth=3, color="k") + ax.fill_between( + n_spargers, + mean_optimum - ci95, + mean_optimum + ci95, + color="k", + alpha=0.25, + label="95% CI", + ) + pretty_labels( + r"N$_{\rm sparg}$", + info["ylabel"], + 20, + fontname="Times", + grid=False, + title=LEVEL_TITLES.get(level, level), + ) + fname = f"marginal_gain_{level}_{qoi_name}" + plt.savefig(f"{fname}.png", dpi=300) + plt.savefig(f"{fname}.pdf") + plt.close() + print(f"Saved {fname}.png/.pdf") diff --git a/papers/scaleup/SA_optimization/surrogate.py b/papers/scaleup/SA_optimization/surrogate.py new file mode 100644 index 00000000..565ecac8 --- /dev/null +++ b/papers/scaleup/SA_optimization/surrogate.py @@ -0,0 +1,273 @@ +import warnings + +import numpy as np +import optuna +import torch +import torch.nn as nn +from scipy.interpolate import RBFInterpolator +from sklearn.ensemble import RandomForestRegressor +from sklearn.metrics import mean_squared_error +from sklearn.preprocessing import OneHotEncoder, StandardScaler + +warnings.filterwarnings("ignore") +optuna.logging.set_verbosity(optuna.logging.WARNING) + +# epsilon-using RBF kernels (so tuning epsilon stays meaningful for each) +RBF_KERNELS = ( + "multiquadric", + "inverse_multiquadric", + "inverse_quadratic", + "gaussian", +) + +# the 11 design variables are unordered categoricals {0=mixer, 1=sparger, 2=wall} +DESIGN_CATEGORIES = (0, 1, 2) + + +def make_encoder(n_features: int = 11) -> OneHotEncoder: + """One-hot encoder shared by all surrogates. + + Categories are fixed to {0, 1, 2} for every design variable so the encoded + width is always 3 x n_features, regardless of which values happen to appear + in a given train/bootstrap subset. + """ + return OneHotEncoder( + categories=[list(DESIGN_CATEGORIES)] * n_features, + sparse_output=False, + handle_unknown="ignore", + ) + + +def check_data_shape(X: np.ndarray, y: np.ndarray) -> None: + """Validate shapes: (N, d) for X, (N, 1) for y.""" + assert X.shape[0] == y.shape[0] + assert len(X.shape) == 2 + assert len(y.shape) == 2 + assert y.shape[1] == 1 + print(f"INFO: {X.shape[0]} sim with {X.shape[1]} design variables") + + +def tune_rbf( + X_train: np.ndarray, + y_train: np.ndarray, + X_test: np.ndarray, + y_test: np.ndarray, + n_trials: int = 100, +) -> dict: + """Tune RBF epsilon + kernel type by MSE on a held-out test set.""" + check_data_shape(X=X_train, y=y_train) + check_data_shape(X=X_test, y=y_test) + encoder = make_encoder(X_train.shape[1]) + X_train_enc = encoder.fit_transform(X_train) + X_test_enc = encoder.transform(X_test) + y_scaler = StandardScaler().fit(y_train) + y_train_s = y_scaler.transform(y_train) + y_test_s = y_scaler.transform(y_test) + + def objective(trial): + kernel = trial.suggest_categorical("kernel", list(RBF_KERNELS)) + epsilon = trial.suggest_float("epsilon", 0.1, 10.0, log=False) + try: + model = RBFInterpolator( + X_train_enc, y_train_s, epsilon=epsilon, kernel=kernel + ) + return mean_squared_error(y_test_s, model(X_test_enc)) + except Exception: + return float("inf") + + study = optuna.create_study(direction="minimize") + study.optimize(objective, n_trials=n_trials) + return study.best_params + + +def tune_rf( + X_train: np.ndarray, + y_train: np.ndarray, + X_test: np.ndarray, + y_test: np.ndarray, + n_trials: int = 100, +) -> dict: + """Tune RandomForest hyperparameters by MSE on a held-out test set.""" + check_data_shape(X=X_train, y=y_train) + check_data_shape(X=X_test, y=y_test) + encoder = make_encoder(X_train.shape[1]) + X_train_enc = encoder.fit_transform(X_train) + X_test_enc = encoder.transform(X_test) + y_scaler = StandardScaler().fit(y_train) + y_train_s = y_scaler.transform(y_train) + y_test_s = y_scaler.transform(y_test) + + def objective(trial): + model = RandomForestRegressor( + n_estimators=trial.suggest_int("n_estimators", 50, 200), + max_depth=trial.suggest_int("max_depth", 3, 10), + min_samples_leaf=trial.suggest_int("min_samples_leaf", 1, 10), + max_features=trial.suggest_float("max_features", 0.1, 1.0), + random_state=42, + ) + model.fit(X_train_enc, y_train_s.ravel()) + return mean_squared_error(y_test_s, model.predict(X_test_enc)) + + study = optuna.create_study(direction="minimize") + study.optimize(objective, n_trials=n_trials) + return study.best_params + + +def tune_nn( + X_train: np.ndarray, + y_train: np.ndarray, + X_test: np.ndarray, + y_test: np.ndarray, + n_trials: int = 100, +) -> dict: + """Tune NN units, layers, and learning rate by MSE on a held-out test set.""" + check_data_shape(X=X_train, y=y_train) + check_data_shape(X=X_test, y=y_test) + encoder = make_encoder(X_train.shape[1]) + X_train_enc = encoder.fit_transform(X_train) + X_test_enc = encoder.transform(X_test) + y_scaler = StandardScaler().fit(y_train) + y_train_s = y_scaler.transform(y_train) + y_test_s = y_scaler.transform(y_test) + + def objective(trial): + units = trial.suggest_int("n_units", 16, 128) + layers = trial.suggest_int("n_layers", 1, 3) + lr = trial.suggest_float("lr", 1e-4, 1e-2, log=True) + model = _build_nn(X_train_enc.shape[1], units, layers) + _train_nn(model, X_train_enc, y_train_s, lr=lr) + with torch.no_grad(): + X_t = torch.tensor(X_test_enc, dtype=torch.float32) + preds = model(X_t).numpy().flatten() + return mean_squared_error(y_test_s, preds) + + study = optuna.create_study(direction="minimize") + study.optimize(objective, n_trials=n_trials) + return study.best_params + + +def _build_nn(input_dim: int, units: int, layers: int) -> nn.Sequential: + """Build a PyTorch Sequential model.""" + layer_list = [nn.Linear(input_dim, units), nn.ReLU()] + for _ in range(layers - 1): + layer_list.extend([nn.Linear(units, units), nn.ReLU()]) + layer_list.append(nn.Linear(units, 1)) + return nn.Sequential(*layer_list) + + +def _train_nn( + model: nn.Sequential, + X: np.ndarray, + y: np.ndarray, + epochs: int = 1000, + lr: float = 1e-3, + patience: int = 50, + val_frac: float = 0.15, + min_delta: float = 1e-5, +) -> None: + """Train in-place (full-batch Adam) with early stopping. + + A fraction ``val_frac`` of the passed data is held out to monitor validation + loss; training stops once it has not improved by ``min_delta`` for + ``patience`` consecutive epochs, and the best weights are restored. The + holdout is carved from the training data given here, so it never touches the + outer test/validation split. + """ + n_samples = X.shape[0] + n_val = int(round(n_samples * val_frac)) + perm = np.random.default_rng(0).permutation(n_samples) + val_idx, train_idx = perm[:n_val], perm[n_val:] + if n_val < 1 or train_idx.size < 1: # too small to hold out: monitor train + val_idx = train_idx = np.arange(n_samples) + + X_train = torch.tensor(X[train_idx], dtype=torch.float32) + y_train = torch.tensor(y[train_idx], dtype=torch.float32) + X_val = torch.tensor(X[val_idx], dtype=torch.float32) + y_val = torch.tensor(y[val_idx], dtype=torch.float32) + + optimizer = torch.optim.Adam(model.parameters(), lr=lr) + loss_fn = nn.MSELoss() + best_val_loss = float("inf") + best_state = None + epochs_without_improvement = 0 + for _ in range(epochs): + model.train() + optimizer.zero_grad() + loss_fn(model(X_train), y_train).backward() + optimizer.step() + model.eval() + with torch.no_grad(): + val_loss = float(loss_fn(model(X_val), y_val)) + if val_loss < best_val_loss - min_delta: + best_val_loss = val_loss + best_state = { + name: t.detach().clone() + for name, t in model.state_dict().items() + } + epochs_without_improvement = 0 + else: + epochs_without_improvement += 1 + if epochs_without_improvement >= patience: + break + if best_state is not None: + model.load_state_dict(best_state) + model.eval() + + +class Surrogate_wrapper: + """Unified predict() interface for RBF, RF, and NN surrogates. + + All three share one one-hot encoding of the raw {0, 1, 2} design variables + and one standardization of the targets, both fit here on the training data. + Targets are standardized before fitting; predict() inverse-transforms so its + return value is always in physical units. predict() takes a raw design vector + and encodes it, so the caller (simulated annealing) stays in raw design space. + """ + + def __init__( + self, + model_type: str, + X: np.ndarray, + y: np.ndarray, + params: dict, + ): + self.model_type = model_type.lower() + self.encoder = make_encoder(X.shape[1]) + X_encoded = self.encoder.fit_transform(X) + self.y_scaler = StandardScaler().fit(y) + y_scaled = self.y_scaler.transform(y) + + if self.model_type == "rbf": + self.model = RBFInterpolator( + X_encoded, + y_scaled, + kernel=params.get("kernel", "multiquadric"), + epsilon=params["epsilon"], + ) + elif self.model_type == "rf": + self.model = RandomForestRegressor(**params, random_state=42) + self.model.fit(X_encoded, y_scaled.ravel()) + elif self.model_type == "nn": + self.model = _build_nn( + X_encoded.shape[1], + params["n_units"], + params["n_layers"], + ) + _train_nn( + self.model, X_encoded, y_scaled, lr=params.get("lr", 1e-3) + ) + else: + raise NotImplementedError(f"Unknown model_type: {model_type}") + + def predict(self, X: np.ndarray) -> float: + """Return the physical-space prediction for one raw design vector.""" + X_enc = self.encoder.transform(X.reshape(1, -1)) + if self.model_type == "nn": + with torch.no_grad(): + X_t = torch.tensor(X_enc, dtype=torch.float32) + scaled = self.model(X_t).item() + elif self.model_type == "rf": + scaled = self.model.predict(X_enc)[0] + else: + scaled = float(np.squeeze(self.model(X_enc))) + return float(self.y_scaler.inverse_transform([[scaled]])[0, 0]) diff --git a/papers/scaleup/SA_optimization/surrogate_selection.csv b/papers/scaleup/SA_optimization/surrogate_selection.csv new file mode 100644 index 00000000..23773d57 --- /dev/null +++ b/papers/scaleup/SA_optimization/surrogate_selection.csv @@ -0,0 +1,9 @@ +level,qoi_name,best,val_mse,val_nrmse_amp_pct,val_nrmse_mean_pct,best_params +lev6,qoi,nn,2.5414217695066155,10.346422847895706,12.51112854539323,"{'n_units': 23, 'n_layers': 2, 'lr': 0.0009480593464653759}" +lev6,qoi_kla,nn,0.0006345451226036295,10.660299052886097,12.626611466642379,"{'n_units': 36, 'n_layers': 2, 'lr': 0.009975314935443623}" +lev6,qoi_sum,nn,3.1047786209819535,8.802302307279254,5.488729982414982,"{'n_units': 38, 'n_layers': 2, 'lr': 0.009796559328428031}" +lev6,qoi_sum_kla,rbf,0.0639246836136791,10.31320641871671,6.2904200932450625,"{'kernel': 'multiquadric', 'epsilon': 0.2921716473956134}" +lev1,qoi,nn,0.04559337741600136,0.6704719275922347,18.426961145633662,"{'n_units': 115, 'n_layers': 3, 'lr': 0.007352422228350128}" +lev1,qoi_kla,nn,1.4334769254169032e-26,4.152094975112983,29.08632682734781,"{'n_units': 58, 'n_layers': 3, 'lr': 0.004000778796522329}" +lev1,qoi_sum,nn,0.6018713490278378,3.2021518530766255,10.45378113072208,"{'n_units': 32, 'n_layers': 3, 'lr': 0.003626140666750365}" +lev1,qoi_sum_kla,nn,3.7395053463098084e-13,12.835729422646637,9.480054040832073,"{'n_units': 52, 'n_layers': 2, 'lr': 0.00027717283587404306}" diff --git a/papers/scaleup/generate_scaleup_runs/README.md b/papers/scaleup/generate_scaleup_runs/README.md new file mode 100644 index 00000000..9bca124a --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/README.md @@ -0,0 +1,3 @@ +`python randsim.py` generates study folders that contain an ensemble of Openfoam case folders, each with a different design variable sample + +The case folders use `template` as a template openfoam folder to create the new openfoam case folders. diff --git a/papers/scaleup/generate_scaleup_runs/randsim.py b/papers/scaleup/generate_scaleup_runs/randsim.py new file mode 100644 index 00000000..6b518e3d --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/randsim.py @@ -0,0 +1,163 @@ +import os + +import numpy as np + +from bird.preprocess.json_gen.design_io import * +from bird.preprocess.json_gen.generate_designs import * + + +def optimization_setup(): + # spots on the branches where we can place sparger or mixers + branchcom_spots = {} + branchcom_spots[0] = np.linspace(0.2, 0.8, 4) + branchcom_spots[1] = np.linspace(0.2, 0.8, 3) + branchcom_spots[2] = np.linspace(0.2, 0.8, 4) + # branches where the sparger and mixers are placed + branches_com = [0, 1, 2] + return branchcom_spots, branches_com + + +# Shared design pool +# once it is generated, all the other studies borrow this file +# This is useful to check if QOI values match and are correlated +DESIGN_FILE = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "designs.pkl" +) + + +if __name__ == "__main__": + branchcom_spots, branches_com = optimization_setup() + + config_dict = load_or_sample_designs( + DESIGN_FILE, branches_com, branchcom_spots, n_designs=400 + ) + + # --- hyperparameters of the study + vvm = 0.4 + constantD = True + # Dynamic mixer properties + # The sign business is because orientation depends on the branch + # so that the mixer pushes the flow consistently + mixer_params = { + "Np": 6, + "Vtip": 1.5, + "sigma": 0.35, + "radius": 0.4, + "sign": {0: "+", 1: "+", 2: "-"}, + "swirl_sign": {0: "+", 1: "+", 2: "-"}, + } + + # --- Setup the scale up study + # lev1 = 3.6 L, lev6 = 608 m3 + # 400 runs for lev 1 and lev 6 + # 200 runs for intermediate scales (match first 200 design variables + # of the 400 pool) + levels = [ + ("lev1", 0.05, 400), + ("lev2", 0.1, 200), + ("lev3", 0.2, 200), + ("lev4", 0.4, 200), + ("lev5", 0.8, 200), + ("lev6", 2.7615275385627096, 400), + ] + + # Per-level system/controlDict time-stepping. + # Coarser scales (higher levels) tolerate initial dt + level_controldict = { + "lev1": { + "maxCo": "0.25", + "maxDeltaT": "0.00025", + "deltaT": "1e-5", + "endTime": "100", + }, + "lev2": { + "maxCo": "0.25", + "maxDeltaT": "0.0005", + "deltaT": "2e-5", + "endTime": "200", + }, + "lev3": { + "maxCo": "0.25", + "maxDeltaT": "0.001", + "deltaT": "4e-5", + "endTime": "400", + }, + "lev4": { + "maxCo": "0.25", + "maxDeltaT": "0.002", + "deltaT": "5e-5", + "endTime": "400", + }, + "lev5": { + "maxCo": "0.25", + "maxDeltaT": "0.004", + "deltaT": "5e-5", + "endTime": "400", + }, + "lev6": { + "maxCo": "0.25", + "maxDeltaT": "0.005", + "deltaT": "1e-4", + "endTime": "400", + }, + } + + # Per-level get_qoi.py parameters + # gas density [kg/m3] at spargers change because of varying reactor height + # c* (low, high) uniform-prior bounds on the CO2/H2 depend on scale + level_qoi = { + "lev1": { + "rhog": 0.593333, + "cstar_co2": (7.68, 8.22), + "cstar_h2": (0.516, 0.548), + }, + "lev2": { + "rhog": 0.605962, + "cstar_co2": (6.8, 7.93), + "cstar_h2": (0.502, 0.514), + }, + "lev3": { + "rhog": 0.629974, + "cstar_co2": (7.04, 8.06), + "cstar_h2": (0.537, 0.557), + }, + "lev4": { + "rhog": 0.677935, + "cstar_co2": (8.3, 9.8), + "cstar_h2": (0.564, 0.601), + }, + "lev5": { + "rhog": 0.770533, + "cstar_co2": (7.89, 10.2), + "cstar_h2": (0.622, 0.653), + }, + "lev6": { + "rhog": 1.25, + "cstar_co2": (14, 16.9), + "cstar_h2": (1.04, 1.19), + }, + } + + parent = "study" + for name, scale, n_sim in levels: + study_folder = os.path.join(parent, f"study_0_4vvm_{name}") + generate_leveled_reactor_cases( + config_dict, + branchcom_spots, + scale=scale, + n_sim=n_sim, + study_folder=study_folder, + mixer_params=mixer_params, + vvm=vvm, + template_folder="./template", + constantD=constantD, # needs to be False if we do PBE + start_time=1, + account="gas2fuels", + cores_per_sim=8, # Pack as many sims per node as possible + cores_per_node=104, + walltime="120:00:00", + controldict_params=level_controldict[name], + rhog=level_qoi[name]["rhog"], + cstar_co2=level_qoi[name]["cstar_co2"], + cstar_h2=level_qoi[name]["cstar_h2"], + ) diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/CO2.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/CO2.gas new file mode 100644 index 00000000..e4165b1a --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/CO2.gas @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object CO2.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +dimensions [0 0 0 0 0 0 0]; + +#include "${FOAM_CASE}/constant/globalVars" + +internalField uniform 0; + + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type fixedValue; + value uniform $f_CO2; + } + + outlet + { + //type inletOutlet; + //phi phi.gas; + //inletValue $f_CO2; + //value $f_CO2; + type zeroGradient; + } + + defaultFaces + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/CO2.liquid b/papers/scaleup/generate_scaleup_runs/template/0.orig/CO2.liquid new file mode 100644 index 00000000..4b8ea6a0 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/CO2.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object CO2.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.0; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type zeroGradient; + //type fixedValue; + //value uniform 0.0; + } + + outlet + { + type zeroGradient; + } + + defaultFaces + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/H2.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/H2.gas new file mode 100644 index 00000000..9f66b2d2 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/H2.gas @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object H2.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +dimensions [0 0 0 0 0 0 0]; + +#include "${FOAM_CASE}/constant/globalVars" + +internalField uniform 0; + + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type fixedValue; + value uniform $f_H2; + } + + outlet + { + //type inletOutlet; + //phi phi.gas; + //inletValue $f_H2; + //value $f_H2; + type zeroGradient; + } + + defaultFaces + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/H2.liquid b/papers/scaleup/generate_scaleup_runs/template/0.orig/H2.liquid new file mode 100644 index 00000000..65ae8d34 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/H2.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object H2.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.0; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type zeroGradient; + //type fixedValue; + //value uniform 0.0; + } + + outlet + { + type zeroGradient; + } + + defaultFaces + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/N2.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/N2.gas new file mode 100644 index 00000000..c1d7225f --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/N2.gas @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object N2.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +dimensions [0 0 0 0 0 0 0]; + +#include "${FOAM_CASE}/constant/globalVars" + +internalField uniform 1; + + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type fixedValue; + value uniform $f_N2; + } + + outlet + { + //type inletOutlet; + //phi phi.gas; + //inletValue $f_N2; + //value $f_N2; + type zeroGradient; + } + + defaultFaces + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/T.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/T.gas new file mode 100644 index 00000000..bf0199a0 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/T.gas @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object T.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + + defaultFaces + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/T.liquid b/papers/scaleup/generate_scaleup_runs/template/0.orig/T.liquid new file mode 100644 index 00000000..7101ea31 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/T.liquid @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object T.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + defaultFaces + { + type zeroGradient; + } + +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/U.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/U.gas new file mode 100644 index 00000000..e696566f --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/U.gas @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volVectorField; + object U.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.0 0); + +#include "${FOAM_CASE}/constant/globalVars" + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + //type flowRateInletVelocity; + //massFlowRate $mflowRateGas; + //rho thermo:rho.gas; + //value $internalField; + type fixedValue; + value uniform (0 $uGasPhase 0); + } + outlet + { + type pressureInletOutletVelocity; + phi phi.gas; + value $internalField; + } + defaultFaces + { + type slip; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/U.liquid b/papers/scaleup/generate_scaleup_runs/template/0.orig/U.liquid new file mode 100644 index 00000000..1879e020 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/U.liquid @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volVectorField; + object U.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +#include "${FOAM_CASE}/constant/globalVars" + +internalField uniform (0 0 0); + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + //type flowRateInletVelocity; + //massFlowRate $mflowRateLiq; + //rho thermo:rho.liquid; + //value $internalField; + type fixedValue; + value uniform (0 0 0); + } + outlet + { + type noSlip; + } + defaultFaces + { + type noSlip; + } + +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/Ydefault.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/Ydefault.gas new file mode 100644 index 00000000..fba2945d --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/Ydefault.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object Ydefault.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.0; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type fixedValue; + value uniform 0.0; + } + + outlet + { + type zeroGradient; + } + + defaultFaces + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/Ydefault.liquid b/papers/scaleup/generate_scaleup_runs/template/0.orig/Ydefault.liquid new file mode 100644 index 00000000..a5108564 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/Ydefault.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object Ydefault.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1.0; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type fixedValue; + value uniform 1.0; + } + + outlet + { + type zeroGradient; + } + + defaultFaces + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/alpha.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/alpha.gas new file mode 100644 index 00000000..1e303fbe --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/alpha.gas @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + location "0"; + object alpha.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +#include "${FOAM_CASE}/constant/globalVars" + +internalField uniform $alphaGas; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform $alphaGas; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue uniform 1; + value uniform 1; + } + defaultFaces + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/alpha.liquid b/papers/scaleup/generate_scaleup_runs/template/0.orig/alpha.liquid new file mode 100644 index 00000000..5c92070b --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/alpha.liquid @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object alpha.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +#include "${FOAM_CASE}/constant/globalVars" + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform $alphaLiq; + } + outlet + { + type fixedValue; + value uniform 0; + } + defaultFaces + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/alphat.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/alphat.gas new file mode 100644 index 00000000..b867958f --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/alphat.gas @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object alphat.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + defaultFaces + { + type calculated; + value $internalField; + //type compressible::alphatWallFunction; + //Prt 0.85; + //value $internalField; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/alphat.liquid b/papers/scaleup/generate_scaleup_runs/template/0.orig/alphat.liquid new file mode 100644 index 00000000..2569c3ee --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/alphat.liquid @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object alphat.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + defaultFaces + { + type compressible::alphatWallFunction; + Prt 0.85; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/f.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/f.gas new file mode 100644 index 00000000..76ee77a9 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/f.gas @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object f.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1.0; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type fixedValue; + value uniform 1.0; //$internalField; // + } + + outlet + { + type zeroGradient; + } + + defaultFaces + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/k.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/k.gas new file mode 100644 index 00000000..4a3d44ca --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/k.gas @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object k.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +#include "${FOAM_CASE}/constant/globalVars" + +internalField uniform $k_inlet_gas; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type fixedValue; + value uniform $k_inlet_gas; + } + + outlet + { + type zeroGradient; + } + + defaultFaces + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/k.liquid b/papers/scaleup/generate_scaleup_runs/template/0.orig/k.liquid new file mode 100644 index 00000000..cde8f6c1 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/k.liquid @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object k.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +#include "${FOAM_CASE}/constant/globalVars" + +internalField uniform $k_inlet_liq; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type fixedValue; + value uniform $k_inlet_liq; + } + + outlet + { + type zeroGradient; + } + + defaultFaces + { + type kqRWallFunction; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/nut.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/nut.gas new file mode 100644 index 00000000..ba16dd4c --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/nut.gas @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object nut.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-8; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + defaultFaces + { + //type nutkWallFunction; + //value $internalField; + type calculated; + value $internalField; + } + + // defaultFaces + // { + // type empty; + // } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/nut.liquid b/papers/scaleup/generate_scaleup_runs/template/0.orig/nut.liquid new file mode 100644 index 00000000..1442e07f --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/nut.liquid @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object nut.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-4; + +boundaryField +{ + #includeEtc "caseDicts/setConstraintTypes" + + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + defaultFaces + { + type nutkWallFunction; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/omega.gas b/papers/scaleup/generate_scaleup_runs/template/0.orig/omega.gas new file mode 100644 index 00000000..9a1b4816 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/omega.gas @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object omega.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 -1 0 0 0 0]; + +#include "${FOAM_CASE}/constant/globalVars" + +internalField uniform $omega_inlet_gas; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform $omega_inlet_gas; + } + + outlet + { + type zeroGradient; + } + + defaultFaces + { + type zeroGradient; + //type epsilonWallFunction; + //value $internalField; + } + + // defaultFaces + // { + // type empty; + // } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/omega.liquid b/papers/scaleup/generate_scaleup_runs/template/0.orig/omega.liquid new file mode 100644 index 00000000..821a806d --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/omega.liquid @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object omega.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 -1 0 0 0 0]; + +#include "${FOAM_CASE}/constant/globalVars" + +internalField uniform $omega_inlet_liq; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform $omega_inlet_liq; + } + + outlet + { + type zeroGradient; + } + + defaultFaces + { + type omegaWallFunction; + value $internalField; + } + +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/p b/papers/scaleup/generate_scaleup_runs/template/0.orig/p new file mode 100644 index 00000000..b3a295fb --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/p @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 101325; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + outlet + { + type calculated; + value $internalField; + } + defaultFaces + { + type calculated; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/0.orig/p_rgh b/papers/scaleup/generate_scaleup_runs/template/0.orig/p_rgh new file mode 100644 index 00000000..88ee7d80 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/0.orig/p_rgh @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 101325; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type prghTotalPressure; + p0 $internalField; + U U.gas; + phi phi.gas; + rho thermo:rho.gas; + value $internalField; + } + defaultFaces + { + type fixedFluxPressure; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/Allclean b/papers/scaleup/generate_scaleup_runs/template/Allclean new file mode 100755 index 00000000..f55e0ec9 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/Allclean @@ -0,0 +1,18 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial clean functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +# Remove surface, features and solution +#rm -rf constant/extendedFeatureEdgeMesh > /dev/null 2>&1 +#rm -f constant/triSurface/*.eMesh > /dev/null 2>&1 +#rm -rf constant/polyMesh > /dev/null 2>&1 +#rm -rf processor* > /dev/null 2>&1 +rm -rf 0 +cleanCase + +#rm *.obj +#rm *.stl + +#------------------------------------------------------------------------------ diff --git a/papers/scaleup/generate_scaleup_runs/template/computeQOI.sh b/papers/scaleup/generate_scaleup_runs/template/computeQOI.sh new file mode 100644 index 00000000..800e45d4 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/computeQOI.sh @@ -0,0 +1,13 @@ +if [ ! -f qoi.txt ]; then + # Reconstruct if needed + source /projects/gas2fuels/ofoam_cray_mpich/OpenFOAM-dev/etc/bashrc + reconstructPar -newTimes + module load conda + conda activate /projects/gas2fuels/conda_env/bird_mixer/ + python read_history.py -cr .. -cn local -df data + python get_qoi.py + conda deactivate +else + echo "WARNING: QOI already computed" +fi + diff --git a/papers/scaleup/generate_scaleup_runs/template/constant/fvModels b/papers/scaleup/generate_scaleup_runs/template/constant/fvModels new file mode 100644 index 00000000..353551df --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/constant/fvModels @@ -0,0 +1,128 @@ +FoamFile +{ + version 9.0; + format ascii; + class dictionary; + location "constant"; + object fvModels; +} + +codedSource +{ + type coded; + selectionMode all; + field U.liquid; + name sourceTime; + + codeInclude + #{ + #include "dynamicMix_util.H" + #}; + + codeOptions + #{ + -I${FOAM_CASE}/constant + #}; + codeAddAlphaRhoSup + #{ + const Time& time = mesh().time(); + const scalarField& V = mesh().V(); + vectorField& Usource = eqn.source(); + const vectorField& C = mesh().C(); + const volScalarField& rhoL = + mesh().lookupObject("thermo:rho.liquid"); + const volScalarField& alphaL = + mesh().lookupObject("alpha.liquid"); + const volVectorField& UL = + mesh().lookupObject("U.liquid"); + double pi=3.141592654; + double source_pt_x=13.807637692813548; + double source_pt_y=1.3807637692813548; + double source_pt_z=12.426873923532193; + double disk_rad=0.9665346384969483; + double disk_area=pi*disk_rad*disk_rad; + double power=7626.034346240216; + double smear_factor=3.0; + const scalar startTime = 1; + if (time.value() > startTime) + { + // Get V1 + double source_sign_factor = 1.0; + double V1 = 0; + double V2 = 0; + double rhoV; + double dist_tol = disk_rad*5; + + double dist_n; + double upV = 0; + double uprhoV = 0; + double upVvol = 0; + double downV = 0; + double downrhoV = 0; + double downVvol = 0; + double dist2; + forAll(C,i) + { + dist2 = (C[i].x()-source_pt_x)*(C[i].x()-source_pt_x); + dist2 += (C[i].y()-source_pt_y)*(C[i].y()-source_pt_y); + dist2 += (C[i].z()-source_pt_z)*(C[i].z()-source_pt_z); + + dist_n = (C[i].x()-source_pt_x); + + if (dist2 < dist_tol*dist_tol && dist_n < -dist_tol/2) { + upVvol += V[i] * alphaL[i]; + upV += V[i] * alphaL[i] * UL[i][0]; + uprhoV += V[i] * alphaL[i] * rhoL[i]; + } + if (dist2 < dist_tol*dist_tol && dist_n > dist_tol/2) { + downVvol += V[i] * alphaL[i]; + downV += V[i] * alphaL[i] * UL[i][0]; + downrhoV += V[i] * alphaL[i] * rhoL[i]; + } + } + + reduce(uprhoV, sumOp()); + reduce(downrhoV, sumOp()); + reduce(upV, sumOp()); + reduce(downV, sumOp()); + reduce(downVvol, sumOp()); + reduce(upVvol, sumOp()); + + downV /= downVvol; + upV /= upVvol; + downrhoV /= downVvol; + uprhoV /= upVvol; + + if (upV <= 0 && downV <= 0) { + source_sign_factor = -1.0; + V1 = std::abs(upV); + rhoV = uprhoV; + } else if (upV >= 0 && downV >= 0) { + source_sign_factor = 1.0; + V1 = std::abs(downV); + rhoV = downrhoV; + } else { + V1 = 0.0; + source_sign_factor = -1.0; + rhoV = uprhoV; + Foam::Info << "[BIRD:DYNMIX WARN] " << "upV = " << upV << " downV = " << downV << " for source at " << source_pt_x << ", " << source_pt_y << ", " << source_pt_z << endl; + } + Foam::Info << "[BIRD:DYNMIX INFO] V1 = " << V1 << endl; + + // Get V2 + V2 = findV2(power, rhoV, disk_area, V1); + + forAll(C,i) + { + double Thrust=0.5*rhoL[i]*(V2*V2 - V1*V1)*disk_area; + double dist2=(C[i].x()-source_pt_x)*(C[i].x()-source_pt_x); + dist2 += (C[i].y()-source_pt_y)*(C[i].y()-source_pt_y); + dist2 += (C[i].z()-source_pt_z)*(C[i].z()-source_pt_z); + double epsilon=pow(V[i],0.33333)*smear_factor; + double sourceterm=alphaL[i]*(Thrust/pow(pi,1.5)/pow(epsilon,3.0))* + exp(-dist2/(epsilon*epsilon)); + Usource[i][0] -= source_sign_factor*sourceterm*V[i]; + } + } + #}; +}; diff --git a/papers/scaleup/generate_scaleup_runs/template/constant/g b/papers/scaleup/generate_scaleup_runs/template/constant/g new file mode 100644 index 00000000..770a5619 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/constant/g @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/constant/globalVars b/papers/scaleup/generate_scaleup_runs/template/constant/globalVars new file mode 100644 index 00000000..1a0ce724 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/constant/globalVars @@ -0,0 +1,83 @@ +T0 300; //initial T(K) which stays constant +VVM 1.6; +//****water Liquid properties************** +CpMixLiq 4181; +muMixLiq #calc "2.414e-5 * pow(10,247.8/($T0 - 140.0))"; //viscosity (Pa.s) of water as a function of T(K) +kThermLiq 0.62; // W/m-K +rho0MixLiq 1000; // kg/m^3 +sigmaLiq 0.07; //surface tension N/m +//Wilke-Chang params for diffusion coefficient of a given solute in water (solvent) +WC_psi 2.6; +WC_M 18; // kg/kmol +WC_V_O2 25.6e-3; // m3/kmol molar volume at normal boiling temperature (Treybal 1968) +WC_V_H2 14.3e-3; +WC_V_CO2 34e-3; +WC_V_CO 30.7e-3; +WC_V_N2 31.2e-3; +WC_V_CH4 35e-3; // V_b[cm3/mol]=0.285*V_critical^1.048 (Tyn and Calus; ESTIMATING LIQUID MOLAL VOLUME; Processing, Volume 21, Issue 4, Pages 16 - 17) +//****** diffusion coeff *********** +D_H2 #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_H2,0.6)"; +D_CO2 #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_CO2,0.6)"; +D_CO #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_CO,0.6)"; +D_CH4 #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_CH4,0.6)"; +D_N2 #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_N2,0.6)"; +//****** Henry coeff *************** +H_O2_298 0.032; +DH_O2 1700; +H_CO2_298 0.83; +DH_CO2 2400; +H_CO_298 0.023; +DH_CO 1300; +H_H2_298 0.019; +DH_H2 500; +H_CH4_298 0.032; +DH_CH4 1900; +H_N2_298 0.015; +DH_N2 1300; +He_H2 #calc "$H_H2_298 * exp($DH_H2 *(1. / $T0 - 1./298.15))"; +He_CO #calc "$H_CO_298 * exp($DH_CO *(1. / $T0 - 1./298.15))"; +He_CO2 #calc "$H_CO2_298 * exp($DH_CO2 *(1. / $T0 - 1./298.15))"; +He_CH4 #calc "$H_CH4_298 * exp($DH_CH4 *(1. / $T0 - 1./298.15))"; +He_N2 #calc "$H_N2_298 * exp($DH_N2 *(1. / $T0 - 1./298.15))"; +//*******inlet gas frac************* +f_H2 0.1; +f_CO2 0.9; +f_N2 0.0; +//*******inlet gas frac************* +inletA 11.8966; +liqVol 606.514; +alphaGas 1; +alphaLiq 0; +uGasPhase #calc "$liqVol * $VVM / (60 * $inletA * $alphaGas)"; +//********************************* +LeLiqH2 #calc "$kThermLiq / $rho0MixLiq / $D_H2 / $CpMixLiq"; +LeLiqCO #calc "$kThermLiq / $rho0MixLiq / $D_CO / $CpMixLiq"; +LeLiqCO2 #calc "$kThermLiq / $rho0MixLiq / $D_CO2 / $CpMixLiq"; // = 74 +LeLiqCH4 #calc "$kThermLiq / $rho0MixLiq / $D_CH4 / $CpMixLiq"; +LeLiqN2 #calc "$kThermLiq / $rho0MixLiq / $D_N2 / $CpMixLiq"; +LeLiqMix #calc "$f_CO2*$LeLiqCO2+$f_H2*$LeLiqH2"; +PrMixLiq #calc "$CpMixLiq * $muMixLiq / $kThermLiq"; +//********************************* +kH2 #calc "$D_H2*$rho0MixLiq*$CpMixLiq*$LeLiqMix"; +PrH2 #calc "$muMixLiq*$CpMixLiq / $kH2"; + +kCO #calc "$D_CO*$rho0MixLiq*$CpMixLiq*$LeLiqMix"; +PrCO #calc "$muMixLiq*$CpMixLiq / $kCO"; + +kCO2 #calc "$D_CO2*$rho0MixLiq*$CpMixLiq*$LeLiqMix"; +PrCO2 #calc "$muMixLiq*$CpMixLiq / $kCO2"; + +kCH4 #calc "$D_CH4*$rho0MixLiq*$CpMixLiq*$LeLiqMix"; +PrCH4 #calc "$muMixLiq*$CpMixLiq / $kCH4"; + +kN2 #calc "$D_N2*$rho0MixLiq*$CpMixLiq*$LeLiqMix"; +PrN2 #calc "$muMixLiq*$CpMixLiq / $kN2"; +//********************************* +l_scale 0.5; +intensity 0.05; +k_inlet_gas #calc "1.5 * Foam::pow(($uGasPhase), 2) * Foam::pow($intensity, 2)"; +k_inlet_liq #calc "1.5 * Foam::pow(($uGasPhase), 2) * Foam::pow($intensity, 2)"; +eps_inlet_gas #calc "pow(0.09,0.75) * Foam::pow($k_inlet_gas, 1.5) / ($l_scale * 0.07)"; +eps_inlet_liq #calc "pow(0.09,0.75) * Foam::pow($k_inlet_liq, 1.5) / ($l_scale * 0.07)"; +omega_inlet_gas #calc "pow(0.09,-0.25) * pow($k_inlet_gas,0.5) / ($l_scale * 0.07)"; +omega_inlet_liq #calc "pow(0.09,-0.25) * pow($k_inlet_liq,0.5) / ($l_scale * 0.07)"; diff --git a/papers/scaleup/generate_scaleup_runs/template/constant/globalVars_temp b/papers/scaleup/generate_scaleup_runs/template/constant/globalVars_temp new file mode 100644 index 00000000..fcb076a7 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/constant/globalVars_temp @@ -0,0 +1,83 @@ +T0 300; //initial T(K) which stays constant +VVM 0.2; +//****water Liquid properties************** +CpMixLiq 4181; +muMixLiq #calc "2.414e-5 * pow(10,247.8/($T0 - 140.0))"; //viscosity (Pa.s) of water as a function of T(K) +kThermLiq 0.62; // W/m-K +rho0MixLiq 1000; // kg/m^3 +sigmaLiq 0.07; //surface tension N/m +//Wilke-Chang params for diffusion coefficient of a given solute in water (solvent) +WC_psi 2.6; +WC_M 18; // kg/kmol +WC_V_O2 25.6e-3; // m3/kmol molar volume at normal boiling temperature (Treybal 1968) +WC_V_H2 14.3e-3; +WC_V_CO2 34e-3; +WC_V_CO 30.7e-3; +WC_V_N2 31.2e-3; +WC_V_CH4 35e-3; // V_b[cm3/mol]=0.285*V_critical^1.048 (Tyn and Calus; ESTIMATING LIQUID MOLAL VOLUME; Processing, Volume 21, Issue 4, Pages 16 - 17) +//****** diffusion coeff *********** +D_H2 #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_H2,0.6)"; +D_CO2 #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_CO2,0.6)"; +D_CO #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_CO,0.6)"; +D_CH4 #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_CH4,0.6)"; +D_N2 #calc "1.173e-16 * pow($WC_psi * $WC_M,0.5) * $T0 / $muMixLiq / pow($WC_V_N2,0.6)"; +//****** Henry coeff *************** +H_O2_298 0.032; +DH_O2 1700; +H_CO2_298 0.83; +DH_CO2 2400; +H_CO_298 0.023; +DH_CO 1300; +H_H2_298 0.019; +DH_H2 500; +H_CH4_298 0.032; +DH_CH4 1900; +H_N2_298 0.015; +DH_N2 1300; +He_H2 #calc "$H_H2_298 * exp($DH_H2 *(1. / $T0 - 1./298.15))"; +He_CO #calc "$H_CO_298 * exp($DH_CO *(1. / $T0 - 1./298.15))"; +He_CO2 #calc "$H_CO2_298 * exp($DH_CO2 *(1. / $T0 - 1./298.15))"; +He_CH4 #calc "$H_CH4_298 * exp($DH_CH4 *(1. / $T0 - 1./298.15))"; +He_N2 #calc "$H_N2_298 * exp($DH_N2 *(1. / $T0 - 1./298.15))"; +//*******inlet gas frac************* +f_H2 0.1; +f_CO2 0.9; +f_N2 0.0; +//*******inlet gas frac************* +inletA ; +liqVol ; +alphaGas 1; +alphaLiq 0; +uGasPhase #calc "$liqVol * $VVM / (60 * $inletA * $alphaGas)"; +//********************************* +LeLiqH2 #calc "$kThermLiq / $rho0MixLiq / $D_H2 / $CpMixLiq"; +LeLiqCO #calc "$kThermLiq / $rho0MixLiq / $D_CO / $CpMixLiq"; +LeLiqCO2 #calc "$kThermLiq / $rho0MixLiq / $D_CO2 / $CpMixLiq"; // = 74 +LeLiqCH4 #calc "$kThermLiq / $rho0MixLiq / $D_CH4 / $CpMixLiq"; +LeLiqN2 #calc "$kThermLiq / $rho0MixLiq / $D_N2 / $CpMixLiq"; +LeLiqMix #calc "$f_CO2*$LeLiqCO2+$f_H2*$LeLiqH2"; +PrMixLiq #calc "$CpMixLiq * $muMixLiq / $kThermLiq"; +//********************************* +kH2 #calc "$D_H2*$rho0MixLiq*$CpMixLiq*$LeLiqMix"; +PrH2 #calc "$muMixLiq*$CpMixLiq / $kH2"; + +kCO #calc "$D_CO*$rho0MixLiq*$CpMixLiq*$LeLiqMix"; +PrCO #calc "$muMixLiq*$CpMixLiq / $kCO"; + +kCO2 #calc "$D_CO2*$rho0MixLiq*$CpMixLiq*$LeLiqMix"; +PrCO2 #calc "$muMixLiq*$CpMixLiq / $kCO2"; + +kCH4 #calc "$D_CH4*$rho0MixLiq*$CpMixLiq*$LeLiqMix"; +PrCH4 #calc "$muMixLiq*$CpMixLiq / $kCH4"; + +kN2 #calc "$D_N2*$rho0MixLiq*$CpMixLiq*$LeLiqMix"; +PrN2 #calc "$muMixLiq*$CpMixLiq / $kN2"; +//********************************* +l_scale 0.5; +intensity 0.05; +k_inlet_gas #calc "1.5 * Foam::pow(($uGasPhase), 2) * Foam::pow($intensity, 2)"; +k_inlet_liq #calc "1.5 * Foam::pow(($uGasPhase), 2) * Foam::pow($intensity, 2)"; +eps_inlet_gas #calc "pow(0.09,0.75) * Foam::pow($k_inlet_gas, 1.5) / ($l_scale * 0.07)"; +eps_inlet_liq #calc "pow(0.09,0.75) * Foam::pow($k_inlet_liq, 1.5) / ($l_scale * 0.07)"; +omega_inlet_gas #calc "pow(0.09,-0.25) * pow($k_inlet_gas,0.5) / ($l_scale * 0.07)"; +omega_inlet_liq #calc "pow(0.09,-0.25) * pow($k_inlet_liq,0.5) / ($l_scale * 0.07)"; diff --git a/papers/scaleup/generate_scaleup_runs/template/constant/momentumTransport.gas b/papers/scaleup/generate_scaleup_runs/template/constant/momentumTransport.gas new file mode 100644 index 00000000..cca64eef --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/constant/momentumTransport.gas @@ -0,0 +1,26 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + location "constant"; + object momentumTransport.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; +//simulationType RAS; +RAS +{ + model kOmegaSSTSato; + turbulence on; + printCoeff on; +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/constant/momentumTransport.liquid b/papers/scaleup/generate_scaleup_runs/template/constant/momentumTransport.liquid new file mode 100644 index 00000000..df3e15b5 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/constant/momentumTransport.liquid @@ -0,0 +1,27 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + location "constant"; + object momentumTransport.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +//simulationType laminar; +simulationType RAS; + +RAS +{ + model kOmegaSSTSato; + turbulence on; + printCoeffs on; +} + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/constant/phaseProperties b/papers/scaleup/generate_scaleup_runs/template/constant/phaseProperties new file mode 100644 index 00000000..a3c90f5a --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/constant/phaseProperties @@ -0,0 +1,295 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "$FOAM_CASE/constant/globalVars" + +type interfaceCompositionPhaseChangePopulationBalanceMultiphaseSystem; + +phases (gas liquid); + +populationBalances (bubbles); + +gas +{ + type multiComponentPhaseModel;//pureIsothermalPhaseModel; + + diameterModel velocityGroup; + + velocityGroupCoeffs + { + populationBalance bubbles; + + shapeModel spherical; + + sizeGroups + ( + f1 {dSph 1.4e-3; value 0.0;} + f2 {dSph 1.8e-3; value 0.0;} + f3 {dSph 2.2e-3; value 0.0;} + f4 {dSph 2.6e-3; value 0.0;} + f5 {dSph 3e-3; value 1.0;} + f6 {dSph 3.4e-3; value 0.0;} + f7 {dSph 3.8e-3; value 0.0;} + f8 {dSph 4.2e-3; value 0.0;} + f9 {dSph 4.6e-3; value 0.0;} + f10 {dSph 5.0e-3; value 0.0;} + ); + } + + residualAlpha 1e-6; + + Sc 0.7; +} + +liquid +{ + type multiComponentPhaseModel;//pureIsothermalPhaseModel; + + diameterModel constant; + + constantCoeffs + { + d 1e-4; + } + Sc #codeStream + { + code + #{ + os << ($LeLiqMix * $CpMixLiq * $muMixLiq / $kThermLiq); + #}; + }; + + residualAlpha 1e-6; +} + +populationBalanceCoeffs +{ + bubbles + { + continuousPhase liquid; + + coalescenceModels + ( + LehrMilliesMewes{ + efficiency 4.695; + uCrit 0.08; + alphaMax 0.6; + } + ); + + binaryBreakupModels + (); + + breakupModels + ( + Laakkonen { + efficiency 13.83; + daughterSizeDistributionModel Laakkonen; + } + + ); + + driftModels + ( + densityChange{} + ); + + nucleationModels + (); + } +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.gas 0.7; + minPartlyContinuousAlpha.gas 0.3; + minFullyContinuousAlpha.liquid 0.7; + minPartlyContinuousAlpha.liquid 0.3; + } + heatTransfer + { + type linear; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.liquid 1; + minPartlyContinuousAlpha.liquid 0; + } + massTransfer + { + $heatTransfer; + } +} + +surfaceTension +( + (gas and liquid) + { + type constant; + sigma $sigmaLiq; + } +); + +interfaceCompression +(); + +aspectRatio +( + (gas in liquid) + { + type Wellek; + } +); + + +drag +( + (gas in liquid) + { + type Grace; // Need to install the model available at https://github.com/NREL/BioReactorDesign + //type IshiiZuber; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (gas in liquid) + { + type constantCoefficient; + Cvm 0.5; + } +); + +// heatTransfer +// (); + +heatTransfer.gas +( + (gas in liquid) + { + type spherical; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +heatTransfer.liquid +( + (gas in liquid) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type spherical; + residualAlpha 1e-4; + } +); + +interfaceComposition.gas +(); + +interfaceComposition.liquid +( + (liquid and gas) + { + type Henry; + species ( CO2 H2 ); + k ( $He_CO2 $He_H2 ); + Le $LeLiqMix; + } +); + +diffusiveMassTransfer.gas +(); + +diffusiveMassTransfer.liquid +( + (gas in liquid) + { + type Higbie; // Need to install the model available at https://github.com/NREL/BioReactorDesign + //type Frossling; + Le $LeLiqMix; + } + + (liquid in gas) + { + type spherical; + Le 1.0; //not used for spherical + } +); + +phaseTransfer +(); + +lift +( + (gas in liquid) + { + type wallDamped; + + wallDamping + { + type cosine; + Cd 3.0; + } + + lift + { + type Tomiyama; + + swarmCorrection + { + type none; + } + } + } + +); + +wallLubrication +( + (gas in liquid) + { + type Antal; + Cw1 -0.01; + Cw2 0.05; + } +); + +turbulentDispersion +( + (gas in liquid) + { + type Burns; + sigma 0.9; + } +); + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/constant/phaseProperties_constantd b/papers/scaleup/generate_scaleup_runs/template/constant/phaseProperties_constantd new file mode 100644 index 00000000..e029df99 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/constant/phaseProperties_constantd @@ -0,0 +1,261 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "$FOAM_CASE/constant/globalVars" + +type interfaceCompositionPhaseChangeMultiphaseSystem; + +phases (gas liquid); + +gas +{ + type multiComponentPhaseModel;//pureIsothermalPhaseModel; + + diameterModel constant; + + constantCoeffs + { + d 3e-3; + } + residualAlpha 1e-6; + Sc 0.7; +} + +liquid +{ + type multiComponentPhaseModel;//pureIsothermalPhaseModel; + + diameterModel constant; + + constantCoeffs + { + d 1e-4; + } + Sc #codeStream + { + code + #{ + os << ($LeLiqMix * $CpMixLiq * $muMixLiq / $kThermLiq); + #}; + }; + + residualAlpha 1e-6; +} + +populationBalanceCoeffs +{ + bubbles + { + continuousPhase liquid; + + coalescenceModels + (); + + binaryBreakupModels + (); + + breakupModels + (); + + driftModels + (); + + nucleationModels + (); + } +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.gas 0.7; + minPartlyContinuousAlpha.gas 0.3; + minFullyContinuousAlpha.liquid 0.7; + minPartlyContinuousAlpha.liquid 0.3; + } + heatTransfer + { + type linear; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.liquid 1; + minPartlyContinuousAlpha.liquid 0; + } + massTransfer + { + $heatTransfer; + } +} + +surfaceTension +( + (gas and liquid) + { + type constant; + sigma $sigmaLiq; + } +); + +interfaceCompression +(); + +aspectRatio +( + (gas in liquid) + { + type Wellek; + } +); + + +drag +( + (gas in liquid) + { + type Grace; // Need to install the model available at https://github.com/NREL/BioReactorDesign + //type IshiiZuber; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (gas in liquid) + { + type constantCoefficient; + Cvm 0.5; + } +); + +// heatTransfer +// (); + +heatTransfer.gas +( + (gas in liquid) + { + type spherical; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +heatTransfer.liquid +( + (gas in liquid) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type spherical; + residualAlpha 1e-4; + } +); + +interfaceComposition.gas +(); + +interfaceComposition.liquid +( + (liquid and gas) + { + type Henry; + species ( CO2 H2 ); + k ( $He_CO2 $He_H2 ); + Le $LeLiqMix; + } +); + +diffusiveMassTransfer.gas +(); + +diffusiveMassTransfer.liquid +( + (gas in liquid) + { + type Higbie; // Need to install the model available at https://github.com/NREL/BioReactorDesign + //type Frossling; + Le $LeLiqMix; + } + + (liquid in gas) + { + type spherical; + Le 1.0; //not used for spherical + } +); + +phaseTransfer +(); + +lift +( + (gas in liquid) + { + type wallDamped; + + wallDamping + { + type cosine; + Cd 3.0; + } + + lift + { + type Tomiyama; + + swarmCorrection + { + type none; + } + } + } + +); + +wallLubrication +( + (gas in liquid) + { + type Antal; + Cw1 -0.01; + Cw2 0.05; + } +); + +turbulentDispersion +( + (gas in liquid) + { + type Burns; + sigma 0.9; + } +); + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/constant/phaseProperties_pbe b/papers/scaleup/generate_scaleup_runs/template/constant/phaseProperties_pbe new file mode 100644 index 00000000..a3c90f5a --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/constant/phaseProperties_pbe @@ -0,0 +1,295 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 9 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "$FOAM_CASE/constant/globalVars" + +type interfaceCompositionPhaseChangePopulationBalanceMultiphaseSystem; + +phases (gas liquid); + +populationBalances (bubbles); + +gas +{ + type multiComponentPhaseModel;//pureIsothermalPhaseModel; + + diameterModel velocityGroup; + + velocityGroupCoeffs + { + populationBalance bubbles; + + shapeModel spherical; + + sizeGroups + ( + f1 {dSph 1.4e-3; value 0.0;} + f2 {dSph 1.8e-3; value 0.0;} + f3 {dSph 2.2e-3; value 0.0;} + f4 {dSph 2.6e-3; value 0.0;} + f5 {dSph 3e-3; value 1.0;} + f6 {dSph 3.4e-3; value 0.0;} + f7 {dSph 3.8e-3; value 0.0;} + f8 {dSph 4.2e-3; value 0.0;} + f9 {dSph 4.6e-3; value 0.0;} + f10 {dSph 5.0e-3; value 0.0;} + ); + } + + residualAlpha 1e-6; + + Sc 0.7; +} + +liquid +{ + type multiComponentPhaseModel;//pureIsothermalPhaseModel; + + diameterModel constant; + + constantCoeffs + { + d 1e-4; + } + Sc #codeStream + { + code + #{ + os << ($LeLiqMix * $CpMixLiq * $muMixLiq / $kThermLiq); + #}; + }; + + residualAlpha 1e-6; +} + +populationBalanceCoeffs +{ + bubbles + { + continuousPhase liquid; + + coalescenceModels + ( + LehrMilliesMewes{ + efficiency 4.695; + uCrit 0.08; + alphaMax 0.6; + } + ); + + binaryBreakupModels + (); + + breakupModels + ( + Laakkonen { + efficiency 13.83; + daughterSizeDistributionModel Laakkonen; + } + + ); + + driftModels + ( + densityChange{} + ); + + nucleationModels + (); + } +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.gas 0.7; + minPartlyContinuousAlpha.gas 0.3; + minFullyContinuousAlpha.liquid 0.7; + minPartlyContinuousAlpha.liquid 0.3; + } + heatTransfer + { + type linear; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.liquid 1; + minPartlyContinuousAlpha.liquid 0; + } + massTransfer + { + $heatTransfer; + } +} + +surfaceTension +( + (gas and liquid) + { + type constant; + sigma $sigmaLiq; + } +); + +interfaceCompression +(); + +aspectRatio +( + (gas in liquid) + { + type Wellek; + } +); + + +drag +( + (gas in liquid) + { + type Grace; // Need to install the model available at https://github.com/NREL/BioReactorDesign + //type IshiiZuber; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (gas in liquid) + { + type constantCoefficient; + Cvm 0.5; + } +); + +// heatTransfer +// (); + +heatTransfer.gas +( + (gas in liquid) + { + type spherical; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +heatTransfer.liquid +( + (gas in liquid) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type spherical; + residualAlpha 1e-4; + } +); + +interfaceComposition.gas +(); + +interfaceComposition.liquid +( + (liquid and gas) + { + type Henry; + species ( CO2 H2 ); + k ( $He_CO2 $He_H2 ); + Le $LeLiqMix; + } +); + +diffusiveMassTransfer.gas +(); + +diffusiveMassTransfer.liquid +( + (gas in liquid) + { + type Higbie; // Need to install the model available at https://github.com/NREL/BioReactorDesign + //type Frossling; + Le $LeLiqMix; + } + + (liquid in gas) + { + type spherical; + Le 1.0; //not used for spherical + } +); + +phaseTransfer +(); + +lift +( + (gas in liquid) + { + type wallDamped; + + wallDamping + { + type cosine; + Cd 3.0; + } + + lift + { + type Tomiyama; + + swarmCorrection + { + type none; + } + } + } + +); + +wallLubrication +( + (gas in liquid) + { + type Antal; + Cw1 -0.01; + Cw2 0.05; + } +); + +turbulentDispersion +( + (gas in liquid) + { + type Burns; + sigma 0.9; + } +); + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/constant/thermophysicalProperties.gas b/papers/scaleup/generate_scaleup_runs/template/constant/thermophysicalProperties.gas new file mode 100644 index 00000000..11b1c4b9 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/constant/thermophysicalProperties.gas @@ -0,0 +1,142 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture multiComponentMixture; + transport sutherland; + thermo janaf; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; + //energy sensibleEnthalpy; +} + + +species +( + H2 + CO2 + N2 +); + +defaultSpecie N2; + +CO2 +{ + specie + { + molWeight 44.00995; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.85746029 0.00441437026 -2.21481404e-06 5.23490188e-10 -4.72084164e-14 -48759.166 2.27163806 ); + lowCpCoeffs ( 2.35677352 0.00898459677 -7.12356269e-06 2.45919022e-09 -1.43699548e-13 -48371.9697 9.90105222 ); + } + transport + { + As 1.572e-06; + Ts 240; + } + elements + { + C 1; + O 2; + } +} + +water +{ + specie + { + molWeight 18.01534; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.03399249 0.00217691804 -1.64072518e-07 -9.7041987e-11 1.68200992e-14 -30004.2971 4.9667701 ); + lowCpCoeffs ( 4.19864056 -0.0020364341 6.52040211e-06 -5.48797062e-09 1.77197817e-12 -30293.7267 -0.849032208 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + H 2; + O 1; + } +} + +N2 +{ + specie + { + molWeight 28.0134; + } + thermodynamics + { + Tlow 250; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 2.92664 0.0014879768 -5.68476e-07 1.0097038e-10 -6.753351e-15 -922.7977 5.980528 ); + lowCpCoeffs ( 3.298677 0.0014082404 -3.963222e-06 5.641515e-09 -2.444854e-12 -1020.8999 3.950372 ); + } + transport + { + As 1.512e-06; + Ts 120; + } + elements + { + N 2; + } +} + +H2 +{ + specie + { + molWeight 2.01594; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.3372792 -4.94024731e-05 4.99456778e-07 -1.79566394e-10 2.00255376e-14 -950.158922 -3.20502331 ); + lowCpCoeffs ( 2.34433112 0.00798052075 -1.9478151e-05 2.01572094e-08 -7.37611761e-12 -917.935173 0.683010238 ); + } + transport + { + As 6.362e-07; + Ts 72; + } + elements + { + H 2; + } +} + + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/constant/thermophysicalProperties.liquid b/papers/scaleup/generate_scaleup_runs/template/constant/thermophysicalProperties.liquid new file mode 100644 index 00000000..d324ec51 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/constant/thermophysicalProperties.liquid @@ -0,0 +1,108 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "$FOAM_CASE/constant/globalVars" + +thermoType +{ + type heRhoThermo; + mixture multiComponentMixture; + transport const; + thermo hConst; + equationOfState rhoConst;//rPolynomial; + specie specie; + energy sensibleInternalEnergy; + //energy sensibleEnthalpy; +} + +species +( + CO2 + water + H2 +); + +inertSpecie water; + +water +{ + specie + { + molWeight 18.0153; + } + equationOfState + { + rho $rho0MixLiq; + } + thermodynamics + { + Cp $CpMixLiq; + Hf -1.5879e+07; + } + transport + { + mu $muMixLiq; + Pr $PrMixLiq; + } +} + +CO2 +{ + specie + { + molWeight 44.00995; + } + equationOfState + { + rho $rho0MixLiq; + } + thermodynamics + { + Cp $CpMixLiq; + Hf -1.5879e+07; + } + transport + { + mu $muMixLiq; + Pr $PrCO2; + } +} + +H2 +{ + specie + { + molWeight 2.01594; + } + equationOfState + { + rho $rho0MixLiq; + } + thermodynamics + { + Cp $CpMixLiq; + Hf -1.5879e+07;//-9402451; + } + transport + { + mu $muMixLiq; + Pr $PrH2; + } +} + + + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/get_qoi.py b/papers/scaleup/generate_scaleup_runs/template/get_qoi.py new file mode 100644 index 00000000..6c06e054 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/get_qoi.py @@ -0,0 +1,227 @@ +import json +import os +import pickle as pkl + +import matplotlib as mpl +import numpy as np +from prettyPlot.plotting import * +from scipy.optimize import curve_fit + + +def get_sim_folds(path): + folds = os.listdir(path) + sim_folds = [] + for fold in folds: + if fold.startswith("loop"): + sim_folds.append(fold) + return sim_folds + + +def func(t, cstar, kla): + t = t + t0 = 0 + c0 = 0 + return (cstar - c0) * (1 - np.exp(-kla * (t - t0))) + c0 + + +def get_vl(verb=False): + filename = os.path.join("constant", "globalVars") + with open(filename, "r+") as f: + lines = f.readlines() + for line in lines: + if line.startswith("liqVol"): + vol = float(line.split()[-1][:-1]) + break + if verb: + print(f"Read liqVol = {vol}m3") + return vol + + +def get_vvm(verb=False): + filename = os.path.join("constant", "globalVars") + with open(filename, "r+") as f: + lines = f.readlines() + for line in lines: + if line.startswith("VVM"): + vvm = float(line.split()[-1][:-1]) + break + if verb: + print(f"Read VVM = {vvm} [-]") + return vvm + + +def get_As(verb=False): + filename = os.path.join("constant", "globalVars") + with open(filename, "r+") as f: + lines = f.readlines() + for line in lines: + if line.startswith("inletA"): + As = float(line.split()[-1][:-1]) + break + if verb: + print(f"Read As = {As}m2") + return As + + +def get_pmix(verb=False): + with open("system/mixers.json", "r+") as f: + data = json.load(f) + mixer_list = data["mixers"] + pmix = 0 + for mix in mixer_list: + pmix += mix["power"] / 1000 + if verb: + print(f"Read Mixing power = {pmix}kW") + return pmix + + +def get_lh(verb=False): + filename = os.path.join("system", "setFieldsDict") + with open(filename, "r+") as f: + lines = f.readlines() + for line in lines: + if "box (-1.0 -1.0 -1.0)" in line: + height = float(line.split("(")[2].split()[1]) + break + if verb: + print(f"Read Height = {height}m") + return height + + +def get_pinj(vvm, Vl, As, lh): + rhog = 0.593333 # kg /m3 + Vg = Vl * vvm / (60 * As * 1) # m/s + Ptank = 101325 # Pa + # Ptank = 0 # Pa + rhoL = 1000 # kg / m3 + Pl = 101325 + rhoL * 9.8 * lh # Pa + # W + P1 = rhog * As * Vg**3 + # W + P2 = (Pl - Ptank) * As * Vg + # kg /s + MF = rhog * Vg * As + # kwh / kg + e_m = (P1 + P2) / (3600 * 1000 * MF) + + # returns kW + return (P1 + P2) * 1e-3 + + +def get_qoi(kla_co2, cs_co2, kla_h2, cs_h2, verb=False): + vvm = get_vvm(verb) + As = get_As(verb) + V_l = get_vl(verb) + liqh = get_lh(verb) + P_inj = get_pinj(vvm, V_l, As, liqh) + P_mix = get_pmix(verb) + + qoi_kla_co2 = kla_co2 * cs_co2 * V_l * 0.04401 + qoi_kla_h2 = kla_h2 * cs_h2 * V_l * 0.002016 + + qoi_co2 = qoi_kla_co2 / (P_mix / 3600 + P_inj / 3600) + qoi_h2 = qoi_kla_h2 / (P_mix / 3600 + P_inj / 3600) + return ( + qoi_co2 * qoi_h2, + qoi_kla_co2 * qoi_kla_h2, + qoi_co2 + qoi_h2, + qoi_kla_co2 + qoi_kla_h2, + ) + + +def get_qoi_uq(kla_co2, cs_co2, kla_h2, cs_h2): + qoi = [] + qoi_kla = [] + qoi_sum = [] + qoi_sum_kla = [] + for i in range(len(kla_co2)): + if i == 0: + verb = True + else: + verb = False + qoi_tmp, qoi_kla_tmp, qoi_sum_tmp, qoi_sum_kla_tmp = get_qoi( + kla_co2[i], cs_co2[i], kla_h2[i], cs_h2[i], verb + ) + qoi.append(qoi_tmp) + qoi_kla.append(qoi_kla_tmp) + qoi_sum.append(qoi_sum_tmp) + qoi_sum_kla.append(qoi_sum_kla_tmp) + qoi = np.array(qoi) + qoi_kla = np.array(qoi_kla) + qoi_sum = np.array(qoi_sum) + qoi_sum_kla = np.array(qoi_sum_kla) + return ( + np.mean(qoi), + np.std(qoi), + np.mean(qoi_kla), + np.std(qoi_kla), + np.mean(qoi_sum), + np.std(qoi_sum), + np.mean(qoi_sum_kla), + np.std(qoi_sum_kla), + ) + + +os.makedirs("Figures", exist_ok=True) + +dataFolder = "data" +fold = "local" + +nuq = 100 +mean_cstar_co2 = np.random.uniform(7.68, 8.22, nuq) +mean_cstar_h2 = np.random.uniform(0.516, 0.548, nuq) + + +tmp_cs_h2 = [] +tmp_cs_co2 = [] +tmp_kla_h2 = [] +tmp_kla_co2 = [] +cs_co2 = mean_cstar_co2 +cs_h2 = mean_cstar_h2 + +a = np.load(os.path.join(dataFolder, fold, "conv.npz")) +endindex = -1 +if ( + "c_h2" in a + and "c_co2" in a + and len(a["time"][:endindex] > 0) + and (a["time"][:endindex][-1] > 85) +): + for i in range(nuq): + fitparamsH2, _ = curve_fit( + func, + np.array(a["time"][:endindex]), + np.array(a["c_h2"][:endindex]), + bounds=[(cs_h2[i] - 1e-6, 0), (cs_h2[i] + 1e-6, 1)], + ) + fitparamsCO2, _ = curve_fit( + func, + np.array(a["time"][:endindex]), + np.array(a["c_co2"][:endindex]), + bounds=[(cs_co2[i] - 1e-6, 0), (cs_co2[i] + 1e-6, 1)], + ) + tmp_kla_co2.append(fitparamsCO2[1]) + tmp_kla_h2.append(fitparamsH2[1]) + tmp_cs_h2.append(cs_h2[i]) + tmp_cs_co2.append(cs_co2[i]) + +( + qoi_m, + qoi_s, + qoi_kla_m, + qoi_kla_s, + qoi_sum_m, + qoi_sum_s, + qoi_sum_kla_m, + qoi_sum_kla_s, +) = get_qoi_uq(tmp_kla_co2, tmp_cs_co2, tmp_kla_h2, tmp_cs_h2) + + +with open("qoi.txt", "w+") as f: + f.write(f"{qoi_m},{qoi_s}\n") +with open("qoi_kla.txt", "w+") as f: + f.write(f"{qoi_kla_m},{qoi_kla_s}\n") +with open("qoi_sum.txt", "w+") as f: + f.write(f"{qoi_sum_m},{qoi_sum_s}\n") +with open("qoi_sum_kla.txt", "w+") as f: + f.write(f"{qoi_sum_kla_m},{qoi_sum_kla_s}\n") diff --git a/papers/scaleup/generate_scaleup_runs/template/presteps.sh b/papers/scaleup/generate_scaleup_runs/template/presteps.sh new file mode 100644 index 00000000..d47dfe51 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/presteps.sh @@ -0,0 +1,75 @@ +# Clean case +module load conda +#conda activate /projects/gas2fuels/conda_env/bird_wf +conda activate /projects/gas2fuels/conda_env/bird_mixer +source /projects/gas2fuels/ofoam_cray_mpich/OpenFOAM-dev/etc/bashrc +./Allclean + +BIRD_HOME=`python -c "import bird; print(bird.BIRD_DIR)"` + +echo PRESTEP 1 +# Generate blockmeshDict +python ${BIRD_HOME}/../applications/write_block_rect_mesh.py -i system/mesh.json -o system + +# Generate boundary stl +python ${BIRD_HOME}/../applications/write_stl_patch.py -i system/inlets_outlets.json + +# Generate mixers +python ${BIRD_HOME}/../applications/write_dynMix_fvModels.py -fs -i system/mixers.json -o constant + +echo PRESTEP 2 +# Mesh gen +blockMesh -dict system/blockMeshDict + +mkdir tmp + +# Inlet BC +surfaceToPatch -tol 1e-3 inlets.stl +export newmeshdir=$(foamListTimes -latestTime) +rm -rf constant/polyMesh/ +cp -r $newmeshdir/polyMesh ./constant +rm -rf $newmeshdir +cp constant/polyMesh/boundary tmp +sed -i -e 's/inlets\.stl/inlet/g' tmp/boundary +cat tmp/boundary > constant/polyMesh/boundary + +# Outlet BC +surfaceToPatch -tol 1e-3 outlets.stl +export newmeshdir=$(foamListTimes -latestTime) +rm -rf constant/polyMesh/ +cp -r $newmeshdir/polyMesh ./constant +rm -rf $newmeshdir +cp constant/polyMesh/boundary tmp +sed -i -e 's/outlets\.stl/outlet/g' tmp/boundary +cat tmp/boundary > constant/polyMesh/boundary + + +rm -r tmp + +# Scale +transformPoints "scale=(2.7615275385627096 2.7615275385627096 2.7615275385627096)" + + +# setup IC +cp -r 0.orig 0 +setFields + +# Setup mass flow rate +# Get inlet area +postProcess -func 'patchIntegrate(patch="inlet", field="alpha.gas")' +postProcess -func writeCellVolumes +writeMeshObj + +echo PRESTEP 3 +python writeGlobalVars.py +cp constant/phaseProperties_constantd constant/phaseProperties + +conda deactivate + +if [ -f qoi.txt ]; then + rm qoi.txt +fi +if [ -f data/local/conv.npz ]; then + rm data/local/conv.npz +fi + diff --git a/papers/scaleup/generate_scaleup_runs/template/read_history.py b/papers/scaleup/generate_scaleup_runs/template/read_history.py new file mode 100644 index 00000000..0ca46649 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/read_history.py @@ -0,0 +1,100 @@ +import argparse +import os +import sys + +import numpy as np +from prettyPlot.plotting import plt, pretty_labels + +from bird.postprocess.post_quantities import * +from bird.utilities.ofio import * + +parser = argparse.ArgumentParser(description="Convergence of GH") +parser.add_argument( + "-cn", + "--case_name", + type=str, + metavar="", + required=True, + help="Case name", +) +parser.add_argument( + "-df", + "--data_folder", + type=str, + metavar="", + required=False, + help="data folder name", + default="data", +) + +args, unknown = parser.parse_known_args() + + +case_root = "." # "../" +case_name = args.case_name # "12_hole_sparger_snappyRefine_700rpm_opt_coeff" +case_folder = "." +dataFolder = args.data_folder + +if os.path.isfile(os.path.join(dataFolder, case_name, "conv.npz")): + sys.exit("WARNING: History already created, Skipping") + +time_float_sorted, time_str_sorted = get_case_times( + case_folder, remove_zero=True +) +cell_centers, _ = read_cell_centers(case_folder) +nCells = len(cell_centers) + + +co2_history = np.zeros(len(time_str_sorted)) +c_co2_history = np.zeros(len(time_str_sorted)) +h2_history = np.zeros(len(time_str_sorted)) +c_h2_history = np.zeros(len(time_str_sorted)) +gh_history = np.zeros(len(time_str_sorted)) +liqvol_history = np.zeros(len(time_str_sorted)) +print(f"case_folder = {case_folder}") +field_dict = {} +for itime, time in enumerate(time_float_sorted): + time_folder = time_str_sorted[itime] + print(f"\tTime : {time_folder}") + _, field_dict = read_cell_volumes(case_folder) + gh_history[itime], field_dict = compute_gas_holdup( + case_folder, + time_str_sorted[itime], + field_dict=field_dict, + ) + co2_history[itime], field_dict = compute_ave_y_liq( + case_folder, + time_str_sorted[itime], + species_name="CO2", + field_dict=field_dict, + ) + h2_history[itime], field_dict = compute_ave_y_liq( + case_folder, + time_str_sorted[itime], + species_name="H2", + field_dict=field_dict, + ) + c_co2_history[itime], field_dict = compute_ave_conc_liq( + case_folder, + time_str_sorted[itime], + species_name="CO2", + field_dict=field_dict, + ) + c_h2_history[itime], field_dict = compute_ave_conc_liq( + case_folder, + time_str_sorted[itime], + species_name="H2", + field_dict=field_dict, + ) + +os.makedirs(dataFolder, exist_ok=True) +os.makedirs(os.path.join(dataFolder, case_name), exist_ok=True) +np.savez( + os.path.join(dataFolder, case_name, "conv.npz"), + time=np.array(time_float_sorted), + gh=gh_history, + co2=co2_history, + h2=h2_history, + c_h2=c_h2_history, + c_co2=c_co2_history, +) diff --git a/papers/scaleup/generate_scaleup_runs/template/run.sh b/papers/scaleup/generate_scaleup_runs/template/run.sh new file mode 100644 index 00000000..99da4760 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/run.sh @@ -0,0 +1,5 @@ +birdmultiphaseEulerFoam + + + + diff --git a/papers/scaleup/generate_scaleup_runs/template/script b/papers/scaleup/generate_scaleup_runs/template/script new file mode 100755 index 00000000..efe675ff --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/script @@ -0,0 +1,14 @@ +#!/bin/bash +#SBATCH --qos=high +#SBATCH --job-name=val2 +##SBATCH --partition=debug +#SBATCH --nodes=1 +#SBATCH --ntasks-per-node=16 +#SBATCH --time=07:59:00 +#SBATCH --account=co2snow + +bash presteps.sh +source /projects/gas2fuels/ofoam_cray_mpich/OpenFOAM-dev/etc/bashrc +decomposePar -fileHandler collated +srun -n 16 birdmultiphaseEulerFoam -parallel -fileHandler collated +reconstructPar -newTimes diff --git a/papers/scaleup/generate_scaleup_runs/template/script_post b/papers/scaleup/generate_scaleup_runs/template/script_post new file mode 100755 index 00000000..aabbc33e --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/script_post @@ -0,0 +1,10 @@ +#!/bin/bash +#SBATCH --qos=high +#SBATCH --job-name=val2 +##SBATCH --partition=debug +#SBATCH --nodes=1 +#SBATCH --ntasks-per-node=16 +#SBATCH --time=00:59:00 +#SBATCH --account=co2snow + +bash computeQOI.sh diff --git a/papers/scaleup/generate_scaleup_runs/template/system/blockMeshDict b/papers/scaleup/generate_scaleup_runs/template/system/blockMeshDict new file mode 100644 index 00000000..1183d262 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/system/blockMeshDict @@ -0,0 +1,746 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} + +convertToMeters 1.0; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +vertices +( +( 0.0 0.0 0.0) +( 1.0 0.0 0.0) +( 2.0 0.0 0.0) +( 3.0 0.0 0.0) +( 4.0 0.0 0.0) +( 5.0 0.0 0.0) +( 6.0 0.0 0.0) +( 7.0 0.0 0.0) +( 8.0 0.0 0.0) +( 9.0 0.0 0.0) +( 10.0 0.0 0.0) +( 0.0 1.0 0.0) +( 1.0 1.0 0.0) +( 2.0 1.0 0.0) +( 3.0 1.0 0.0) +( 4.0 1.0 0.0) +( 5.0 1.0 0.0) +( 6.0 1.0 0.0) +( 7.0 1.0 0.0) +( 8.0 1.0 0.0) +( 9.0 1.0 0.0) +( 10.0 1.0 0.0) +( 0.0 2.0 0.0) +( 1.0 2.0 0.0) +( 2.0 2.0 0.0) +( 3.0 2.0 0.0) +( 4.0 2.0 0.0) +( 5.0 2.0 0.0) +( 6.0 2.0 0.0) +( 7.0 2.0 0.0) +( 8.0 2.0 0.0) +( 9.0 2.0 0.0) +( 10.0 2.0 0.0) +( 0.0 3.0 0.0) +( 1.0 3.0 0.0) +( 2.0 3.0 0.0) +( 3.0 3.0 0.0) +( 4.0 3.0 0.0) +( 5.0 3.0 0.0) +( 6.0 3.0 0.0) +( 7.0 3.0 0.0) +( 8.0 3.0 0.0) +( 9.0 3.0 0.0) +( 10.0 3.0 0.0) +( 0.0 4.0 0.0) +( 1.0 4.0 0.0) +( 2.0 4.0 0.0) +( 3.0 4.0 0.0) +( 4.0 4.0 0.0) +( 5.0 4.0 0.0) +( 6.0 4.0 0.0) +( 7.0 4.0 0.0) +( 8.0 4.0 0.0) +( 9.0 4.0 0.0) +( 10.0 4.0 0.0) +( 0.0 5.0 0.0) +( 1.0 5.0 0.0) +( 2.0 5.0 0.0) +( 3.0 5.0 0.0) +( 4.0 5.0 0.0) +( 5.0 5.0 0.0) +( 6.0 5.0 0.0) +( 7.0 5.0 0.0) +( 8.0 5.0 0.0) +( 9.0 5.0 0.0) +( 10.0 5.0 0.0) +( 0.0 6.0 0.0) +( 1.0 6.0 0.0) +( 2.0 6.0 0.0) +( 3.0 6.0 0.0) +( 4.0 6.0 0.0) +( 5.0 6.0 0.0) +( 6.0 6.0 0.0) +( 7.0 6.0 0.0) +( 8.0 6.0 0.0) +( 9.0 6.0 0.0) +( 10.0 6.0 0.0) +( 0.0 7.0 0.0) +( 1.0 7.0 0.0) +( 2.0 7.0 0.0) +( 3.0 7.0 0.0) +( 4.0 7.0 0.0) +( 5.0 7.0 0.0) +( 6.0 7.0 0.0) +( 7.0 7.0 0.0) +( 8.0 7.0 0.0) +( 9.0 7.0 0.0) +( 10.0 7.0 0.0) +( 0.0 0.0 1.0) +( 1.0 0.0 1.0) +( 2.0 0.0 1.0) +( 3.0 0.0 1.0) +( 4.0 0.0 1.0) +( 5.0 0.0 1.0) +( 6.0 0.0 1.0) +( 7.0 0.0 1.0) +( 8.0 0.0 1.0) +( 9.0 0.0 1.0) +( 10.0 0.0 1.0) +( 0.0 1.0 1.0) +( 1.0 1.0 1.0) +( 2.0 1.0 1.0) +( 3.0 1.0 1.0) +( 4.0 1.0 1.0) +( 5.0 1.0 1.0) +( 6.0 1.0 1.0) +( 7.0 1.0 1.0) +( 8.0 1.0 1.0) +( 9.0 1.0 1.0) +( 10.0 1.0 1.0) +( 0.0 2.0 1.0) +( 1.0 2.0 1.0) +( 2.0 2.0 1.0) +( 3.0 2.0 1.0) +( 4.0 2.0 1.0) +( 5.0 2.0 1.0) +( 6.0 2.0 1.0) +( 7.0 2.0 1.0) +( 8.0 2.0 1.0) +( 9.0 2.0 1.0) +( 10.0 2.0 1.0) +( 0.0 3.0 1.0) +( 1.0 3.0 1.0) +( 2.0 3.0 1.0) +( 3.0 3.0 1.0) +( 4.0 3.0 1.0) +( 5.0 3.0 1.0) +( 6.0 3.0 1.0) +( 7.0 3.0 1.0) +( 8.0 3.0 1.0) +( 9.0 3.0 1.0) +( 10.0 3.0 1.0) +( 0.0 4.0 1.0) +( 1.0 4.0 1.0) +( 2.0 4.0 1.0) +( 3.0 4.0 1.0) +( 4.0 4.0 1.0) +( 5.0 4.0 1.0) +( 6.0 4.0 1.0) +( 7.0 4.0 1.0) +( 8.0 4.0 1.0) +( 9.0 4.0 1.0) +( 10.0 4.0 1.0) +( 0.0 5.0 1.0) +( 1.0 5.0 1.0) +( 2.0 5.0 1.0) +( 3.0 5.0 1.0) +( 4.0 5.0 1.0) +( 5.0 5.0 1.0) +( 6.0 5.0 1.0) +( 7.0 5.0 1.0) +( 8.0 5.0 1.0) +( 9.0 5.0 1.0) +( 10.0 5.0 1.0) +( 0.0 6.0 1.0) +( 1.0 6.0 1.0) +( 2.0 6.0 1.0) +( 3.0 6.0 1.0) +( 4.0 6.0 1.0) +( 5.0 6.0 1.0) +( 6.0 6.0 1.0) +( 7.0 6.0 1.0) +( 8.0 6.0 1.0) +( 9.0 6.0 1.0) +( 10.0 6.0 1.0) +( 0.0 7.0 1.0) +( 1.0 7.0 1.0) +( 2.0 7.0 1.0) +( 3.0 7.0 1.0) +( 4.0 7.0 1.0) +( 5.0 7.0 1.0) +( 6.0 7.0 1.0) +( 7.0 7.0 1.0) +( 8.0 7.0 1.0) +( 9.0 7.0 1.0) +( 10.0 7.0 1.0) +( 0.0 0.0 2.0) +( 1.0 0.0 2.0) +( 2.0 0.0 2.0) +( 3.0 0.0 2.0) +( 4.0 0.0 2.0) +( 5.0 0.0 2.0) +( 6.0 0.0 2.0) +( 7.0 0.0 2.0) +( 8.0 0.0 2.0) +( 9.0 0.0 2.0) +( 10.0 0.0 2.0) +( 0.0 1.0 2.0) +( 1.0 1.0 2.0) +( 2.0 1.0 2.0) +( 3.0 1.0 2.0) +( 4.0 1.0 2.0) +( 5.0 1.0 2.0) +( 6.0 1.0 2.0) +( 7.0 1.0 2.0) +( 8.0 1.0 2.0) +( 9.0 1.0 2.0) +( 10.0 1.0 2.0) +( 0.0 2.0 2.0) +( 1.0 2.0 2.0) +( 2.0 2.0 2.0) +( 3.0 2.0 2.0) +( 4.0 2.0 2.0) +( 5.0 2.0 2.0) +( 6.0 2.0 2.0) +( 7.0 2.0 2.0) +( 8.0 2.0 2.0) +( 9.0 2.0 2.0) +( 10.0 2.0 2.0) +( 0.0 3.0 2.0) +( 1.0 3.0 2.0) +( 2.0 3.0 2.0) +( 3.0 3.0 2.0) +( 4.0 3.0 2.0) +( 5.0 3.0 2.0) +( 6.0 3.0 2.0) +( 7.0 3.0 2.0) +( 8.0 3.0 2.0) +( 9.0 3.0 2.0) +( 10.0 3.0 2.0) +( 0.0 4.0 2.0) +( 1.0 4.0 2.0) +( 2.0 4.0 2.0) +( 3.0 4.0 2.0) +( 4.0 4.0 2.0) +( 5.0 4.0 2.0) +( 6.0 4.0 2.0) +( 7.0 4.0 2.0) +( 8.0 4.0 2.0) +( 9.0 4.0 2.0) +( 10.0 4.0 2.0) +( 0.0 5.0 2.0) +( 1.0 5.0 2.0) +( 2.0 5.0 2.0) +( 3.0 5.0 2.0) +( 4.0 5.0 2.0) +( 5.0 5.0 2.0) +( 6.0 5.0 2.0) +( 7.0 5.0 2.0) +( 8.0 5.0 2.0) +( 9.0 5.0 2.0) +( 10.0 5.0 2.0) +( 0.0 6.0 2.0) +( 1.0 6.0 2.0) +( 2.0 6.0 2.0) +( 3.0 6.0 2.0) +( 4.0 6.0 2.0) +( 5.0 6.0 2.0) +( 6.0 6.0 2.0) +( 7.0 6.0 2.0) +( 8.0 6.0 2.0) +( 9.0 6.0 2.0) +( 10.0 6.0 2.0) +( 0.0 7.0 2.0) +( 1.0 7.0 2.0) +( 2.0 7.0 2.0) +( 3.0 7.0 2.0) +( 4.0 7.0 2.0) +( 5.0 7.0 2.0) +( 6.0 7.0 2.0) +( 7.0 7.0 2.0) +( 8.0 7.0 2.0) +( 9.0 7.0 2.0) +( 10.0 7.0 2.0) +( 0.0 0.0 3.0) +( 1.0 0.0 3.0) +( 2.0 0.0 3.0) +( 3.0 0.0 3.0) +( 4.0 0.0 3.0) +( 5.0 0.0 3.0) +( 6.0 0.0 3.0) +( 7.0 0.0 3.0) +( 8.0 0.0 3.0) +( 9.0 0.0 3.0) +( 10.0 0.0 3.0) +( 0.0 1.0 3.0) +( 1.0 1.0 3.0) +( 2.0 1.0 3.0) +( 3.0 1.0 3.0) +( 4.0 1.0 3.0) +( 5.0 1.0 3.0) +( 6.0 1.0 3.0) +( 7.0 1.0 3.0) +( 8.0 1.0 3.0) +( 9.0 1.0 3.0) +( 10.0 1.0 3.0) +( 0.0 2.0 3.0) +( 1.0 2.0 3.0) +( 2.0 2.0 3.0) +( 3.0 2.0 3.0) +( 4.0 2.0 3.0) +( 5.0 2.0 3.0) +( 6.0 2.0 3.0) +( 7.0 2.0 3.0) +( 8.0 2.0 3.0) +( 9.0 2.0 3.0) +( 10.0 2.0 3.0) +( 0.0 3.0 3.0) +( 1.0 3.0 3.0) +( 2.0 3.0 3.0) +( 3.0 3.0 3.0) +( 4.0 3.0 3.0) +( 5.0 3.0 3.0) +( 6.0 3.0 3.0) +( 7.0 3.0 3.0) +( 8.0 3.0 3.0) +( 9.0 3.0 3.0) +( 10.0 3.0 3.0) +( 0.0 4.0 3.0) +( 1.0 4.0 3.0) +( 2.0 4.0 3.0) +( 3.0 4.0 3.0) +( 4.0 4.0 3.0) +( 5.0 4.0 3.0) +( 6.0 4.0 3.0) +( 7.0 4.0 3.0) +( 8.0 4.0 3.0) +( 9.0 4.0 3.0) +( 10.0 4.0 3.0) +( 0.0 5.0 3.0) +( 1.0 5.0 3.0) +( 2.0 5.0 3.0) +( 3.0 5.0 3.0) +( 4.0 5.0 3.0) +( 5.0 5.0 3.0) +( 6.0 5.0 3.0) +( 7.0 5.0 3.0) +( 8.0 5.0 3.0) +( 9.0 5.0 3.0) +( 10.0 5.0 3.0) +( 0.0 6.0 3.0) +( 1.0 6.0 3.0) +( 2.0 6.0 3.0) +( 3.0 6.0 3.0) +( 4.0 6.0 3.0) +( 5.0 6.0 3.0) +( 6.0 6.0 3.0) +( 7.0 6.0 3.0) +( 8.0 6.0 3.0) +( 9.0 6.0 3.0) +( 10.0 6.0 3.0) +( 0.0 7.0 3.0) +( 1.0 7.0 3.0) +( 2.0 7.0 3.0) +( 3.0 7.0 3.0) +( 4.0 7.0 3.0) +( 5.0 7.0 3.0) +( 6.0 7.0 3.0) +( 7.0 7.0 3.0) +( 8.0 7.0 3.0) +( 9.0 7.0 3.0) +( 10.0 7.0 3.0) +( 0.0 0.0 4.0) +( 1.0 0.0 4.0) +( 2.0 0.0 4.0) +( 3.0 0.0 4.0) +( 4.0 0.0 4.0) +( 5.0 0.0 4.0) +( 6.0 0.0 4.0) +( 7.0 0.0 4.0) +( 8.0 0.0 4.0) +( 9.0 0.0 4.0) +( 10.0 0.0 4.0) +( 0.0 1.0 4.0) +( 1.0 1.0 4.0) +( 2.0 1.0 4.0) +( 3.0 1.0 4.0) +( 4.0 1.0 4.0) +( 5.0 1.0 4.0) +( 6.0 1.0 4.0) +( 7.0 1.0 4.0) +( 8.0 1.0 4.0) +( 9.0 1.0 4.0) +( 10.0 1.0 4.0) +( 0.0 2.0 4.0) +( 1.0 2.0 4.0) +( 2.0 2.0 4.0) +( 3.0 2.0 4.0) +( 4.0 2.0 4.0) +( 5.0 2.0 4.0) +( 6.0 2.0 4.0) +( 7.0 2.0 4.0) +( 8.0 2.0 4.0) +( 9.0 2.0 4.0) +( 10.0 2.0 4.0) +( 0.0 3.0 4.0) +( 1.0 3.0 4.0) +( 2.0 3.0 4.0) +( 3.0 3.0 4.0) +( 4.0 3.0 4.0) +( 5.0 3.0 4.0) +( 6.0 3.0 4.0) +( 7.0 3.0 4.0) +( 8.0 3.0 4.0) +( 9.0 3.0 4.0) +( 10.0 3.0 4.0) +( 0.0 4.0 4.0) +( 1.0 4.0 4.0) +( 2.0 4.0 4.0) +( 3.0 4.0 4.0) +( 4.0 4.0 4.0) +( 5.0 4.0 4.0) +( 6.0 4.0 4.0) +( 7.0 4.0 4.0) +( 8.0 4.0 4.0) +( 9.0 4.0 4.0) +( 10.0 4.0 4.0) +( 0.0 5.0 4.0) +( 1.0 5.0 4.0) +( 2.0 5.0 4.0) +( 3.0 5.0 4.0) +( 4.0 5.0 4.0) +( 5.0 5.0 4.0) +( 6.0 5.0 4.0) +( 7.0 5.0 4.0) +( 8.0 5.0 4.0) +( 9.0 5.0 4.0) +( 10.0 5.0 4.0) +( 0.0 6.0 4.0) +( 1.0 6.0 4.0) +( 2.0 6.0 4.0) +( 3.0 6.0 4.0) +( 4.0 6.0 4.0) +( 5.0 6.0 4.0) +( 6.0 6.0 4.0) +( 7.0 6.0 4.0) +( 8.0 6.0 4.0) +( 9.0 6.0 4.0) +( 10.0 6.0 4.0) +( 0.0 7.0 4.0) +( 1.0 7.0 4.0) +( 2.0 7.0 4.0) +( 3.0 7.0 4.0) +( 4.0 7.0 4.0) +( 5.0 7.0 4.0) +( 6.0 7.0 4.0) +( 7.0 7.0 4.0) +( 8.0 7.0 4.0) +( 9.0 7.0 4.0) +( 10.0 7.0 4.0) +( 0.0 0.0 5.0) +( 1.0 0.0 5.0) +( 2.0 0.0 5.0) +( 3.0 0.0 5.0) +( 4.0 0.0 5.0) +( 5.0 0.0 5.0) +( 6.0 0.0 5.0) +( 7.0 0.0 5.0) +( 8.0 0.0 5.0) +( 9.0 0.0 5.0) +( 10.0 0.0 5.0) +( 0.0 1.0 5.0) +( 1.0 1.0 5.0) +( 2.0 1.0 5.0) +( 3.0 1.0 5.0) +( 4.0 1.0 5.0) +( 5.0 1.0 5.0) +( 6.0 1.0 5.0) +( 7.0 1.0 5.0) +( 8.0 1.0 5.0) +( 9.0 1.0 5.0) +( 10.0 1.0 5.0) +( 0.0 2.0 5.0) +( 1.0 2.0 5.0) +( 2.0 2.0 5.0) +( 3.0 2.0 5.0) +( 4.0 2.0 5.0) +( 5.0 2.0 5.0) +( 6.0 2.0 5.0) +( 7.0 2.0 5.0) +( 8.0 2.0 5.0) +( 9.0 2.0 5.0) +( 10.0 2.0 5.0) +( 0.0 3.0 5.0) +( 1.0 3.0 5.0) +( 2.0 3.0 5.0) +( 3.0 3.0 5.0) +( 4.0 3.0 5.0) +( 5.0 3.0 5.0) +( 6.0 3.0 5.0) +( 7.0 3.0 5.0) +( 8.0 3.0 5.0) +( 9.0 3.0 5.0) +( 10.0 3.0 5.0) +( 0.0 4.0 5.0) +( 1.0 4.0 5.0) +( 2.0 4.0 5.0) +( 3.0 4.0 5.0) +( 4.0 4.0 5.0) +( 5.0 4.0 5.0) +( 6.0 4.0 5.0) +( 7.0 4.0 5.0) +( 8.0 4.0 5.0) +( 9.0 4.0 5.0) +( 10.0 4.0 5.0) +( 0.0 5.0 5.0) +( 1.0 5.0 5.0) +( 2.0 5.0 5.0) +( 3.0 5.0 5.0) +( 4.0 5.0 5.0) +( 5.0 5.0 5.0) +( 6.0 5.0 5.0) +( 7.0 5.0 5.0) +( 8.0 5.0 5.0) +( 9.0 5.0 5.0) +( 10.0 5.0 5.0) +( 0.0 6.0 5.0) +( 1.0 6.0 5.0) +( 2.0 6.0 5.0) +( 3.0 6.0 5.0) +( 4.0 6.0 5.0) +( 5.0 6.0 5.0) +( 6.0 6.0 5.0) +( 7.0 6.0 5.0) +( 8.0 6.0 5.0) +( 9.0 6.0 5.0) +( 10.0 6.0 5.0) +( 0.0 7.0 5.0) +( 1.0 7.0 5.0) +( 2.0 7.0 5.0) +( 3.0 7.0 5.0) +( 4.0 7.0 5.0) +( 5.0 7.0 5.0) +( 6.0 7.0 5.0) +( 7.0 7.0 5.0) +( 8.0 7.0 5.0) +( 9.0 7.0 5.0) +( 10.0 7.0 5.0) +); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +blocks +( + + //block 0 +hex (0 1 12 11 88 89 100 99 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 1 +hex (1 2 13 12 89 90 101 100 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 2 +hex (2 3 14 13 90 91 102 101 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 3 +hex (3 4 15 14 91 92 103 102 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 4 +hex (4 5 16 15 92 93 104 103 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 5 +hex (5 6 17 16 93 94 105 104 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 6 +hex (6 7 18 17 94 95 106 105 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 7 +hex (7 8 19 18 95 96 107 106 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 8 +hex (8 9 20 19 96 97 108 107 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 9 +hex (9 10 21 20 97 98 109 108 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 10 +hex (97 98 109 108 185 186 197 196 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 11 +hex (185 186 197 196 273 274 285 284 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 12 +hex (273 274 285 284 361 362 373 372 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 13 +hex (361 362 373 372 449 450 461 460 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 14 +hex (360 361 372 371 448 449 460 459 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 15 +hex (359 360 371 370 447 448 459 458 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 16 +hex (358 359 370 369 446 447 458 457 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 17 +hex (357 358 369 368 445 446 457 456 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 18 +hex (356 357 368 367 444 445 456 455 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 19 +hex (355 356 367 366 443 444 455 454 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 20 +hex (354 355 366 365 442 443 454 453 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 21 +hex (353 354 365 364 441 442 453 452 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 22 +hex (352 353 364 363 440 441 452 451 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 23 +hex (363 364 375 374 451 452 463 462 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 24 +hex (374 375 386 385 462 463 474 473 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 25 +hex (385 386 397 396 473 474 485 484 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 26 +hex (396 397 408 407 484 485 496 495 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 27 +hex (407 408 419 418 495 496 507 506 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 28 +hex (418 419 430 429 506 507 518 517 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 29 +hex (308 309 320 319 396 397 408 407 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 30 +hex (220 221 232 231 308 309 320 319 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 31 +hex (132 133 144 143 220 221 232 231 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 32 +hex (44 45 56 55 132 133 144 143 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 33 +hex (55 56 67 66 143 144 155 154 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 34 +hex (66 67 78 77 154 155 166 165 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 35 +hex (33 34 45 44 121 122 133 132 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 36 +hex (22 23 34 33 110 111 122 121 ) +( 10 10 10 ) +SimpleGrading (1 1 1) + + //block 37 +hex (11 12 23 22 99 100 111 110 ) +( 10 10 10 ) +SimpleGrading (1 1 1) +); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +defaultPatch +{ type wall;} + +patches +( +); diff --git a/papers/scaleup/generate_scaleup_runs/template/system/controlDict b/papers/scaleup/generate_scaleup_runs/template/system/controlDict new file mode 100644 index 00000000..7561264c --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/system/controlDict @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application birdmultiphaseEulerFoam; + +startFrom latestTime;//startTime; + +startTime 0; + +stopAt endTime; + +endTime 200; + +deltaT 0.0001; + +writeControl adjustableRunTime; + +writeInterval 2; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep yes; + +maxCo 0.25; + +maxDeltaT 0.005; + + +functions +{ + + #includeFunc writeObjects(d.gas) + #includeFunc writeObjects(thermo:rho.gas) + #includeFunc writeObjects(thermo:rho.liquid) +} +//functions +//{ +// #includeFunc fieldAverage(U.air, U.water, alpha.air, p) +//} + + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/system/decomposeParDict b/papers/scaleup/generate_scaleup_runs/template/system/decomposeParDict new file mode 100755 index 00000000..f8397e73 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/system/decomposeParDict @@ -0,0 +1,30 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 3.0.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object decomposeParDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 16; + +method scotch; + +hierarchicalCoeffs +{ + n (4 4 1); + delta 0.001; + order xyz; +} + + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/system/fvConstraints b/papers/scaleup/generate_scaleup_runs/template/system/fvConstraints new file mode 100644 index 00000000..334f1c8f --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/system/fvConstraints @@ -0,0 +1,56 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object fvConstraints; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +limitp +{ + type limitPressure; + + min 1e4; +} +limitUliq +{ + type limitVelocity; + active yes; + U U.liquid; + selectionMode all; + max 1e1; +} +limitUgas +{ + type limitVelocity; + active yes; + U U.gas; + selectionMode all; + max 2e1; +} +limitTgas +{ + type limitTemperature; + selectionMode all; + min 290; + max 310; + phase gas; +} +limitTliq +{ + type limitTemperature; + selectionMode all; + min 290; + max 310; + phase liquid; +} + + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/system/fvSchemes b/papers/scaleup/generate_scaleup_runs/template/system/fvSchemes new file mode 100644 index 00000000..9e5fed8b --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/system/fvSchemes @@ -0,0 +1,70 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + limited cellLimited Gauss linear 1; +} + +divSchemes +{ + default none; + + "div\(phi,alpha.*\)" Gauss vanLeer; + + "div\(phir,alpha.*,alpha.*\)" Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + "div\(alphaRhoPhi.*,Yi\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,(K|k|epsilon|omega).*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,f.*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,\(p\|thermo:rho.*\)\)" Gauss limitedLinear 1; + + "div\(phim,(k|epsilon|omega)m\)" Gauss upwind; + "div\(\(\(\(alpha.*\*thermo:rho.*\)*nuEff.*\)*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +wallDist +{ + method Poisson; + nRequired true; +} + + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/system/fvSolution b/papers/scaleup/generate_scaleup_runs/template/system/fvSolution new file mode 100644 index 00000000..05d80e1e --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/system/fvSolution @@ -0,0 +1,121 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "alpha.*" + { + nAlphaCorr 2; + nAlphaSubCycles 5; + } + + bubbles + { + nCorr 1; + tolerance 1e-4; + scale true; + solveOnFinalIterOnly true; + sourceUpdateInterval 1; + } + + p_rgh + { + solver GAMG; + smoother DIC; + tolerance 1e-7; + relTol 0; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "(k|omega|epsilon).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-7; + relTol 1e-4; + minIter 0; + maxIter 3; + } + + "(e|h).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-8; + relTol 0; + minIter 0; + maxIter 3; + } + + "f.*" + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-6; + relTol 0; + } + + "Yi.*" + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-12; + relTol 0; + residualAlpha 1e-8; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + yPsi + { + solver PCG; + preconditioner DIC; + tolerance 1e-10; + relTol 0; + } + +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; + +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/system/inlets_outlets.json b/papers/scaleup/generate_scaleup_runs/template/system/inlets_outlets.json new file mode 100644 index 00000000..2b53da73 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/system/inlets_outlets.json @@ -0,0 +1,28 @@ +{ + "Geometry": { + "OverallDomain": { + "x" : {"nblocks": 10, "size_per_block": 1.0}, + "y" : {"nblocks": 11, "size_per_block": 1.0}, + "z" : {"nblocks": 5, "size_per_block": 1.0} + }, + "Fluids": [ + [ [0,0,0], [9,0,0] ], + [ [9,0,0], [9,0,4] ], + [ [9,0,4], [0,0,4] ], + [ [0,1,4], [0,4,4] ], + [ [0,4,4], [0,10,4] ], + [ [0,4,4], [0,4,0] ], + [ [0,4,0], [0,10,0] ], + [ [0,4,0], [0,1,0] ] + ] + }, + "inlets": [ + {"branch_id": 0, "type": "circle", "frac_space": 0.2222222222222222, "normal_dir": 1, "radius": 0.4, "nelements": 50, "block_pos": "bottom"}, + {"branch_id": 0, "type": "circle", "frac_space": 0.5, "radius": 0.4, "normal_dir": 1,"nelements": 50, "block_pos": "bottom"}, + {"branch_id": 0, "type": "circle", "frac_space": 0.7777777777777778, "radius": 0.4, "normal_dir": 1,"nelements": 50, "block_pos": "bottom"} + ], + "outlets": [ + {"branch_id": 6, "type": "circle", "frac_space": 1, "normal_dir": 1, "radius": 0.4, "nelements": 50, "block_pos": "top"}, + {"branch_id": 4, "type": "circle", "frac_space": 1, "normal_dir": 1, "radius": 0.4, "nelements": 50, "block_pos": "top"} + ] +} diff --git a/papers/scaleup/generate_scaleup_runs/template/system/mesh.json b/papers/scaleup/generate_scaleup_runs/template/system/mesh.json new file mode 100644 index 00000000..29841d7e --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/system/mesh.json @@ -0,0 +1,26 @@ +{ + "Meshing": { + "Blockwise": { + "x" : 10, + "y" : 10, + "z" : 10 + } + }, + "Geometry": { + "OverallDomain": { + "x" : {"nblocks": 10, "size_per_block": 1.0}, + "y" : {"nblocks": 11, "size_per_block": 1.0}, + "z" : {"nblocks": 5, "size_per_block": 1.0} + }, + "Fluids": [ + [ [0,0,0], [9,0,0] ], + [ [9,0,0], [9,0,4] ], + [ [9,0,4], [0,0,4] ], + [ [0,1,4], [0,4,4] ], + [ [0,4,4], [0,10,4] ], + [ [0,4,4], [0,4,0] ], + [ [0,4,0], [0,10,0] ], + [ [0,4,0], [0,1,0] ] + ] + } +} diff --git a/papers/scaleup/generate_scaleup_runs/template/system/mixers.json b/papers/scaleup/generate_scaleup_runs/template/system/mixers.json new file mode 100644 index 00000000..b6224fb7 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/system/mixers.json @@ -0,0 +1,29 @@ +{ + "Meshing": { + "Blockwise": { + "x" : 10, + "y" : 10, + "z" : 10 + } + }, + "Geometry": { + "OverallDomain": { + "x" : {"nblocks": 10, "size_per_block": 1.0, "rescale": 2.7615275385627096}, + "y" : {"nblocks": 11, "size_per_block": 1.0, "rescale": 2.7615275385627096}, + "z" : {"nblocks": 5, "size_per_block": 1.0, "rescale": 2.7615275385627096} + }, + "Fluids": [ + [ [0,0,0], [9,0,0] ], + [ [9,0,0], [9,0,4] ], + [ [9,0,4], [0,0,4] ], + [ [0,1,4], [0,4,4] ], + [ [0,4,4], [0,10,4] ], + [ [0,4,4], [0,4,0] ], + [ [0,4,0], [0,10,0] ], + [ [0,4,0], [0,1,0] ] + ] + }, + "mixers": [ + {"branch_id": 2, "frac_space": 0.5, "start_time": 4, "power": 1500, "sign": "+"} + ] +} diff --git a/papers/scaleup/generate_scaleup_runs/template/system/setFieldsDict b/papers/scaleup/generate_scaleup_runs/template/system/setFieldsDict new file mode 100644 index 00000000..89a797b9 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/system/setFieldsDict @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.gas 0.99 + volScalarFieldValue alpha.liquid 0.01 +); + +regions +( + boxToCell + { + box (-1.0 -1.0 -1.0) (552.3 11.046 552.3); + fieldValues + ( + volScalarFieldValue alpha.gas 0.01 + volScalarFieldValue alpha.liquid 0.99 + ); + } +); + + +// ************************************************************************* // diff --git a/papers/scaleup/generate_scaleup_runs/template/test.foam b/papers/scaleup/generate_scaleup_runs/template/test.foam new file mode 100644 index 00000000..e69de29b diff --git a/papers/scaleup/generate_scaleup_runs/template/writeGlobalVars.py b/papers/scaleup/generate_scaleup_runs/template/writeGlobalVars.py new file mode 100644 index 00000000..e64d69e3 --- /dev/null +++ b/papers/scaleup/generate_scaleup_runs/template/writeGlobalVars.py @@ -0,0 +1,42 @@ +import os + +import numpy as np + +from bird.utilities.ofio import * + + +def writeGvars(inletA, liqVol): + filename_tmp = os.path.join("constant", "globalVars_temp") + with open(filename_tmp, "r+") as f: + lines = f.readlines() + filename = os.path.join("constant", "globalVars") + with open(filename, "w+") as f: + for line in lines: + if line.startswith("inletA"): + f.write(f"inletA\t{inletA:g};\n") + elif line.startswith("liqVol"): + f.write(f"liqVol\t{liqVol:g};\n") + else: + f.write(line) + + +def readInletArea(): + filename = os.path.join( + "postProcessing", + "patchIntegrate(patch=inlet,field=alpha.gas)", + "0", + "surfaceFieldValue.dat", + ) + return read_surface_field_value(filename) + + +def getLiqVol(): + volume_field, _ = read_cell_volumes(".") + alpha_field, _ = read_field(".", "0", field_name="alpha.liquid") + return np.sum(volume_field * alpha_field) + + +if __name__ == "__main__": + A = readInletArea() + V = getLiqVol() + writeGvars(A, V) diff --git a/tests/io/test_read_foam_dict.py b/tests/io/test_read_foam_dict.py index e8692b92..16451d52 100644 --- a/tests/io/test_read_foam_dict.py +++ b/tests/io/test_read_foam_dict.py @@ -1,9 +1,36 @@ import os +import tempfile from pathlib import Path import numpy as np -from bird.utilities.ofio import read_openfoam_dict +from bird.utilities.ofio import read_gravity, read_openfoam_dict + + +def test_read_gravity(): + """ + Test reading gravity magnitude from `constant/g`, with a 9.81 fallback + """ + case_folder = os.path.join( + Path(__file__).parent, + " .. ".strip(), + " .. ".strip(), + "tutorial_cases", + "OF9", + "loop_reactor_mixing_swirl", + ) + assert read_gravity(case_folder) == 9.81 + + # custom vertical gravity + with tempfile.TemporaryDirectory() as tmp: + os.makedirs(os.path.join(tmp, "constant")) + with open(os.path.join(tmp, "constant", "g"), "w") as f: + f.write("dimensions [0 1 -2 0 0 0 0];\nvalue (0 -3.0 0);\n") + assert read_gravity(tmp) == 3.0 + + # missing constant/g -> 9.81 fallback + with tempfile.TemporaryDirectory() as tmp: + assert read_gravity(tmp) == 9.81 def test_read_phaseProperties(): diff --git a/tests/io/test_read_global_vars.py b/tests/io/test_read_global_vars.py index 8fb689d2..85adba8e 100644 --- a/tests/io/test_read_global_vars.py +++ b/tests/io/test_read_global_vars.py @@ -3,7 +3,23 @@ import numpy as np -from bird.utilities.ofio import read_global_vars +from bird.utilities.ofio import read_global_vars, read_surface_tension + + +def test_read_surface_tension(): + """ + Test backing surface tension out of `constant/phaseProperties` + """ + case_folder = os.path.join( + Path(__file__).parent, + " .. ".strip(), + " .. ".strip(), + "tutorial_cases", + "OF9", + "loop_reactor_mixing_swirl", + ) + # sigma is `$sigmaLiq` in phaseProperties, resolved via globalVars + assert read_surface_tension(case_folder) == 0.07 def test_read_global_vars(): diff --git a/tests/postprocess/test_dimensionless.py b/tests/postprocess/test_dimensionless.py new file mode 100644 index 00000000..68a35784 --- /dev/null +++ b/tests/postprocess/test_dimensionless.py @@ -0,0 +1,130 @@ +import os +import tempfile +from pathlib import Path + +import numpy as np +import pytest + +from bird.postprocess.post_quantities import ( + compute_froude_number, + compute_instantaneous_kl, + compute_sherwood_number, + compute_weber_number, + froude, + sherwood, + weber, +) +from bird.utilities.ofio import read_global_vars + + +def write_gravity_case(root, gy): + """Write a minimal constant/g with vertical gravity gy.""" + os.makedirs(os.path.join(root, "constant"), exist_ok=True) + with open(os.path.join(root, "constant", "g"), "w") as f: + f.write("FoamFile\n{\n class uniformDimensionedVectorField;\n}\n") + f.write("dimensions [0 1 -2 0 0 0 0];\n") + f.write(f"value (0 {gy} 0);\n") + + +def write_dimensionless_case(root, u_x, rho, sigma, cell_volumes): + """Case with uniform U.liquid=(u_x,0,0), rho, all-liquid, and sigma.""" + os.makedirs(os.path.join(root, "0"), exist_ok=True) + os.makedirs(os.path.join(root, "constant"), exist_ok=True) + + def write_field(name, foam_class, body): + with open(os.path.join(root, "0", name), "w") as f: + f.write("FoamFile\n{\n format ascii;\n") + f.write(f" class {foam_class};\n") + f.write(f" object {name};\n}}\n\n") + f.write("dimensions [0 0 0 0 0 0 0];\n\n") + f.write(body) + + entries = "\n".join(f"{v:.10g}" for v in cell_volumes) + write_field( + "V", + "volScalarField", + "internalField nonuniform List \n" + f"{len(cell_volumes)}\n(\n{entries}\n)\n;\n", + ) + write_field( + "alpha.liquid", "volScalarField", "internalField uniform 1;\n" + ) + write_field( + "U.liquid", + "volVectorField", + f"internalField uniform ({u_x} 0 0);\n", + ) + write_field( + "thermo:rho.liquid", + "volScalarField", + f"internalField uniform {rho};\n", + ) + with open(os.path.join(root, "constant", "phaseProperties"), "w") as f: + f.write("surfaceTension\n(\n (gas and liquid)\n {\n") + f.write( + f" type constant;\n sigma {sigma};\n" + ) + f.write(" }\n);\n") + + +def test_froude(): + # default gravity 9.81 + assert froude(1.0, 1.0) == pytest.approx(1.0 / np.sqrt(9.81)) + # Fr = U / sqrt(g*L); 2 / sqrt(16*0.25) = 1 + assert froude(2.0, 0.25, gravity=16.0) == pytest.approx(1.0) + + +def test_weber(): + # We = rho*U^2*L/sigma; 1000 * 4 * 0.5 / 100 = 20 + assert weber(1000.0, 2.0, 0.5, 100.0) == pytest.approx(20.0) + + +def test_sherwood(): + # Sh = kL*L/D; 1e-4 * 0.5 / 1e-5 = 5 + assert sherwood(1e-4, 0.5, 1e-5) == pytest.approx(5.0) + + +def test_compute_froude_number(): + # velocity = |U.liquid| = 3, g = 9 -> Fr = 3 / sqrt(9*0.25) = 2 + with tempfile.TemporaryDirectory() as tmp: + write_dimensionless_case( + tmp, u_x=3.0, rho=1000.0, sigma=0.05, cell_volumes=[1.0, 2.0, 3.0] + ) + write_gravity_case(tmp, -9.0) + fr, _ = compute_froude_number(tmp, "0", length=0.25, volume_time="0") + assert fr == pytest.approx(2.0) + + +def test_compute_weber_number(): + # We = rho*U^2*L/sigma = 1000 * 9 * 0.2 / 0.05 = 36000 + with tempfile.TemporaryDirectory() as tmp: + write_dimensionless_case( + tmp, u_x=3.0, rho=1000.0, sigma=0.05, cell_volumes=[1.0, 2.0, 3.0] + ) + we, _ = compute_weber_number(tmp, "0", length=0.2, volume_time="0") + assert we == pytest.approx(1000.0 * 9.0 * 0.2 / 0.05) + + +def test_compute_sherwood_number(): + case_folder = os.path.join( + Path(__file__).parent, + " .. ".strip(), + " .. ".strip(), + "bird", + "postprocess", + "data_conditional_mean", + ) + # Sh = kL * L / D_molecular, with kL from compute_instantaneous_kl and + # D_CO2 read from globalVars. kL is in m/h and D in m2/s, so kL is + # converted to m/s (/3600) for Sh to be dimensionless. + kl_spec, _, _ = compute_instantaneous_kl( + species_names="CO2", + case_folder=case_folder, + time_folder="80", + volume_time="1", + ) + diffusivity = float(read_global_vars(case_folder)["D_CO2"]) + sh, _ = compute_sherwood_number( + case_folder, "80", length=0.1, species_name="CO2", volume_time="1" + ) + assert sh == pytest.approx((kl_spec["CO2"] / 3600) * 0.1 / diffusivity) diff --git a/tests/postprocess/test_loop_velocity.py b/tests/postprocess/test_loop_velocity.py new file mode 100644 index 00000000..7b891b82 --- /dev/null +++ b/tests/postprocess/test_loop_velocity.py @@ -0,0 +1,205 @@ +import json +import os +import tempfile +from pathlib import Path + +import numpy as np + +from bird.postprocess.post_quantities import ( + build_loop_direction_field, + build_loop_direction_field_from_path, + compute_loop_velocity, + propose_loop_boxes_block_rect, +) + + +def write_min_case(root, u_vectors, cell_volumes, alpha_gas=None): + """Minimal case with a vector U.liquid, scalar V and optional alpha.gas.""" + os.makedirs(os.path.join(root, "0"), exist_ok=True) + + def write_field(name, foam_class, body): + with open(os.path.join(root, "0", name), "w") as f: + f.write("FoamFile\n{\n format ascii;\n") + f.write(f" class {foam_class};\n") + f.write(f" object {name};\n}}\n\n") + f.write("dimensions [0 0 0 0 0 0 0];\n\n") + f.write(body) + + def scalar(values): + entries = "\n".join(f"{v:.10g}" for v in values) + return ( + "internalField nonuniform List \n" + f"{len(values)}\n(\n{entries}\n)\n;\n" + ) + + def vector(vectors): + entries = "\n".join( + f"({x:.10g} {y:.10g} {z:.10g})" for x, y, z in vectors + ) + return ( + "internalField nonuniform List \n" + f"{len(vectors)}\n(\n{entries}\n)\n;\n" + ) + + write_field("V", "volScalarField", scalar(cell_volumes)) + write_field("U.liquid", "volVectorField", vector(u_vectors)) + if alpha_gas is not None: + write_field("alpha.gas", "volScalarField", scalar(alpha_gas)) + + +def test_build_loop_direction_field(): + # Four cells: two in box A (+x), one in box B (+y), one in no box + cell_centers = np.array( + [[0.5, 0.0, 0.0], [1.5, 0.0, 0.0], [5.0, 5.0, 0.0], [9.0, 9.0, 9.0]] + ) + boxes = [ + {"min": [0, -1, -1], "max": [2, 1, 1], "direction": [3, 0, 0]}, + {"min": [4, 4, -1], "max": [6, 6, 1], "direction": [0, 2, 0]}, + ] + field = build_loop_direction_field(cell_centers, boxes) + + assert field.shape == (4, 3) + # direction is normalized to a unit vector + np.testing.assert_allclose(field[0], [1, 0, 0]) + np.testing.assert_allclose(field[1], [1, 0, 0]) + np.testing.assert_allclose(field[2], [0, 1, 0]) + # uncovered cell stays NaN + assert np.all(np.isnan(field[3])) + + # a cell inside two boxes is ambiguous -> error + overlap = [ + {"min": [0, -1, -1], "max": [2, 1, 1], "direction": [1, 0, 0]}, + {"min": [1, -1, -1], "max": [3, 1, 1], "direction": [0, 1, 0]}, + ] + try: + build_loop_direction_field(cell_centers, overlap) + raised = False + except ValueError: + raised = True + assert raised + + # boxes that match no cell (e.g. wrong coordinate frame / rescale) -> error + far = [ + { + "min": [100, 100, 100], + "max": [101, 101, 101], + "direction": [1, 0, 0], + } + ] + try: + build_loop_direction_field(cell_centers, far) + raised_empty = False + except ValueError: + raised_empty = True + assert raised_empty + + +def test_build_loop_direction_field_from_path(): + # Path: (0,0,0)->(1,0,0) [+x] then (1,0,0)->(1,1,0) [+y] + path = np.array([[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [1.0, 1.0, 0.0]]) + cell_centers = np.array( + [ + [0.5, 0.05, 0.0], # near the +x segment + [1.0, 0.5, 0.0], # on the +y segment + [0.5, 5.0, 0.0], # far from the path + ] + ) + field = build_loop_direction_field_from_path( + cell_centers, path, max_dist=0.5 + ) + + np.testing.assert_allclose(field[0], [1, 0, 0], atol=1e-12) + np.testing.assert_allclose(field[1], [0, 1, 0], atol=1e-12) + assert np.all(np.isnan(field[2])) + + # every cell beyond max_dist (wrong frame) -> error + try: + build_loop_direction_field_from_path( + np.array([[50.0, 50.0, 50.0]]), path, max_dist=0.5 + ) + raised = False + except ValueError: + raised = True + assert raised + + +def test_propose_loop_boxes_block_rect(): + template = os.path.join( + Path(__file__).parent, + " .. ".strip(), + " .. ".strip(), + "bird", + "meshing", + "block_rect_mesh_templates", + "loopReactor", + "input.json", + ) + geometry = json.load(open(template))["Geometry"] + # rescale=None -> base units (factor 1.0) + boxes = propose_loop_boxes_block_rect(geometry, rescale=None) + + # two Fluids branches of 4 blocks -> 3 segments each -> 6 legs + assert len(boxes) == 6 + + # first leg: [0,0,0]->[9,0,0], centres at 0.5..9.5, trimmed half a block + first = boxes[0] + np.testing.assert_allclose(first["direction"], [1, 0, 0]) + np.testing.assert_allclose(first["min"], [1.0, 0.0, 0.0]) + np.testing.assert_allclose(first["max"], [9.0, 1.0, 1.0]) + + # a float rescale scales the box coordinates but not the direction + scaled = propose_loop_boxes_block_rect(geometry, rescale=2.0) + np.testing.assert_allclose(scaled[0]["min"], [2.0, 0.0, 0.0]) + np.testing.assert_allclose(scaled[0]["max"], [18.0, 2.0, 2.0]) + np.testing.assert_allclose(scaled[0]["direction"], [1, 0, 0]) + + +def test_compute_loop_velocity(): + # Two cells pointing along +x, direction +x -> loop velocity = weighted |Ux| + u_vectors = [[2.0, 0.0, 0.0], [4.0, 0.0, 0.0]] + cell_volumes = [1.0, 3.0] + direction_field = np.array([[1.0, 0.0, 0.0], [1.0, 0.0, 0.0]]) + + # all-liquid (alpha.gas = 0) -> volume-weighted mean = (2*1 + 4*3)/(1+3) = 3.5 + with tempfile.TemporaryDirectory() as tmp: + write_min_case(tmp, u_vectors, cell_volumes, alpha_gas=[0.0, 0.0]) + v, _ = compute_loop_velocity( + tmp, "0", direction_field, volume_time="0" + ) + assert abs(v - 3.5) < 1e-10 + + # a NaN direction excludes its cell: only the first cell counts -> 2.0 + with tempfile.TemporaryDirectory() as tmp: + write_min_case(tmp, u_vectors, cell_volumes, alpha_gas=[0.0, 0.0]) + partial = np.array([[1.0, 0.0, 0.0], [np.nan, np.nan, np.nan]]) + v_partial, _ = compute_loop_velocity( + tmp, "0", partial, volume_time="0" + ) + assert abs(v_partial - 2.0) < 1e-10 + + # reversed direction flips the sign + with tempfile.TemporaryDirectory() as tmp: + write_min_case(tmp, u_vectors, cell_volumes, alpha_gas=[0.0, 0.0]) + reversed_dir = np.array([[-1.0, 0.0, 0.0], [-1.0, 0.0, 0.0]]) + v_rev, _ = compute_loop_velocity( + tmp, "0", reversed_dir, volume_time="0" + ) + assert abs(v_rev + 3.5) < 1e-10 + + # liquid weighting from alpha.gas: weights = vol*(1-alpha_gas) = [1, 1.5] + with tempfile.TemporaryDirectory() as tmp: + write_min_case(tmp, u_vectors, cell_volumes, alpha_gas=[0.0, 0.5]) + v_alpha, _ = compute_loop_velocity( + tmp, "0", direction_field, volume_time="0" + ) + assert abs(v_alpha - (2 * 1.0 + 4 * 1.5) / 2.5) < 1e-10 + + # neither alpha.gas nor alpha.liquid present -> error + with tempfile.TemporaryDirectory() as tmp: + write_min_case(tmp, u_vectors, cell_volumes) + try: + compute_loop_velocity(tmp, "0", direction_field, volume_time="0") + raised = False + except FileNotFoundError: + raised = True + assert raised diff --git a/tests/postprocess/test_post_quantities.py b/tests/postprocess/test_post_quantities.py index 5dbafca8..65ab255f 100644 --- a/tests/postprocess/test_post_quantities.py +++ b/tests/postprocess/test_post_quantities.py @@ -12,11 +12,16 @@ _get_ind_liq, compute_ave_bubble_diam, compute_ave_conc_liq, + compute_ave_liquid_density, + compute_ave_liquid_velocity, compute_ave_y_liq, + compute_fitted_kl, compute_fitted_kla, compute_gas_holdup, + compute_instantaneous_kl, compute_instantaneous_kla, compute_superficial_gas_velocity, + interfacial_area, ) @@ -55,8 +60,8 @@ def test_compute_gh(): """ case_folder = os.path.join( Path(__file__).parent, - "..", - "..", + " .. ".strip(), + " .. ".strip(), "bird", "postprocess", "data_conditional_mean", @@ -106,8 +111,8 @@ def test_compute_diam(): """ case_folder = os.path.join( Path(__file__).parent, - "..", - "..", + " .. ".strip(), + " .. ".strip(), "bird", "postprocess", "data_conditional_mean", @@ -143,8 +148,8 @@ def test_compute_superficial_gas_velocity(): """ case_folder = os.path.join( Path(__file__).parent, - "..", - "..", + " .. ".strip(), + " .. ".strip(), "bird", "postprocess", "data_conditional_mean/", @@ -201,8 +206,8 @@ def test__superficial_velocity_pv(): """ case_folder = os.path.join( Path(__file__).parent, - "..", - "..", + " .. ".strip(), + " .. ".strip(), "bird", "postprocess", "data_conditional_mean/", @@ -232,8 +237,8 @@ def test_ave_y_liq(): """ case_folder = os.path.join( Path(__file__).parent, - "..", - "..", + " .. ".strip(), + " .. ".strip(), "bird", "postprocess", "data_conditional_mean", @@ -300,8 +305,8 @@ def test_ave_conc_liq(): """ case_folder = os.path.join( Path(__file__).parent, - "..", - "..", + " .. ".strip(), + " .. ".strip(), "bird", "postprocess", "data_conditional_mean", @@ -354,8 +359,8 @@ def test_instantaneous_kla(): """ case_folder = os.path.join( Path(__file__).parent, - "..", - "..", + " .. ".strip(), + " .. ".strip(), "bird", "postprocess", "data_conditional_mean", @@ -422,8 +427,8 @@ def test_fitted_kla(): """ case_folder = os.path.join( Path(__file__).parent, - "..", - "..", + " .. ".strip(), + " .. ".strip(), "bird", "postprocess", "data_conditional_mean", @@ -475,8 +480,8 @@ def test_get_ind_gas(): """ case_folder = os.path.join( Path(__file__).parent, - "..", - "..", + " .. ".strip(), + " .. ".strip(), "bird", "postprocess", "data_conditional_mean", @@ -518,3 +523,131 @@ def test_get_ind_gas(): # A uniform liquid field needs no filtering at all, rather than selecting # a single cell assert ind_liq_unif is None + + +def _write_liquid_fields(root, u_vector, rho, cell_volumes): + """Minimal case: all-liquid, uniform U.liquid and rho, nonuniform V.""" + os.makedirs(os.path.join(root, "0"), exist_ok=True) + + def write_field(name, foam_class, body): + with open(os.path.join(root, "0", name), "w") as f: + f.write("FoamFile\n{\n format ascii;\n") + f.write(f" class {foam_class};\n") + f.write(f" object {name};\n}}\n\n") + f.write("dimensions [0 0 0 0 0 0 0];\n\n") + f.write(body) + + entries = "\n".join(f"{v:.10g}" for v in cell_volumes) + write_field( + "V", + "volScalarField", + "internalField nonuniform List \n" + f"{len(cell_volumes)}\n(\n{entries}\n)\n;\n", + ) + write_field( + "alpha.liquid", "volScalarField", "internalField uniform 1;\n" + ) + write_field( + "U.liquid", + "volVectorField", + f"internalField uniform ({u_vector[0]} {u_vector[1]} " + f"{u_vector[2]});\n", + ) + write_field( + "thermo:rho.liquid", + "volScalarField", + f"internalField uniform {rho};\n", + ) + + +def test_compute_ave_liquid_density(): + with tempfile.TemporaryDirectory() as tmp: + _write_liquid_fields(tmp, (1.0, 0.0, 0.0), 1050.0, [1.0, 2.0, 3.0]) + rho, _ = compute_ave_liquid_density(tmp, "0", volume_time="0") + assert rho == pytest.approx(1050.0) + + +def test_compute_ave_liquid_velocity(): + # |U.liquid| = |(3,4,0)| = 5 + with tempfile.TemporaryDirectory() as tmp: + _write_liquid_fields(tmp, (3.0, 4.0, 0.0), 1000.0, [1.0, 2.0, 3.0]) + velocity, _ = compute_ave_liquid_velocity(tmp, "0", volume_time="0") + assert velocity == pytest.approx(5.0) + + +def test_interfacial_area(): + """ + Test the interfacial area a = 6 * holdup / diameter + """ + assert interfacial_area(0.2, 0.005) == pytest.approx(240.0) + + +def test_instantaneous_kl(): + """ + Test for instantaneous kl calculation (volume-averaged Higbie coefficient) + """ + case_folder = os.path.join( + Path(__file__).parent, + " .. ".strip(), + " .. ".strip(), + "bird", + "postprocess", + "data_conditional_mean", + ) + kl_list, cstar_list, _ = compute_instantaneous_kl( + species_names=["CO2"], + case_folder=case_folder, + time_folder="79", + volume_time="1", + ) + kl_str, _, _ = compute_instantaneous_kl( + species_names="CO2", + case_folder=case_folder, + time_folder="79", + volume_time="1", + ) + # positive, finite, and the single/list species forms agree + assert kl_list["CO2"] > 0 and np.isfinite(kl_list["CO2"]) + assert kl_str["CO2"] == pytest.approx(kl_list["CO2"]) + + kla_spec, cstar_kla, _ = compute_instantaneous_kla( + species_names=["CO2"], + case_folder=case_folder, + time_folder="79", + volume_time="1", + ) + # cstar is shared with compute_instantaneous_kla + assert cstar_list["CO2"] == pytest.approx(cstar_kla["CO2"]) + # kL (= ) and kLa (= ) are distinct quantities + assert kl_list["CO2"] != pytest.approx(kla_spec["CO2"]) + + +def test_fitted_kl(): + """ + Test for fitted kl calculation (fitted kLa / interfacial area) + """ + case_folder = os.path.join( + Path(__file__).parent, + " .. ".strip(), + " .. ".strip(), + "bird", + "postprocess", + "data_conditional_mean", + ) + # dummy time folders so the fit has enough snapshots + for time_folder in [str(entry) for entry in range(81, 89)]: + shutil.copytree( + os.path.join(case_folder, "80"), + os.path.join(case_folder, time_folder), + ) + kl_spec, _, _ = compute_fitted_kl( + species_names=["CO2"], + case_folder=case_folder, + num_warmup=100, + num_samples=100, + ) + for time_folder in [str(entry) for entry in range(81, 89)]: + shutil.rmtree(os.path.join(case_folder, time_folder)) + + assert "mean" in kl_spec["CO2"] and "std" in kl_spec["CO2"] + assert np.isfinite(kl_spec["CO2"]["mean"]) diff --git a/tests/postprocess/test_stats.py b/tests/postprocess/test_stats.py index 60f7a69f..5f1ff631 100644 --- a/tests/postprocess/test_stats.py +++ b/tests/postprocess/test_stats.py @@ -4,7 +4,7 @@ import pytest from bird import logger -from bird.postprocess.stats import calc_mean +from bird.postprocess.stats import calc_mean, steady_stat def test_mean_stats_uniform(): @@ -59,3 +59,34 @@ def test_mean_stats_nonuniform(): # Make sure non uniform signal is correctly treated assert abs(unc_non_unif - unc_unif) / unc_unif < 0.1 + + +def test_steady_stat(): + """ + Test the windowed (mean, 1-sigma) steady-state statistic + """ + t = np.linspace(0, 10, 1000) + signal = np.cos(t * 2 * np.pi) + + # explicit window: stat is calc_mean over the last 2 s, 95% -> 1-sigma + mask = t >= t.max() - 2.0 + mean_ref, unc95_ref = calc_mean(signal[mask], t[mask]) + mean_val, sigma = steady_stat(signal, t, window=2.0) + assert mean_val == pytest.approx(mean_ref) + assert sigma == pytest.approx(unc95_ref / 1.96) + + # default window = 10% of the span (last 1 s here) + default_mask = t >= t.max() - 0.1 * (t.max() - t.min()) + mean_def_ref, _ = calc_mean(signal[default_mask], t[default_mask]) + mean_def, _ = steady_stat(signal, t) + assert mean_def == pytest.approx(mean_def_ref) + + # empty and all-nan series -> (nan, nan) + mean_empty, sigma_empty = steady_stat([], []) + assert np.isnan(mean_empty) and np.isnan(sigma_empty) + mean_nan, sigma_nan = steady_stat([np.nan, np.nan], [0.0, 1.0]) + assert np.isnan(mean_nan) and np.isnan(sigma_nan) + + # a single sample in the window -> (value, 0.0) + mean_one, sigma_one = steady_stat([1.0, 3.5], [0.0, 1.0], window=0.5) + assert mean_one == 3.5 and sigma_one == 0.0 diff --git a/tests/postprocess/test_transport.py b/tests/postprocess/test_transport.py new file mode 100644 index 00000000..44f2fa01 --- /dev/null +++ b/tests/postprocess/test_transport.py @@ -0,0 +1,52 @@ +import os +import tempfile + +from bird.postprocess.post_quantities import compute_turbulent_diffusivity + + +def write_scalar_case(root, fields): + """Write each {name: values} as a nonuniform scalar field in the 0 folder.""" + os.makedirs(os.path.join(root, "0"), exist_ok=True) + for name, values in fields.items(): + entries = "\n".join(f"{v:.10g}" for v in values) + with open(os.path.join(root, "0", name), "w") as f: + f.write("FoamFile\n{\n format ascii;\n") + f.write(" class volScalarField;\n") + f.write(f" object {name};\n}}\n\n") + f.write("dimensions [0 0 0 0 0 0 0];\n\n") + f.write( + "internalField nonuniform List \n" + f"{len(values)}\n(\n{entries}\n)\n;\n" + ) + + +def test_compute_turbulent_diffusivity(): + # alpha.liquid selects cells 0,1 (cell 2 is gas). D = alphat/rho = [1,2,3]; + # volume-weighted over the liquid = (1*1 + 2*1)/(1+1) = 1.5 + with tempfile.TemporaryDirectory() as tmp: + write_scalar_case( + tmp, + { + "alpha.liquid": [1.0, 1.0, 0.0], + "alphat.liquid": [2.0, 4.0, 6.0], + "rho.liquid": [2.0, 2.0, 2.0], + "V": [1.0, 1.0, 1.0], + }, + ) + d_turb, _ = compute_turbulent_diffusivity(tmp, "0") + assert abs(d_turb - 1.5) < 1e-10 + + # no alphat.liquid -> nut.liquid / Prt (0.85). nut = [0.85, 1.70] -> [1, 2] + with tempfile.TemporaryDirectory() as tmp: + write_scalar_case( + tmp, + { + "alpha.liquid": [1.0, 1.0], + "nut.liquid": [0.85, 1.70], + "rho.liquid": [1.0, 1.0], + "V": [1.0, 3.0], + }, + ) + d_fallback, _ = compute_turbulent_diffusivity(tmp, "0") + # volume-weighted (1*1 + 2*3)/(1+3) = 1.75 + assert abs(d_fallback - 1.75) < 1e-10