openego / eTraGo

Optimization of flexibility options for transmission grids based on PyPSA
GNU Affero General Public License v3.0
30 stars 13 forks source link

Incorrect Handling of X and R Values for Transformers During LOPF #743

Open khelfen opened 1 month ago

khelfen commented 1 month ago

Issue Description: Currently, the handling of X and R values in the network during lopf is incorrect. The values are given in per unit (p.u.) with reference to s_nom for transformers while for lines it's in Ohm. Therefore for transformers it should remain constant even when network expansion and s_nom increases occur. However, these values are currently being adjusted, leading to significantly incorrect values.

See:

https://github.com/openego/eTraGo/blob/570902531c937e20a868c6b9bb8b0aced74d3fb0/etrago/execute/__init__.py#L52-L108

Expected Behavior: X and R values should remain constant in per unit (p.u.) with reference to s_nom for transformers, regardless of network expansion and s_nom increases.

ulfmueller commented 3 weeks ago

I think you are right - we will change that accordingly. It also brings up another potential error concerning the x and r values - as pypsa uses a transformer specific s_nom per unit calculation and we used originally a global base s_nom. Thanks for bringing that up - we will follow up on it.

Just as an additional information: We really never stumbled into these problems since we have never done any important and bigger calculation on the original topology (due to computational burden). The transformers and their behavior is completely neglected then once using the spatial clustering approaches.

ClaraBuettner commented 3 weeks ago

I had a look at the pypsa-scripts that set the constraints in the end (pf.py, function calculate_dependent_values). The used "x_pu" values for transformers are normalized using the (static) s_nom, which is not changed when the transformer is expanded. But the electrical parameters do change when the capacity is increased. This is done by the function "update_electrical_paramters" within etrago. Thus, I think that we do not need to change anything.

ulfmueller commented 3 weeks ago

I agree. So if you agree with us @khelfen as well, I would delete #745 and leave it as it was.

khelfen commented 2 weeks ago

I agree. So if you agree with us @khelfen as well, I would delete #745 and leave it as it was.

Hey :) thank you for the follow up! I'm not sure if I completely understand it.

I'll make an example to better do so and let's take this standard transformer from osmTGmod with s_nom = 630 MVA, u = 380/220 kV and u_kr = 13.5%. u_kr is the relative short-circuit voltage which corresponds to the reactance in p.u. So in this example the transformer would have a reactance value x within our model of 0.135. The calculated x_pu within calculate_dependent_values would be 0.135 / 630 MVA = 0.000214 1/MVA.

I don't see why x should be changed as it is in p.u. and when s_nom changes due to grid reinforcement x_pu will change accordingly without changing x. Like I said I'm not totally sure I do understand it but I don't think x, r, b and g of transformators should be changed by update_electrical_parameters.