diff --git a/backend/src/idaes_flowsheet_processor_ui/internal/parameter_sweep.py b/backend/src/idaes_flowsheet_processor_ui/internal/parameter_sweep.py index 976ebd6..2e3ffee 100644 --- a/backend/src/idaes_flowsheet_processor_ui/internal/parameter_sweep.py +++ b/backend/src/idaes_flowsheet_processor_ui/internal/parameter_sweep.py @@ -6,6 +6,7 @@ from pyomo.environ import ( value as pyovalue, units as pyunits, + Var, ) _log = idaeslog.getLogger(__name__) @@ -25,14 +26,21 @@ def set_up_sensitivity(m, solve, output_params): return outputs, optimize_kwargs, opt_function +def convert_units(flowsheet, key, value): + try: + _log.info(f"start convert_units {key} : {value}") + obj = flowsheet.fs_exp.exports[key].obj + obj_units = pyunits.get_units(obj) + ui_units = flowsheet.fs_exp.exports[key].ui_units -def convert_units(flowsheet, key): - variable_obj = flowsheet.fs_exp.exports[key].obj - ui_units = flowsheet.fs_exp.exports[key].ui_units - new_value = pyovalue(pyunits.convert(variable_obj, to_units=ui_units)) - return new_value - - + temp = Var(initialize=value, units=obj_units) + temp.construct() + crv = pyovalue(pyunits.convert(temp, to_units=ui_units)) + _log.info(f"end convert_units {key} : {crv}") + return crv + except Exception as e: + _log.info(f"unable to convert_units for {key}: {e}") + return value def run_analysis( flowsheet, @@ -158,16 +166,16 @@ def run_parameter_sweep(flowsheet, info): _log.error(f"err: {err}") raise HTTPException(500, detail=f"Sweep failed: {err}") results_table["values"] = results[0].tolist() + num_parameters = len(parameters) for value in results_table["values"]: - for i in range(1, len(value)): + for i in range(len(value)): if np.isnan(value[i]): value[i] = None else: key = keys[i] - value_with_correct_units = convert_units(flowsheet=flowsheet, key=key) - # print(f"convert_units produces: {value_with_correct_units} from {pyovalue(flowsheet.fs_exp.exports[key].obj)}") + value_with_correct_units = convert_units(flowsheet=flowsheet, key=key, value=value[i]) value[i] = value_with_correct_units results_table["keys"] = keys - results_table["num_parameters"] = len(parameters) + results_table["num_parameters"] = num_parameters results_table["num_outputs"] = len(output_params) return results_table diff --git a/frontend/cypress/e2e/FlowsheetTesting.cy.js b/frontend/cypress/e2e/FlowsheetTesting.cy.js index afe1bba..d15da52 100644 --- a/frontend/cypress/e2e/FlowsheetTesting.cy.js +++ b/frontend/cypress/e2e/FlowsheetTesting.cy.js @@ -1,16 +1,5 @@ import { flowsheets } from "./Flowsheets" describe('IDAES Flowsheet Processor UI Testing', () => { - it('tests flowsheets-list page', () => { - cy.load_flowsheets_list() - cy.screenshot('loaded flowsheet list page') - - // verify that heading and table headers are present - cy.findByRole('heading', { name: /flowsheets/i}) - cy.findByRole('columnheader', { name: /flowsheet name/i}) - cy.findByRole('columnheader', { name: /last run/i}) - cy.screenshot('end-list-page-test') - }) - it('tests invalid inputs', () => { cy.load_flowsheets_list() cy.screenshot('loaded flowsheet list page')