web: changeTimeHorizon, changeTimeStep: Adjust profiled units

dev
Alinson S. Xavier 2 weeks ago
parent 055faefa28
commit 1c821dde14

@ -29,11 +29,23 @@ export const changeTimeHorizon = (
Object.values(newScenario.Buses).forEach((bus) => {
bus["Load (MW)"] = bus["Load (MW)"].slice(0, newT);
});
Object.values(newScenario.Generators).forEach((generator) => {
if (generator.Type === "Profiled") {
generator["Minimum power (MW)"] = generator["Minimum power (MW)"].slice(0, newT);
generator["Maximum power (MW)"] = generator["Maximum power (MW)"].slice(0, newT);
}
});
} else {
const padding = Array(newT - oldT).fill(0);
Object.values(newScenario.Buses).forEach((bus) => {
bus["Load (MW)"] = bus["Load (MW)"].concat(padding);
});
Object.values(newScenario.Generators).forEach((generator) => {
if (generator.Type === "Profiled") {
generator["Minimum power (MW)"] = generator["Minimum power (MW)"].concat(padding);
generator["Maximum power (MW)"] = generator["Maximum power (MW)"].concat(padding);
}
});
}
return [newScenario, null];
};
@ -110,6 +122,40 @@ export const changeTimeStep = (
};
}
const newGenerators: { [name: string]: any } = {};
for (const generatorName in scenario.Generators) {
const generator = scenario.Generators[generatorName]!;
if (generator.Type === "Profiled") {
// Build data_y for minimum power
const minPower = generator["Minimum power (MW)"];
const minData_y = Array(oldT + 1).fill(0);
for (let i = 0; i < oldT; i++) minData_y[i] = minPower[i];
minData_y[oldT] = minData_y[0];
// Build data_y for maximum power
const maxPower = generator["Maximum power (MW)"];
const maxData_y = Array(oldT + 1).fill(0);
for (let i = 0; i < oldT; i++) maxData_y[i] = maxPower[i];
maxData_y[oldT] = maxData_y[0];
// Run interpolation for both
const newMinPower = Array(newT).fill(0);
const newMaxPower = Array(newT).fill(0);
for (let i = 0; i < newT; i++) {
newMinPower[i] = evaluatePwlFunction(data_x, minData_y, newTimeStep * i);
newMaxPower[i] = evaluatePwlFunction(data_x, maxData_y, newTimeStep * i);
}
newGenerators[generatorName] = {
...generator,
"Minimum power (MW)": newMinPower,
"Maximum power (MW)": newMaxPower,
};
} else {
newGenerators[generatorName] = generator;
}
}
return [
{
...scenario,
@ -118,6 +164,7 @@ export const changeTimeStep = (
"Time step (min)": newTimeStep,
},
Buses: newBuses,
Generators: newGenerators,
},
null,
];

Loading…
Cancel
Save