You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.5 KiB
90 lines
2.5 KiB
/*
|
|
* UnitCommitment.jl: Optimization Package for Security-Constrained Unit Commitment
|
|
* Copyright (C) 2020-2025, UChicago Argonne, LLC. All rights reserved.
|
|
* Released under the modified BSD license. See COPYING.md for more details.
|
|
*/
|
|
|
|
import { TransmissionLine, UnitCommitmentScenario } from "../fixtures";
|
|
import {
|
|
assertBusesNotEmpty,
|
|
changeData,
|
|
generateUniqueName,
|
|
renameItemInObject,
|
|
} from "./commonOps";
|
|
import { ValidationError } from "../Validation/validate";
|
|
import { TransmissionLinesColumnSpec } from "../../components/CaseBuilder/TransmissionLines";
|
|
|
|
export const createTransmissionLine = (
|
|
scenario: UnitCommitmentScenario,
|
|
): [UnitCommitmentScenario, ValidationError | null] => {
|
|
const err = assertBusesNotEmpty(scenario);
|
|
if (err) return [scenario, err];
|
|
const busName = Object.keys(scenario.Buses)[0]!;
|
|
const name = generateUniqueName(scenario["Transmission lines"], "l");
|
|
return [
|
|
{
|
|
...scenario,
|
|
"Transmission lines": {
|
|
...scenario["Transmission lines"],
|
|
[name]: {
|
|
"Source bus": busName,
|
|
"Target bus": busName,
|
|
"Susceptance (S)": 1.0,
|
|
"Normal flow limit (MW)": 1000,
|
|
"Emergency flow limit (MW)": 1500,
|
|
"Flow limit penalty ($/MW)": 5000.0,
|
|
},
|
|
},
|
|
},
|
|
null,
|
|
];
|
|
};
|
|
|
|
export const renameTransmissionLine = (
|
|
oldName: string,
|
|
newName: string,
|
|
scenario: UnitCommitmentScenario,
|
|
): [UnitCommitmentScenario, ValidationError | null] => {
|
|
const [newLine, err] = renameItemInObject(
|
|
oldName,
|
|
newName,
|
|
scenario["Transmission lines"],
|
|
);
|
|
if (err) return [scenario, err];
|
|
return [{ ...scenario, "Transmission lines": newLine }, null];
|
|
};
|
|
|
|
export const changeTransmissionLineData = (
|
|
line: string,
|
|
field: string,
|
|
newValueStr: string,
|
|
scenario: UnitCommitmentScenario,
|
|
): [UnitCommitmentScenario, ValidationError | null] => {
|
|
const [newLine, err] = changeData(
|
|
field,
|
|
newValueStr,
|
|
scenario["Transmission lines"][line]!,
|
|
TransmissionLinesColumnSpec,
|
|
scenario,
|
|
);
|
|
if (err) return [scenario, err];
|
|
return [
|
|
{
|
|
...scenario,
|
|
"Transmission lines": {
|
|
...scenario["Transmission lines"],
|
|
[line]: newLine as TransmissionLine,
|
|
},
|
|
},
|
|
null,
|
|
];
|
|
};
|
|
|
|
export const deleteTransmissionLine = (
|
|
name: string,
|
|
scenario: UnitCommitmentScenario,
|
|
): UnitCommitmentScenario => {
|
|
const { [name]: _, ...newLines } = scenario["Transmission lines"];
|
|
return { ...scenario, "Transmission lines": newLines };
|
|
};
|