Loading src/geoloop/constants.py +2 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ units_dict = { "insu_k": "W/mK", "insu_dr": "%", "k_g_res": "W/mK", "r_out": "m", } # Dictionary of formatted names for various parameters in the model. Loading Loading @@ -74,6 +75,7 @@ format_dict = { "insu_k": "$insu_{k}$", "insu_dr": "$insu_{dr}$", "k_g_res": "$k_{g-res}$", "r_out": "$r_{out}$", } # Dictionary with colors for lithology plotting Loading src/geoloop/plotting/create_plots.py +1 −1 Original line number Diff line number Diff line Loading @@ -84,7 +84,7 @@ class PlotResults: ] variable_param_names, locked_param_names = get_param_names() x_variables = result_variables + variable_param_names x_variables = result_variables + variable_param_names + ["r_out"] # Loop through variables and create scatterplots for x_variable in x_variables: Loading src/geoloop/utils/helpers.py +30 −5 Original line number Diff line number Diff line Loading @@ -625,6 +625,16 @@ def save_MCrun_results( variable_param_dict = {key: param_dict[key] for key in variable_param_names} locked_param_dict = {key: param_dict[key] for key in locked_param_names} # Check if r_out varies across samples (e.g. due to optimization) # by computing the std of the last pipe value across all samples r_out_varies = False if "r_out" in locked_param_dict: r_out_last_values = np.array( [np.asarray(locked_param_dict["r_out"][s])[-1] for s in range(n_samples)] ) if round(float(np.std(r_out_last_values)), 7) != 0: r_out_varies = True # Variable parameters: Create dataset with [param, samples] dimensions variable_param_da = xr.DataArray( list(variable_param_dict.values()), Loading Loading @@ -662,16 +672,31 @@ def save_MCrun_results( } pipe_pos = np.asarray(locked_param_x["pos"]) r_out = locked_param_x["r_out"] pipe_pos_ds = xr.Dataset( data_vars=dict(pipe_pos=(["nPipes", "xy"], pipe_pos)), coords=dict(nPipes=(["nPipes"], pipes_coord)), ) # Store r_out: if it varies across samples (optimization), store with [samples, nPipes] dims # otherwise store as locked with [nPipes] dim only if r_out_varies: r_out_per_sample = np.array( [np.asarray(locked_param_dict["r_out"][s]) for s in range(n_samples)] ) r_out_ds = xr.Dataset( data_vars=dict(r_out=(["samples", "nPipes"], r_out_per_sample)), coords=dict(samples=(["samples"], list(sample_coord)), nPipes=(["nPipes"], pipes_coord)), ) else: r_out = locked_param_x.get("r_out", locked_param_single_dict.get("r_out")) if r_out is not None and isinstance(r_out, list): r_out_ds = xr.Dataset( data_vars=dict(r_out=(["nPipes"], r_out)), coords=dict(nPipes=(["nPipes"], pipes_coord)), ) else: r_out_ds = None # Then, create dataset from locked parameters with dim(len(parnames), nlayers_k_s) locked_param_z_k_s = { Loading Loading
src/geoloop/constants.py +2 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ units_dict = { "insu_k": "W/mK", "insu_dr": "%", "k_g_res": "W/mK", "r_out": "m", } # Dictionary of formatted names for various parameters in the model. Loading Loading @@ -74,6 +75,7 @@ format_dict = { "insu_k": "$insu_{k}$", "insu_dr": "$insu_{dr}$", "k_g_res": "$k_{g-res}$", "r_out": "$r_{out}$", } # Dictionary with colors for lithology plotting Loading
src/geoloop/plotting/create_plots.py +1 −1 Original line number Diff line number Diff line Loading @@ -84,7 +84,7 @@ class PlotResults: ] variable_param_names, locked_param_names = get_param_names() x_variables = result_variables + variable_param_names x_variables = result_variables + variable_param_names + ["r_out"] # Loop through variables and create scatterplots for x_variable in x_variables: Loading
src/geoloop/utils/helpers.py +30 −5 Original line number Diff line number Diff line Loading @@ -625,6 +625,16 @@ def save_MCrun_results( variable_param_dict = {key: param_dict[key] for key in variable_param_names} locked_param_dict = {key: param_dict[key] for key in locked_param_names} # Check if r_out varies across samples (e.g. due to optimization) # by computing the std of the last pipe value across all samples r_out_varies = False if "r_out" in locked_param_dict: r_out_last_values = np.array( [np.asarray(locked_param_dict["r_out"][s])[-1] for s in range(n_samples)] ) if round(float(np.std(r_out_last_values)), 7) != 0: r_out_varies = True # Variable parameters: Create dataset with [param, samples] dimensions variable_param_da = xr.DataArray( list(variable_param_dict.values()), Loading Loading @@ -662,16 +672,31 @@ def save_MCrun_results( } pipe_pos = np.asarray(locked_param_x["pos"]) r_out = locked_param_x["r_out"] pipe_pos_ds = xr.Dataset( data_vars=dict(pipe_pos=(["nPipes", "xy"], pipe_pos)), coords=dict(nPipes=(["nPipes"], pipes_coord)), ) # Store r_out: if it varies across samples (optimization), store with [samples, nPipes] dims # otherwise store as locked with [nPipes] dim only if r_out_varies: r_out_per_sample = np.array( [np.asarray(locked_param_dict["r_out"][s]) for s in range(n_samples)] ) r_out_ds = xr.Dataset( data_vars=dict(r_out=(["samples", "nPipes"], r_out_per_sample)), coords=dict(samples=(["samples"], list(sample_coord)), nPipes=(["nPipes"], pipes_coord)), ) else: r_out = locked_param_x.get("r_out", locked_param_single_dict.get("r_out")) if r_out is not None and isinstance(r_out, list): r_out_ds = xr.Dataset( data_vars=dict(r_out=(["nPipes"], r_out)), coords=dict(nPipes=(["nPipes"], pipes_coord)), ) else: r_out_ds = None # Then, create dataset from locked parameters with dim(len(parnames), nlayers_k_s) locked_param_z_k_s = { Loading