From 432a796498eb47abf950b4820f8fb2cb1b305477 Mon Sep 17 00:00:00 2001 From: Changgang Li Date: Mon, 22 Jul 2019 11:32:25 +0800 Subject: [PATCH] v0.3.23.2. (1) Fix bug in hvdc_model: the loss of inverter side should be deleted from the DC power. (2) Update the loss calcuation logic of HVDC device. (3) Add GENROU and GENSAL model checking function --- code/STEPS.depend | 12 ++--- code/source/device/hvdc.cpp | 34 ++++++++++-- code/source/model/hvdc_model/hvdc_model.cpp | 9 +++- .../sg_models/sync_generator_model/genrou.cpp | 31 ++++++++++- .../sg_models/sync_generator_model/gensal.cpp | 21 +++++++- .../dynamic_simulator/dynamic_simulator.cpp | 53 ++++++++++++++++++- 6 files changed, 146 insertions(+), 14 deletions(-) diff --git a/code/STEPS.depend b/code/STEPS.depend index fa9af1fb..e32ff13f 100644 --- a/code/STEPS.depend +++ b/code/STEPS.depend @@ -2386,7 +2386,7 @@ "header/power_system_database.h" "header/STEPS.h" -1563500065 source:c:\users\lichg\steps\code\source\device\hvdc.cpp +1563676767 source:c:\users\lichg\steps\code\source\device\hvdc.cpp "header/device/hvdc.h" "header/basic/utility.h" "header/basic/constants.h" @@ -2838,7 +2838,7 @@ "header/model/hvdc_model/hvdc_model_test.h" "header/STEPS.h" -1559112961 source:c:\users\lichg\steps\code\source\model\hvdc_model\hvdc_model.cpp +1563700825 source:c:\users\lichg\steps\code\source\model\hvdc_model\hvdc_model.cpp "header/model/hvdc_model/hvdc_model.h" "header/steps_namespace.h" "header/basic/utility.h" @@ -3806,7 +3806,7 @@ "header/model/sg_models/sync_generator_model/gencls.h" "header/power_system_database.h" -1561097476 source:c:\users\lichg\steps\code\source\model\sg_models\sync_generator_model\genrou.cpp +1563699881 source:c:\users\lichg\steps\code\source\model\sg_models\sync_generator_model\genrou.cpp "header/model/sg_models/sync_generator_model/genrou.h" "header/basic/utility.h" "header/STEPS.h" @@ -3834,7 +3834,7 @@ "header/model/sg_models/sync_generator_model/genrou.h" "header/STEPS.h" -1561097475 source:c:\users\lichg\steps\code\source\model\sg_models\sync_generator_model\gensal.cpp +1563699929 source:c:\users\lichg\steps\code\source\model\sg_models\sync_generator_model\gensal.cpp "header/model/sg_models/sync_generator_model/gensal.h" "header/basic/utility.h" "header/STEPS.h" @@ -4798,7 +4798,7 @@ "header/toolkit/cct_searcher/cct_searcher.h" "header/STEPS.h" -1563500568 source:c:\users\lichg\steps\code\source\toolkit\dynamic_simulator\dynamic_simulator.cpp +1563700780 source:c:\users\lichg\steps\code\source\toolkit\dynamic_simulator\dynamic_simulator.cpp "header/toolkit/dynamic_simulator/dynamic_simulator.h" "header/basic/utility.h" "header/steps_namespace.h" @@ -4841,7 +4841,7 @@ "header/toolkit/dynamic_simulator/dynamic_simulator.h" -1563241935 source:c:\users\lichg\steps\code\source\toolkit\powerflow_solver\powerflow_solver.cpp +1563678595 source:c:\users\lichg\steps\code\source\toolkit\powerflow_solver\powerflow_solver.cpp "header/toolkit/powerflow_solver/powerflow_solver.h" "header/basic/utility.h" "header/steps_namespace.h" diff --git a/code/source/device/hvdc.cpp b/code/source/device/hvdc.cpp index 75f547e7..3d240a97 100644 --- a/code/source/device/hvdc.cpp +++ b/code/source/device/hvdc.cpp @@ -1182,6 +1182,12 @@ void HVDC::run(DYNAMIC_MODE mode) { case INITIALIZE_MODE: { + if(toolkit.is_detailed_log_enabled()) + { + osstream<<"HVDC data before dynamic initialization"; + toolkit.show_information_with_leading_time_stamp(osstream); + show_solved_hvdc_steady_state(); + } HVDC_MODEL* hvdc_model = get_hvdc_model(); if(hvdc_model!=NULL) hvdc_model->initialize(); @@ -1385,10 +1391,20 @@ void HVDC::show_solved_hvdc_steady_state() const osstream<<"Rectifier AC current = "< S(P,Q); + complex V = psdb.get_bus_complex_voltage_in_pu(get_converter_bus(converter)); + S /= psdb.get_system_base_power_in_MVA(); + complex I = conj(S/V); + I *= (psdb.get_system_base_power_in_MVA()/(sqrt(3.0)*psdb.get_bus_base_voltage_in_kV(get_converter_bus(converter)))); + osstream<<"Pdc = "<(P,Q); + V = psdb.get_bus_complex_voltage_in_pu(get_converter_bus(converter)); + S /= psdb.get_system_base_power_in_MVA(); + I = conj(S/V); + I *= (psdb.get_system_base_power_in_MVA()/(sqrt(3.0)*psdb.get_bus_base_voltage_in_kV(get_converter_bus(converter)))); + osstream<<"Pdc = "< HVDC_MODEL::get_converter_ac_complex_power_in_MVA(HVDC_CONVERTER double Idc = get_converter_dc_current_in_kA(converter); double P = get_converter_dc_power_in_MW(converter); double Ploss = N*(2.0*Idc*Idc*Rc); // N for bridges, 2 for two phases - P += Ploss; + if(converter==RECTIFIER) + P += Ploss; + else + P -= Ploss; double phi = deg2rad(get_converter_ac_power_factor_angle_in_deg(converter)); if(phi==0.0) return P; diff --git a/code/source/model/sg_models/sync_generator_model/genrou.cpp b/code/source/model/sg_models/sync_generator_model/genrou.cpp index 426a6b40..58eaccfc 100644 --- a/code/source/model/sg_models/sync_generator_model/genrou.cpp +++ b/code/source/model/sg_models/sync_generator_model/genrou.cpp @@ -484,7 +484,36 @@ double GENROU::get_terminal_current_in_pu_based_on_sbase() void GENROU::check() { - ; + ostringstream osstream; + STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__); + double xdp = get_Xdp(); + double xqp = get_Xqp(); + double xpp = get_Xpp(); + double xl = get_Xl(); + osstream<<"Error is detected at "<0.0001) + { + osstream<<"mismatch @ bus "<0.0001"<get_device_name()<<": "<get_converter_bus(INVERTER); internal_bus = network_matrix.get_internal_bus_number_of_physical_bus(physical_bus); @@ -2434,6 +2477,14 @@ void DYNAMICS_SIMULATOR::add_hvdcs_to_bus_current_mismatch() I = hvdcs[i]->get_converter_dynamic_current_in_pu_based_on_system_base_power(INVERTER); I_mismatch[internal_bus] -= I; + + if(toolkit.is_detailed_log_enabled()) + { + I *= (psdb.get_system_base_power_in_MVA()/(sqrt(3.0)*psdb.get_bus_base_voltage_in_kV(physical_bus))); + osstream<<"Current at inverter side of "<get_device_name()<<": "<