Skip to content

Commit

Permalink
merged from upstream
Browse files Browse the repository at this point in the history
  • Loading branch information
dangunter committed Jun 1, 2024
2 parents 589c5ba + 4380106 commit 2118c2d
Show file tree
Hide file tree
Showing 9 changed files with 337 additions and 413 deletions.
2 changes: 1 addition & 1 deletion backend/app/internal/flowsheet_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

_log = idaeslog.getLogger(__name__)
# _log.setLevel(logging.DEBUG)
VERSION = 2
VERSION = 3


class FlowsheetInfo(BaseModel):
Expand Down
50 changes: 25 additions & 25 deletions backend/app/internal/parameter_sweep.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,65 +88,65 @@ def run_parameter_sweep(flowsheet, info):
keys = []
conversion_factors = []
results_table = {"headers": []}
for key in flowsheet.fs_exp.model_objects:
if flowsheet.fs_exp.model_objects[key].is_sweep:
for key in flowsheet.fs_exp.exports:
if flowsheet.fs_exp.exports[key].is_sweep:
if (
flowsheet.fs_exp.model_objects[key].lb is not None
and flowsheet.fs_exp.model_objects[key].ub is not None
flowsheet.fs_exp.exports[key].lb is not None
and flowsheet.fs_exp.exports[key].ub is not None
):
results_table["headers"].append(
flowsheet.fs_exp.model_objects[key].name
flowsheet.fs_exp.exports[key].name
)
conversion_factor = (
flowsheet.fs_exp.model_objects[key].ub
/ flowsheet.fs_exp.model_objects[key].obj.ub
flowsheet.fs_exp.exports[key].ub
/ flowsheet.fs_exp.exports[key].obj.ub
)
try:
parameters.append(
{
"name": flowsheet.fs_exp.model_objects[key].name,
"lb": flowsheet.fs_exp.model_objects[key].obj.lb,
"ub": flowsheet.fs_exp.model_objects[key].obj.ub,
"num_samples": flowsheet.fs_exp.model_objects[
"name": flowsheet.fs_exp.exports[key].name,
"lb": flowsheet.fs_exp.exports[key].obj.lb,
"ub": flowsheet.fs_exp.exports[key].obj.ub,
"num_samples": flowsheet.fs_exp.exports[
key
].num_samples,
"param": flowsheet.fs_exp.model_objects[key].obj,
"param": flowsheet.fs_exp.exports[key].obj,
}
)
except:
parameters.append(
{
"name": flowsheet.fs_exp.model_objects[key].name,
"lb": flowsheet.fs_exp.model_objects[key].obj.lb,
"ub": flowsheet.fs_exp.model_objects[key].obj.ub,
"name": flowsheet.fs_exp.exports[key].name,
"lb": flowsheet.fs_exp.exports[key].obj.lb,
"ub": flowsheet.fs_exp.exports[key].obj.ub,
"num_samples": "5",
"param": flowsheet.fs_exp.model_objects[key].obj,
"param": flowsheet.fs_exp.exports[key].obj,
}
)
# HTTPException(500, detail=f"Sweep failed: {parameters}")
flowsheet.fs_exp.model_objects[key].obj.fix()
flowsheet.fs_exp.exports[key].obj.fix()
conversion_factors.append(conversion_factor)
keys.append(key)
for key in flowsheet.fs_exp.model_objects:
for key in flowsheet.fs_exp.exports:
if (
flowsheet.fs_exp.model_objects[key].is_output
# and not flowsheet.fs_exp.model_objects[key].is_input
flowsheet.fs_exp.exports[key].is_output
# and not flowsheet.fs_exp.exports[key].is_input
):
results_table["headers"].append(
flowsheet.fs_exp.model_objects[key].name
flowsheet.fs_exp.exports[key].name
)
try:
conversion_factor = (
flowsheet.fs_exp.model_objects[key].value
/ flowsheet.fs_exp.model_objects[key].obj.value
flowsheet.fs_exp.exports[key].value
/ flowsheet.fs_exp.exports[key].obj.value
)
except Exception as e:
conversion_factor = 1
conversion_factors.append(conversion_factor)
output_params.append(
{
"name": flowsheet.fs_exp.model_objects[key].name,
"param": flowsheet.fs_exp.model_objects[key].obj,
"name": flowsheet.fs_exp.exports[key].name,
"param": flowsheet.fs_exp.exports[key].obj,
}
)
keys.append(key)
Expand Down
2 changes: 1 addition & 1 deletion backend/app/routers/flowsheets.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ async def unbuild_config(flowsheet_id: str):
fs_exp = flowsheet.fs_exp
fs_exp.m = None
fs_exp.obj = None
fs_exp.model_objects = {}
fs_exp.exports = {}
fs_exp.dof = 0
fs_exp.sweep_results = {}
fs_exp.build_options = {}
Expand Down
18 changes: 9 additions & 9 deletions backend/tests/app/routers/test_flowsheets.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ def test_get_config(client, flowsheet_id):
)
assert response.status_code == 200, body
config = body
assert len(config["model_objects"]) > 0
assert len(config["exports"]) > 0


@pytest.mark.unit
Expand Down Expand Up @@ -130,18 +130,18 @@ def test_update(client, flowsheet_id):
response, body = get_flowsheet(client, flowsheet_id, "reset")
assert response.status_code == 200, body
new_body = body.copy()
for var_name, var_data in new_body["model_objects"].items():
for var_name, var_data in new_body["exports"].items():
value = var_data["value"]
if isinstance(value, float):
var_data["value"] += 1
print(f"changed {var_name}")
response, update_body = post_flowsheet(client, flowsheet_id, "update", new_body)
assert response.status_code == 200, update_body
for var_name, var_data in update_body["model_objects"].items():
for var_name, var_data in update_body["exports"].items():
value = var_data["value"]
if isinstance(value, float) and var_data["is_input"] and not var_data["is_readonly"]:
print(f"check {var_name} is_input={var_data['is_input']}")
expect_value = new_body["model_objects"][var_name]["value"]
expect_value = new_body["exports"][var_name]["value"]
assert value == expect_value


Expand All @@ -150,7 +150,7 @@ def test_update_missing(client, flowsheet_id):
response, body = get_flowsheet(client, flowsheet_id, "reset")
assert response.status_code == 200, body
new_body = body.copy()
new_body["model_objects"]["missing"] = {
new_body["exports"]["missing"] = {
"name": "Tank 99 inlet flowrate",
"value": 2.0,
"display_units": "None",
Expand Down Expand Up @@ -191,9 +191,9 @@ def test_load_config(client, flowsheet_id):
)
assert response.status_code == 200
config = body
assert len(config["model_objects"]) > 0
assert len(config["exports"]) > 0
# make recognizable values
for var_name, var_data in config["model_objects"].items():
for var_name, var_data in config["exports"].items():
var_data["value"] = 99
response, body = post_flowsheet(
client, flowsheet_id, "save", config, query_params={"name": "test name!", "version": "1"}
Expand All @@ -204,8 +204,8 @@ def test_load_config(client, flowsheet_id):
)
assert response.status_code == 200, body
config2 = body
for var_name, var_data in config2["model_objects"].items():
assert var_data["value"] == config["model_objects"][var_name]["value"]
for var_name, var_data in config2["exports"].items():
assert var_data["value"] == config["exports"][var_name]["value"]


@pytest.mark.unit
Expand Down
12 changes: 6 additions & 6 deletions electron/ui/src/components/SweepOutput/SweepOutput.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,9 @@ export default function SweepOutput(props) {
}
}

let xLabel = `${outputData.outputData.sweep_results.headers[xIndex]} (${outputData.outputData.model_objects[keys[xIndex]].display_units})`
let yLabel = `${outputData.outputData.sweep_results.headers[yIndex]} (${outputData.outputData.model_objects[keys[yIndex]].display_units})`
let zLabel = `${outputData.outputData.sweep_results.headers[zIndex]} (${outputData.outputData.model_objects[keys[zIndex]].display_units})`
let xLabel = `${outputData.outputData.sweep_results.headers[xIndex]} (${outputData.outputData.exports[keys[xIndex]].display_units})`
let yLabel = `${outputData.outputData.sweep_results.headers[yIndex]} (${outputData.outputData.exports[keys[yIndex]].display_units})`
let zLabel = `${outputData.outputData.sweep_results.headers[zIndex]} (${outputData.outputData.exports[keys[zIndex]].display_units})`

let tempPlotData = [{
z:z,
Expand Down Expand Up @@ -150,7 +150,7 @@ export default function SweepOutput(props) {
let keyIdx = 1
for (let each of ys) {
if( keyIdx === yIndex){
let yName = `${outputData.outputData.sweep_results.headers[keyIdx]} (${outputData.outputData.model_objects[keys[keyIdx]].display_units})`
let yName = `${outputData.outputData.sweep_results.headers[keyIdx]} (${outputData.outputData.exports[keys[keyIdx]].display_units})`
let tempTrace = {x: x, y: each, type:"scatter", name: yName}
tempData.push(tempTrace)

Expand All @@ -159,8 +159,8 @@ export default function SweepOutput(props) {

}

let xLabel = `${outputData.outputData.sweep_results.headers[0]} (${outputData.outputData.model_objects[keys[0]].display_units})`
let yLabel = `${outputData.outputData.sweep_results.headers[yIndex]} (${outputData.outputData.model_objects[keys[yIndex]].display_units})`
let xLabel = `${outputData.outputData.sweep_results.headers[0]} (${outputData.outputData.exports[keys[0]].display_units})`
let yLabel = `${outputData.outputData.sweep_results.headers[yIndex]} (${outputData.outputData.exports[keys[yIndex]].display_units})`
let tempLayout = {
xaxis: {
title: {
Expand Down
10 changes: 3 additions & 7 deletions electron/ui/src/views/FlowsheetConfig/ConfigInput/ConfigInput.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,19 +145,15 @@ export default function ConfigInput(props) {
const handleUpdateDisplayValue = (id, value) => {
let tempFlowsheetData = {...flowsheetData}
const inputs = getInputs(tempFlowsheetData)
console.log('updating ' + id + ' with value ' + value + '. previous value was ' + inputs[id].value)
console.debug('updating ' + id + ' with value ' + value + '. previous value was ' + inputs[id].value)
inputs[id].value = value
}

const handleUpdateFixed = (id, value, type) => {
let tempFlowsheetData = {...flowsheetData}
const inputs = getInputs(tempFlowsheetData);
inputs.fixed = value;
if (type === "sweep") {
inputs[id].is_sweep = true
} else {
inputs[id].is_sweep = false
}
inputs[id].is_sweep = (type === "sweep");
updateFlowsheetData(tempFlowsheetData, null)
runButtonRef.current?.checkDisableRun()
// checkDisableRun()
Expand All @@ -173,7 +169,7 @@ export default function ConfigInput(props) {
let tempFlowsheetData = {...flowsheetData}
const inputs = getInputs(tempFlowsheetData)
inputs[id].num_samples = value
console.log('updating samples ' + id + ' with value ' + value + ' ' + inputs[id].num_samples)
console.debug('updating samples ' + id + ' with value ' + value + ' ' + inputs[id].num_samples)
}
/**
* Organize variables into sections by their 'category' attribute.
Expand Down
Loading

0 comments on commit 2118c2d

Please sign in to comment.