Steady state HVDC modelling


For the last year or so I have been intermittently reading about HVDC modelling. My goal with this is to implement some sort of AC/DC steady state modelling in GridCal.

Unlike the AC equations, which are quite clear by now, the HVDC modelling is scattered and unclear in the literature (at least for me) despite being investigated since the 1960’s.

So far I have made the following conclusions:

  • The simplest model is to replace an HVDC line with a positive power generator on the sending side and a negative power generator on the receiving side. I’d rather implement something better than this…

  • There are plenty of articles modifying the Jacobians of Newton-Raphson for specific converters and what not. I would rather not do that, since I am not interested on automatically tuning the parameters.

  • Then, there is the MatACDC approach: decouple the AD and DC parts and simulate iteratively.

  • On the other side there are is legendary work by Jos Arrillaga and Bruce Smith that leads me to believe that a unified way is totally viable. This is also the way that Enrique Acha (from the same school) maintains in his latest book with a proposition for an AC/DC unified formulation.

So, I’d love to have a healthy discussion on the pros and cons of all the above.

Best regards,

Hi Santiago,

What range of dynamics are you interested to model? i.e. what time scales? I imagine this would influence pros and cons.


Hi Braulio,

I am looking at steady state, meaning intervals of 1 hour, maybe 10 or 15 minutes.

Best regards,

Hi, Then I would guess then that load flow equations models are really sufficient, correct?

That is my point precisely.

Some sources say so, others do not (they model the DC part aside)

Maybe in some network configurations a given distortion could induce oscillations for several minutes … or if the variability of power generation plays an important role? For the steady state model did you look at this type of approach: ?


That is one approach I am considering. Early tests on GridCal show that it is feasible to have this model solved in a regular Newton-Raphson.

My question is; Looking at the figure 2, I observe 2 generators that are probably used to force the flow by setting one to +P and the other to -P. Is this really necessary? Is there not any other way?

What about this approach in meshed DC grids?

I think both generators represent synchronous compensators. HVDC LCC interconnections need high short circuit ratio at the AC connection points.

About the modeling, each LCC converter has one degree of freedom (the firing angle) thus a single DC interconnection has two degrees. Ultimately, the DC Power Injection and the DC Voltage both in the rectifier side can be specified (to be more precise usually the rectifier firing angle is used to control the Rectifier Side DC Voltage and the inverter firing angle is used to control the DC Line Current). On a DC Grid modeling, probably this control scheme wouldn’t change. Rectifiers would control its DC Voltage and Inverters would control its current flow.

If you assume these specified values are “physically achievable”, you don’t really need to solve AC/DC Grids simultaneously. You can first calculate the DC Grid operation state (to obtain the active power injection in each AC connection point) and then estimate the reactive power consumption in each AC interface. This way DC interconnections can be transformed into constant power loads.

I think you do need a voltage difference to ensure a net power flow through the HVDC connection, the voltage sources in fig. 2, seem to me that are kept constant and that what is changed is the tap settings of the transformers (though, not sure what is the control algorithm that they try to simulate) … I imagine one could apply this approach to a mesh grid with multiple HVDC, but maybe the simplifications become more limiting, since it is supposed that the converters can regulate the power flow without really modelling them …

Hi Braulio,

Yes, you are approaching where I want to get.

My point is that the two generators seem to me as a modelling trick. But probably a needed trick, and that is what I want to discuss; Is there not a better way to “force a flow” than placing generators at the extremes? could this not be done with a controlled voltage difference, firing angles, etc…?

Do you have any example of what you are proposing?

I missed that the model implements converter transformer taps. What I said remains valid to some extent. Ultimately, a single “firing angle and converter transformer tap” pair controls the same variable (a DC Voltage or a DC Current). The firing angles have a rapid dynamic response and the transformer taps have a slow dynamic response. In other words, the firing angles are the primary response to an event but then the transformer taps respond so that the firing angles return to their pre-event values (to a feasible extent). That is the most common control strategy.

The paper introduced above by brauliobarahona has the following operation state (S1, T1 of HVDC 2):

Variable: Rectifier Side | Inverter Side
tap [pu]: 0.493 | 0.460
firing angle [°]: 20.05 | 4.58
DC Voltage [kV]: 549.63 | 530.35
DC Current [A]: 960
P [MW]: 529.83 | 511.25
Q [Mvar]: 254.46 | 158.53

HVDC Data:

N : 4 six-pulse bridges at each side
Rdc : 10 Omhs Line Resistance (per line)
Xcom : 6 Omhs Transformer Reactance (per bridge)

Assuming as specified variables:

alpha_rec (rectifier firing angle) = 20.05°
alpha_inv (inverter firing angle) = 4.58°
Pdc_inv (inverter DC power injection) = 511.25 MW
Vdc_inv (inverter DC voltage) = 530.35 kV

You can estimate the PQ loads by following:

Idc = Pdc_inv / Vdc_inv = 964 A;

Vdc_rec = Vdc_inv + Idc * ( 2 * Rdc ) = 549.63 kV;

Pdc_rec = Vdc_rec * Idc = 529.84 MW;

aux_Vdc_rec = ( Vdc_rec + N * Xcom * Idc ) / cos(alpha_rec) = 609.72 kV;

cos(phi_rec) = Vdc_rec / aux_Vdc_rec = 0.90145 —> phi_rec = 25.65°;

Q_rec = P_rec * tan(phi_rec) = Pdc_rec * tan(phi_rec) = 254.43 Mvar;

aux_Vdc_inv = ( Vdc_inv + N * Xcom * Idc ) / cos(alpha_inv) = 555.16 kV;

cos(phi_inv) = Vdc_inv / aux_Vdc_inv = 0.9553 —> phi_inv = 17.195°;

Q_inv = P_inv * tan(phi_inv) = Pdc_inv * tan(phi_inv) = 158.21 Mvar;

I’m not “one hundred percent sure” but this formulation seems to be an approximation. I used it anyway to reproduce exactly the paper result.

Sure, I think you can simplify the model even further if you do not care about the fast dynamics like Zalnd points out

Hi all,

Since I started this discussion I’ve been steadily working towards the implementation of the model from the article “Flexible General Branch Model Unified Power Flow Algorithm for future AC/DC Networks - Abraham Álvarez Bustos and Behzad Kazemtabrizi”.

I am happy to say that GidCal’s development branch features this model in its basic form, solving the multi-terminal AC/DC issues with an elegant all-in-one model, this is no funky AD-DC splitting or step recursion, just modified Newton-Raphson and Levenberg-Marquadt algorithms.

Best regards,

The above reference with additional details:

  • Bustos, A Alvarez and B Kazemtabrizi (June 2018). Flexible general branch model unified power flow algorithm for future flexible AC/DC networks. IEEE. doi:10.1109/EEEIC.2018.8493705. 2018 IEEE International Conference on Environment and Electrical Engineering and 2018 IEEE Industrial and Commercial Power Systems Europe (EEEIC/I CPS Europe). Closed access.
Text and images licensed under CC BY 4.0Data licensed under CC0 1.0Code licensed under MITSite terms of serviceOpenmod mailing list.