Skip to content

Commit

Permalink
v1.10.8. Add APIs to load dynamic model and remove devices. pysteps i…
Browse files Browse the repository at this point in the history
…s also updated.
  • Loading branch information
changgang committed Jan 23, 2019
1 parent 281aaf0 commit 4fb2ff4
Show file tree
Hide file tree
Showing 11 changed files with 1,635 additions and 1,343 deletions.
2 changes: 2 additions & 0 deletions code/STEPS.cbp
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,9 @@
<Unit filename="source/apis/steps_api_get_device_count.cpp" />
<Unit filename="source/apis/steps_api_is_device_exist.cpp" />
<Unit filename="source/apis/steps_api_powerflow.cpp" />
<Unit filename="source/apis/steps_api_remove_devices.cpp" />
<Unit filename="source/apis/steps_api_search_devices.cpp" />
<Unit filename="source/apis/steps_api_set_dynamic_models.cpp" />
<Unit filename="source/apis/steps_api_set_get_area_parameters.cpp" />
<Unit filename="source/apis/steps_api_set_get_bus_parameters.cpp" />
<Unit filename="source/apis/steps_api_set_get_fixed_shunt_parameters.cpp" />
Expand Down
27 changes: 20 additions & 7 deletions code/STEPS.depend
Original file line number Diff line number Diff line change
Expand Up @@ -15031,7 +15031,7 @@
"header/prepare_for_tests/prepare_models_for_test.h"
"header/data_imexporter/equivalent_model_imexporter.h"

1541764759 /home/changgang/steps/code/header/power_system_database.h
1548236099 /home/changgang/steps/code/header/power_system_database.h
"header/device/bus.h"
"header/device/generator.h"
"header/device/wt_generator.h"
Expand Down Expand Up @@ -15074,7 +15074,7 @@
"header/toolkit/dynamic_simulator/dynamic_simulator.h"
<complex>

1544403709 /home/changgang/steps/code/header/data_imexporter/psse_imexporter.h
1548212108 /home/changgang/steps/code/header/data_imexporter/psse_imexporter.h
"header/data_imexporter/data_imexporter.h"
"header/device/source.h"
"header/device/transformer.h"
Expand Down Expand Up @@ -15581,7 +15581,7 @@
"thirdparty/cpptest/cpptest.h"
"header/basic/rating.h"

1544440127 source:/home/changgang/steps/code/source/basic/sparse_matrix.cpp
1544864299 source:/home/changgang/steps/code/source/basic/sparse_matrix.cpp
"header/basic/sparse_matrix.h"
"header/basic/constants.h"
"header/basic/utility.h"
Expand Down Expand Up @@ -17436,7 +17436,7 @@
"thirdparty/cpptest/cpptest.h"
"header/network_database.h"

1541764759 source:/home/changgang/steps/code/source/power_system_database.cpp
1548236188 source:/home/changgang/steps/code/source/power_system_database.cpp
"header/power_system_database.h"
"header/basic/utility.h"
"header/toolkit/dynamic_simulator/dynamic_simulator.h"
Expand Down Expand Up @@ -18779,7 +18779,7 @@
<complex>
"sparse_matrix.h"

1544864125 source:/home/changgang/steps/code/source/basic/sparse_matrix_csparse.cpp
1544864362 source:/home/changgang/steps/code/source/basic/sparse_matrix_csparse.cpp
"header/basic/sparse_matrix_csparse.h"
"header/basic/constants.h"
"header/basic/utility.h"
Expand Down Expand Up @@ -19244,7 +19244,7 @@
<string>
<fstream>

1541764759 /home/changgang/steps/code/header/data_imexporter/bpa_imexporter.h
1548212331 /home/changgang/steps/code/header/data_imexporter/bpa_imexporter.h
"header/data_imexporter/data_imexporter.h"
"header/device/source.h"
"header/device/transformer.h"
Expand Down Expand Up @@ -19641,7 +19641,7 @@
"header/meter/meter.h"
<complex>

1541765611 /home/changgang/steps/code/header/apis/steps_api.h
1548235682 /home/changgang/steps/code/header/apis/steps_api.h
"header/power_system_database.h"
"header/toolkit/powerflow_solver/powerflow_solver.h"
"header/toolkit/dynamic_simulator/dynamic_simulator.h"
Expand Down Expand Up @@ -20320,3 +20320,16 @@
1462384894 /home/changgang/steps/code/thirdparty/SuiteSparse/BTF/Include/btf.h
"SuiteSparse_config.h"

1548236009 source:/home/changgang/steps/code/source/apis/steps_api_remove_devices.cpp
"header/apis/steps_api.h"
"header/basic/utility.h"
"header/steps_namespace.h"
"header/data_imexporter/psse_imexporter.h"
"header/data_imexporter/bpa_imexporter.h"

1548235609 source:/home/changgang/steps/code/source/apis/steps_api_set_dynamic_models.cpp
"header/apis/steps_api.h"
"header/basic/utility.h"
"header/data_imexporter/psse_imexporter.h"
"header/data_imexporter/bpa_imexporter.h"

2,672 changes: 1,343 additions & 1,329 deletions code/STEPS.layout

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions code/header/apis/steps_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,24 @@ EXPORT_STEPS_DLL void api_add_area(size_t area_number, char* area_name);
EXPORT_STEPS_DLL void api_add_zone(size_t zone_number, char* zone_name);
EXPORT_STEPS_DLL void api_add_owner(size_t owner_number, char* owner_name);


EXPORT_STEPS_DLL void api_remove_bus(size_t bus_number);
EXPORT_STEPS_DLL void api_remove_generator(size_t bus_number, char* identifier);
EXPORT_STEPS_DLL void api_remove_wt_generator(size_t bus_number, char* identifier);
EXPORT_STEPS_DLL void api_remove_pv_unit(size_t bus_number, char* identifier);
EXPORT_STEPS_DLL void api_remove_load(size_t bus_number, char* identifier);
EXPORT_STEPS_DLL void api_remove_fixed_shunt(size_t bus_number, char* identifier);
EXPORT_STEPS_DLL void api_remove_line(size_t sending_side_bus_number, size_t receiving_side_bus_number, char* identifier);
EXPORT_STEPS_DLL void api_remove_hvdc(size_t rectifier_bus_number, size_t inverter_bus_number, char* identifier);
EXPORT_STEPS_DLL void api_remove_transformer(size_t primary_side_bus_number, size_t secondary_side_bus_number, size_t tertiary_side_bus_number, char* identifier);
EXPORT_STEPS_DLL void api_remove_equivalent_device(size_t bus_number, char* identifier);
EXPORT_STEPS_DLL void api_remove_energy_storage(size_t bus_number, char* identifier);
EXPORT_STEPS_DLL void api_remove_area(size_t area_number);
EXPORT_STEPS_DLL void api_remove_zone(size_t zone_number);
EXPORT_STEPS_DLL void api_remove_owner(size_t owner_number);



EXPORT_STEPS_DLL bool api_is_bus_exist(size_t bus);
EXPORT_STEPS_DLL bool api_is_generator_exist(size_t bus, char* ickt);
EXPORT_STEPS_DLL bool api_is_wt_generator_exist(size_t bus, char* ickt);
Expand Down Expand Up @@ -250,6 +268,8 @@ EXPORT_STEPS_DLL void api_set_owner_string_data(size_t owner, char* parameter_na
EXPORT_STEPS_DLL bool api_get_owner_boolean_data(size_t owner, char* parameter_name);
EXPORT_STEPS_DLL void api_set_owner_boolean_data(size_t owner, char* parameter_name, bool value);

EXPORT_STEPS_DLL void api_set_dynamic_model(char* model_string, char* file_type);

EXPORT_STEPS_DLL const char* api_get_generator_related_model_name(size_t bus, char* identifier, char* model_type);
EXPORT_STEPS_DLL double api_get_generator_related_model_float_parameter(size_t bus, char* identifier, char* model_type, char* parameter_name);
EXPORT_STEPS_DLL void api_set_generator_related_model_float_parameter(size_t bus, char* identifier, char* model_type, char* parameter_name, double value);
Expand Down
4 changes: 2 additions & 2 deletions code/header/data_imexporter/bpa_imexporter.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ class BPA_IMEXPORTER : public DATA_IMEXPORTER

virtual void load_powerflow_data(string file);
virtual void load_dynamic_data(string dy_source);
virtual void load_sequence_data(string sq_source);
virtual void load_sequence_data(string sq_source);

void load_one_model(string data);

virtual void export_powerflow_data(string file);
virtual void export_dynamic_data(string file);
Expand Down Expand Up @@ -80,7 +81,6 @@ class BPA_IMEXPORTER : public DATA_IMEXPORTER


void load_all_models();
void load_one_model(string data);
string get_dynamic_model_name(string data);

vector<LOAD*> get_all_loads_of(string data);
Expand Down
5 changes: 3 additions & 2 deletions code/header/data_imexporter/psse_imexporter.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ class PSSE_IMEXPORTER : public DATA_IMEXPORTER

virtual void load_powerflow_data(string file);
virtual void load_dynamic_data(string dy_source);
virtual void load_sequence_data(string sq_source);
virtual void load_sequence_data(string sq_source);

void load_one_model(string data);

virtual void export_powerflow_data(string file);
virtual void export_dynamic_data(string file);
Expand Down Expand Up @@ -89,7 +91,6 @@ class PSSE_IMEXPORTER : public DATA_IMEXPORTER
void load_dynamic_data_into_ram(string file);

void load_all_models();
void load_one_model(string data);
string get_dynamic_model_name(string data);

void add_GENCLS_model(string data);
Expand Down
9 changes: 6 additions & 3 deletions code/header/power_system_database.h
Original file line number Diff line number Diff line change
Expand Up @@ -407,11 +407,14 @@ class POWER_SYSTEM_DATABASE
void clear_energy_storage(const DEVICE_ID& device_id);
void clear_energy_storages_connecting_to_bus(const size_t bus);
void clear_all_energy_storages();


void clear_area(size_t area);
void clear_all_areas();


void clear_zone(size_t zone);
void clear_all_zones();


void clear_owner(size_t owner);
void clear_all_owners();

void trip_bus(size_t bus);
Expand Down
114 changes: 114 additions & 0 deletions code/source/apis/steps_api_remove_devices.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
#include "header/apis/steps_api.h"
#include "header/basic/utility.h"
#include "header/steps_namespace.h"
#include "header/data_imexporter/psse_imexporter.h"
#include "header/data_imexporter/bpa_imexporter.h"

void api_remove_bus(size_t bus_number)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
if(not psdb.is_bus_exist(bus_number))
psdb.clear_bus(bus_number);
}

void api_remove_generator(size_t bus_number, char* identifier)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
DEVICE_ID did = get_generator_device_id(bus_number, identifier);
if(not psdb.is_generator_exist(did))
psdb.clear_generator(did);
}

void api_remove_wt_generator(size_t bus_number, char* identifier)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
DEVICE_ID did = get_wt_generator_device_id(bus_number, identifier);
if(not psdb.is_wt_generator_exist(did))
psdb.clear_wt_generator(did);
}


void api_remove_pv_unit(size_t bus_number, char* identifier)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
DEVICE_ID did = get_pv_unit_device_id(bus_number, identifier);
if(not psdb.is_pv_unit_exist(did))
psdb.clear_pv_unit(did);
}

void api_remove_load(size_t bus_number, char* identifier)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
DEVICE_ID did = get_load_device_id(bus_number, identifier);
if(not psdb.is_load_exist(did))
psdb.clear_load(did);
}

void api_remove_fixed_shunt(size_t bus_number, char* identifier)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
DEVICE_ID did = get_fixed_shunt_device_id(bus_number, identifier);
if(not psdb.is_fixed_shunt_exist(did))
psdb.clear_fixed_shunt(did);
}

void api_remove_line(size_t sending_side_bus_number, size_t receiving_side_bus_number, char* identifier)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
DEVICE_ID did = get_line_device_id(sending_side_bus_number, receiving_side_bus_number, identifier);
if(not psdb.is_line_exist(did))
psdb.clear_line(did);
}

void api_remove_hvdc(size_t rectifier_bus_number, size_t inverter_bus_number, char* identifier)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
DEVICE_ID did = get_hvdc_device_id(rectifier_bus_number, inverter_bus_number, identifier);
if(not psdb.is_hvdc_exist(did))
psdb.clear_hvdc(did);
}

void api_remove_transformer(size_t primary_side_bus_number, size_t secondary_side_bus_number, size_t tertiary_side_bus_number, char* identifier)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
DEVICE_ID did = get_transformer_device_id(primary_side_bus_number, secondary_side_bus_number, tertiary_side_bus_number, identifier);
if(not psdb.is_transformer_exist(did))
psdb.clear_transformer(did);
}

void api_remove_equivalent_device(size_t bus_number, char* identifier)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
DEVICE_ID did = get_equivalent_device_id(bus_number, identifier);
if(not psdb.is_equivalent_device_exist(did))
psdb.clear_equivalent_device(did);
}

void api_remove_energy_storage(size_t bus_number, char* identifier)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
DEVICE_ID did = get_energy_storage_device_id(bus_number, identifier);
if(not psdb.is_energy_storage_exist(did))
psdb.clear_energy_storage(did);
}

void api_remove_area(size_t area_number)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
if(not psdb.is_area_exist(area_number))
psdb.clear_area(area_number);
}

void api_remove_zone(size_t zone_number)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
if(not psdb.is_zone_exist(zone_number))
psdb.clear_zone(zone_number);
}

void api_remove_owner(size_t owner_number)
{
POWER_SYSTEM_DATABASE& psdb = get_default_power_system_database();
if(not psdb.is_owner_exist(owner_number))
psdb.clear_owner(owner_number);
}
30 changes: 30 additions & 0 deletions code/source/apis/steps_api_set_dynamic_models.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#include "header/apis/steps_api.h"
#include "header/basic/utility.h"
#include "header/data_imexporter/psse_imexporter.h"
#include "header/data_imexporter/bpa_imexporter.h"

void api_set_dynamic_model(char* model_string, char* file_type)
{
string data(model_string);
string FileType(file_type);
FileType = string2upper(FileType);
if(FileType=="PSSE" or FileType=="PSS/E")
{
PSSE_IMEXPORTER importer;
importer.load_one_model(data);
}
else
{
if(FileType=="BPA")
{
BPA_IMEXPORTER importer;
importer.load_one_model(data);
}
else
{
ostringstream stream;
stream<<"File Type '"<<file_type<<"' is not supported for loading dynamic model with "<<__FUNCTION__<<"()";
show_information_with_leading_time_stamp(stream);
}
}
}
14 changes: 14 additions & 0 deletions code/source/power_system_database.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4573,19 +4573,33 @@ void POWER_SYSTEM_DATABASE::clear_all_energy_storages()
energy_storage_index.clear();
}

void POWER_SYSTEM_DATABASE::clear_area(size_t area)
{
;
}

void POWER_SYSTEM_DATABASE::clear_all_areas()
{
Area.clear();
area_index.clear();
}

void POWER_SYSTEM_DATABASE::clear_zone(size_t zone)
{
;
}

void POWER_SYSTEM_DATABASE::clear_all_zones()
{
Zone.clear();
zone_index.clear();
}

void POWER_SYSTEM_DATABASE::clear_owner(size_t owner)
{
;
}

void POWER_SYSTEM_DATABASE::clear_all_owners()
{
Owner.clear();
Expand Down
Loading

0 comments on commit 4fb2ff4

Please sign in to comment.