Skip to content

Commit be67910

Browse files
committed
new DCLines now also inherits from TwoSidesContainer
Signed-off-by: DONNOT Benjamin <benjamin.donnot@rte-france.com>
1 parent 131986a commit be67910

File tree

6 files changed

+135
-241
lines changed

6 files changed

+135
-241
lines changed

src/GridModel.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -461,13 +461,13 @@ void GridModel::check_solution_q_values(CplxVect & res, bool check_q_limits) con
461461
// then do the same for dc powerlines
462462
for(const auto & dcline: dc_lines_)
463463
{
464-
if(!dcline.connected)
464+
if(!dcline.connected_global)
465465
{
466466
// the generator is disconnected, I do nothing
467467
continue;
468468
}
469-
check_solution_q_values_onegen(res, dcline.gen_or, check_q_limits);
470-
check_solution_q_values_onegen(res, dcline.gen_ex, check_q_limits);
469+
check_solution_q_values_onegen(res, dcline.gen_side_1, check_q_limits);
470+
check_solution_q_values_onegen(res, dcline.gen_side_2, check_q_limits);
471471
}
472472
}
473473

src/GridModel.h

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -525,12 +525,12 @@ class GridModel : public GenericContainer
525525
void deactivate_dcline(int dcline_id) {dc_lines_.deactivate(dcline_id, solver_control_); }
526526
void reactivate_dcline(int dcline_id) {dc_lines_.reactivate(dcline_id, solver_control_); }
527527
void change_p_dcline(int dcline_id, real_type new_p) {dc_lines_.change_p(dcline_id, new_p, solver_control_); }
528-
void change_v_or_dcline(int dcline_id, real_type new_v_pu) {dc_lines_.change_v_or(dcline_id, new_v_pu, solver_control_); }
529-
void change_v_ex_dcline(int dcline_id, real_type new_v_pu) {dc_lines_.change_v_ex(dcline_id, new_v_pu, solver_control_); }
530-
void change_bus_dcline_or(int dcline_id, int new_bus_id) {dc_lines_.change_bus_or(dcline_id, new_bus_id, solver_control_, static_cast<int>(substations_.nb_bus())); }
531-
void change_bus_dcline_ex(int dcline_id, int new_bus_id) {dc_lines_.change_bus_ex(dcline_id, new_bus_id, solver_control_, static_cast<int>(substations_.nb_bus())); }
532-
int get_bus_dcline_or(int dcline_id) {return dc_lines_.get_bus_or(dcline_id);}
533-
int get_bus_dcline_ex(int dcline_id) {return dc_lines_.get_bus_ex(dcline_id);}
528+
void change_v_or_dcline(int dcline_id, real_type new_v_pu) {dc_lines_.change_v_side_1(dcline_id, new_v_pu, solver_control_); }
529+
void change_v_ex_dcline(int dcline_id, real_type new_v_pu) {dc_lines_.change_v_side_2(dcline_id, new_v_pu, solver_control_); }
530+
void change_bus_dcline_or(int dcline_id, int new_bus_id) {dc_lines_.change_bus_side_1(dcline_id, new_bus_id, solver_control_, static_cast<int>(substations_.nb_bus())); }
531+
void change_bus_dcline_ex(int dcline_id, int new_bus_id) {dc_lines_.change_bus_side_2(dcline_id, new_bus_id, solver_control_, static_cast<int>(substations_.nb_bus())); }
532+
int get_bus_dcline_or(int dcline_id) const {return dc_lines_.get_bus_side_1(dcline_id);}
533+
int get_bus_dcline_ex(int dcline_id) const {return dc_lines_.get_bus_side_1(dcline_id);}
534534

535535
// All results access
536536
tuple3d get_loads_res() const {return loads_.get_res();}
@@ -549,9 +549,9 @@ class GridModel : public GenericContainer
549549
const std::vector<bool>& get_storages_status() const { return storages_.get_status();}
550550
tuple3d get_sgens_res() const {return sgens_.get_res();}
551551
const std::vector<bool>& get_sgens_status() const { return sgens_.get_status();}
552-
tuple3d get_dclineor_res() const {return dc_lines_.get_or_res();}
553-
tuple3d get_dclineex_res() const {return dc_lines_.get_ex_res();}
554-
const std::vector<bool>& get_dclines_status() const { return dc_lines_.get_status();}
552+
tuple3d get_dclineor_res() const {return dc_lines_.get_res_side_1();}
553+
tuple3d get_dclineex_res() const {return dc_lines_.get_res_side_2();}
554+
const std::vector<bool>& get_dclines_status() const { return dc_lines_.get_status_global();}
555555

556556
Eigen::Ref<const RealVect> get_gen_theta() const {return generators_.get_theta();}
557557
Eigen::Ref<const RealVect> get_load_theta() const {return loads_.get_theta();}
@@ -561,8 +561,8 @@ class GridModel : public GenericContainer
561561
Eigen::Ref<const RealVect> get_lineex_theta() const {return powerlines_.get_theta_ex();}
562562
Eigen::Ref<const RealVect> get_trafohv_theta() const {return trafos_.get_theta_side_1();}
563563
Eigen::Ref<const RealVect> get_trafolv_theta() const {return trafos_.get_theta_side_2();}
564-
Eigen::Ref<const RealVect> get_dclineor_theta() const {return dc_lines_.get_theta_or();}
565-
Eigen::Ref<const RealVect> get_dclineex_theta() const {return dc_lines_.get_theta_ex();}
564+
Eigen::Ref<const RealVect> get_dclineor_theta() const {return dc_lines_.get_theta_side_1();}
565+
Eigen::Ref<const RealVect> get_dclineex_theta() const {return dc_lines_.get_theta_side_2();}
566566

567567
Eigen::Ref<const IntVect> get_all_shunt_buses() const {return shunts_.get_buses();}
568568

@@ -582,8 +582,8 @@ class GridModel : public GenericContainer
582582
tuple5d get_trafolv_res_full() const {return trafos_.get_res_lv_full();}
583583
tuple4d get_storages_res_full() const {return storages_.get_res_full();}
584584
tuple4d get_sgens_res_full() const {return sgens_.get_res_full();}
585-
tuple4d get_dclineor_res_full() const {return dc_lines_.get_res_or_full();}
586-
tuple4d get_dclineex_res_full() const {return dc_lines_.get_res_ex_full();}
585+
tuple4d get_dclineor_res_full() const {return dc_lines_.get_res_full_side_1();}
586+
tuple4d get_dclineex_res_full() const {return dc_lines_.get_res_full_side_2();}
587587

588588
/**
589589
* @brief Get the Ybus solver object (AC)

src/element_container/DCLineContainer.cpp

Lines changed: 12 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,16 @@ DCLineContainer::StateRes DCLineContainer::get_state() const
1515
{
1616
std::vector<real_type> loss_percent(loss_percent_.begin(), loss_percent_.end());
1717
std::vector<real_type> loss_mw(loss_mw_.begin(), loss_mw_.end());
18-
std::vector<bool> status = status_;
19-
DCLineContainer::StateRes res(names_,
20-
from_gen_.get_state(),
21-
to_gen_.get_state(),
18+
DCLineContainer::StateRes res(get_tsc_state(),
2219
loss_percent,
23-
loss_mw,
24-
status);
20+
loss_mw);
2521
return res;
2622
}
2723

2824
void DCLineContainer::set_state(DCLineContainer::StateRes & my_state){
29-
reset_results();
30-
names_ = std::get<0>(my_state);
31-
from_gen_.set_state(std::get<1>(my_state));
32-
to_gen_.set_state(std::get<2>(my_state));
33-
std::vector<real_type> & loss_percent = std::get<3>(my_state);
34-
std::vector<real_type> & loss_mw = std::get<4>(my_state);
35-
std::vector<bool> & status = std::get<5>(my_state);
36-
status_ = status;
25+
set_tsc_state(std::get<0>(my_state));
26+
std::vector<real_type> & loss_percent = std::get<1>(my_state);
27+
std::vector<real_type> & loss_mw = std::get<2>(my_state);
3728
loss_percent_ = RealVect::Map(&loss_percent[0], loss_percent.size());
3829
loss_mw_ = RealVect::Map(&loss_mw[0], loss_percent.size());
3930
reset_results();
@@ -52,51 +43,27 @@ void DCLineContainer::init(const Eigen::VectorXi & branch_from_id,
5243
const RealVect & max_q_ex){
5344
loss_percent_ = loss_percent;
5445
loss_mw_ = loss_mw;
55-
status_ = std::vector<bool>(branch_from_id.size(), true);
46+
init_tsc(branch_from_id, branch_to_id, "DC lines");
5647

57-
from_gen_.init(p_mw, vm_or_pu, min_q_or, max_q_or, branch_from_id);
48+
side_1_.init(p_mw, vm_or_pu, min_q_or, max_q_or, branch_from_id);
5849
RealVect p_ex = p_mw;
5950
Eigen::Index size_ = p_mw.size();
6051
for(Eigen::Index i = 0; i < size_; ++i){
6152
p_ex(i) = get_to_mw(i, p_ex(i));
6253
}
63-
to_gen_.init(p_ex, vm_ex_pu, min_q_ex, max_q_ex, branch_to_id);
54+
side_2_.init(p_ex, vm_ex_pu, min_q_ex, max_q_ex, branch_to_id);
6455
}
6556

6657
void DCLineContainer::nb_line_end(std::vector<int> & res) const
6758
{
68-
const Eigen::Index nb = from_gen_.nb();
69-
const auto & bus_or_id = get_bus_from();
70-
const auto & bus_ex_id = get_bus_to();
59+
const Eigen::Index nb = side_1_.nb();
60+
const auto & bus_or_id = get_buses_side_1();
61+
const auto & bus_ex_id = get_buses_side_2();
7162
for(Eigen::Index i = 0; i < nb; ++i){
72-
if(!status_[i]) continue;
63+
if(!status_global_[i]) continue;
7364
auto bus_or = bus_or_id(i);
7465
auto bus_ex = bus_ex_id(i);
7566
res[bus_or] += 1;
7667
res[bus_ex] += 1;
7768
}
7869
}
79-
80-
// TODO DC LINE: one side might be in the connected comp and not the other !
81-
void DCLineContainer::disconnect_if_not_in_main_component(std::vector<bool> & busbar_in_main_component)
82-
{
83-
const Eigen::Index nb = from_gen_.nb();
84-
const auto & bus_or_id = get_bus_from();
85-
const auto & bus_ex_id = get_bus_to();
86-
SolverControl unused_solver_control;
87-
for(Eigen::Index i = 0; i < nb; ++i){
88-
if(!status_[i]) continue;
89-
auto bus_or = bus_or_id(i);
90-
auto bus_ex = bus_ex_id(i);
91-
if(!busbar_in_main_component[bus_or]) {
92-
from_gen_.deactivate(i, unused_solver_control);
93-
}
94-
if(!busbar_in_main_component[bus_ex]) {
95-
to_gen_.deactivate(i, unused_solver_control);
96-
}
97-
// if(!busbar_in_main_component[bus_or] || !busbar_in_main_component[bus_ex]){
98-
// bool tmp = false;
99-
// deactivate(i, tmp);
100-
// }
101-
}
102-
}

0 commit comments

Comments
 (0)