diff --git a/pypsa/optimization/optimize.py b/pypsa/optimization/optimize.py index d8af70afd..2a8e08adc 100644 --- a/pypsa/optimization/optimize.py +++ b/pypsa/optimization/optimize.py @@ -490,7 +490,8 @@ def v_ang_for_(sub): buses_i = sub.buses_o if len(buses_i) == 1: return pd.DataFrame(0, index=sns, columns=buses_i) - sub.calculate_B_H(skip_pre=True) + if not sub.branches().empty: + sub.calculate_B_H(skip_pre=True) Z = pd.DataFrame(np.linalg.pinv((sub.B).todense()), buses_i, buses_i) Z -= Z[sub.slack_bus] return n.buses_t.p.reindex(columns=buses_i) @ Z @@ -498,7 +499,7 @@ def v_ang_for_(sub): # TODO: if multi investment optimization, the network topology is not the necessarily the same, # i.e. one has to iterate over the periods in order to get the correct angles. # Determine_network_topology is not necessarily called (only if KVL was assigned) - if "obj" in n.sub_networks: + if ("obj" in n.sub_networks) and not (n.lines.empty): n.buses_t.v_ang = pd.concat( [v_ang_for_(sub) for sub in n.sub_networks.obj], axis=1 ).reindex(columns=n.buses.index, fill_value=0.0)