Skip to content

Commit

Permalink
v0.3.9. Add function to list calling function when toolkit is not set…
Browse files Browse the repository at this point in the history
… in BASE. Add function to test if powerflow is converged before running dynamic simulation.
  • Loading branch information
changgang committed May 29, 2019
1 parent 41f74ee commit 27f46d5
Show file tree
Hide file tree
Showing 109 changed files with 1,206 additions and 1,192 deletions.
221 changes: 111 additions & 110 deletions code/STEPS.depend

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion code/header/basic/base.h
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
#ifndef BASE_H
#define BASE_H
#include <string>

class POWER_SYSTEM_DATABASE;
class STEPS;

using namespace std;

class BASE
{
public:
BASE();
virtual ~BASE();

void set_toolkit(STEPS& toolkit);
STEPS& get_toolkit() const;
STEPS& get_toolkit(const string calling_function) const;
bool is_toolkit_set() const;

virtual bool is_valid() const = 0;
virtual void check() = 0;
Expand Down
12 changes: 6 additions & 6 deletions code/source/basic/area.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ AREA::~AREA()

void AREA::set_area_number(size_t number)
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);

if(number!=0)
this->area_number = number;
Expand All @@ -40,7 +40,7 @@ void AREA::set_area_name(string name)

void AREA::set_area_swing_bus(size_t bus)
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
if(bus==0)
{
set_area_swing_bus_with_zero_input();
Expand All @@ -65,7 +65,7 @@ void AREA::set_area_swing_bus(size_t bus)

void AREA::set_area_swing_bus_with_zero_input()
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
POWER_SYSTEM_DATABASE& psdb = toolkit.get_power_system_database();

bool found_slack_bus_in_this_area = false;
Expand Down Expand Up @@ -93,7 +93,7 @@ void AREA::set_area_swing_bus_with_zero_input()

void AREA::set_area_swing_bus_with_existing_bus(size_t bus)
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
ostringstream osstream;
POWER_SYSTEM_DATABASE& psdb = toolkit.get_power_system_database();

Expand Down Expand Up @@ -134,7 +134,7 @@ void AREA::set_area_power_mismatch_tolerance_in_MW(double P)
this->area_power_mismatch_tolerance_in_MW = P;
else
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
ostringstream osstream;
osstream<<"Warning. Non-positive area power mismatch tolerance ("<<P<<" MW) is not allowed for setting up area "<<get_area_number()<<"."<<endl
<<"10.0MW will be set automatically.";
Expand Down Expand Up @@ -193,7 +193,7 @@ void AREA::clear()

void AREA::report() const
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
ostringstream osstream;

size_t bus = get_area_swing_bus();
Expand Down
18 changes: 13 additions & 5 deletions code/source/basic/base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,23 @@ void BASE::set_toolkit(STEPS& toolkit)
this->toolkit = &toolkit;
}

STEPS& BASE::get_toolkit() const
bool BASE::is_toolkit_set() const
{
if(toolkit==NULL)
return toolkit!=NULL;
}

STEPS& BASE::get_toolkit(const string calling_function) const
{
if(is_toolkit_set())
return (*toolkit);
else
{
ostringstream osstream;
osstream<<"Error. Toolkit is not set in BASE::toolkit";
osstream<<"Error. Toolkit is not set in BASE::toolkit when calling the following function:\n"
<<calling_function<<"\n"
<<"Report to developer immediately for further help.";
show_information_with_leading_time_stamp_with_default_toolkit(osstream);
return (*toolkit);
}

return (*toolkit);
}

4 changes: 2 additions & 2 deletions code/source/basic/timer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ void TIMER::start()
if(device==NULL)
return;

STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
time_when_timer_is_started_in_s = toolkit.get_dynamic_simulation_time_in_s();
}

Expand All @@ -76,7 +76,7 @@ bool TIMER::is_timed_out() const
return false;
else
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double TIME = toolkit.get_dynamic_simulation_time_in_s();

if(TIME>(time_when_timer_is_started_in_s+time_interval_in_s-FLOAT_EPSILON))
Expand Down
4 changes: 2 additions & 2 deletions code/source/basic/zone.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ void ZONE::set_zone_number(size_t number)
{
ostringstream osstream;
osstream<<"0 is not allowed for setting zone number. 0 will be set to indicated invalid zone.";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);

this->zone_number = 0;
Expand Down Expand Up @@ -70,7 +70,7 @@ void ZONE::report() const
{
ostringstream osstream;
osstream<<"Zone "<<get_zone_number()<<" ("<<get_zone_name()<<")";
STEPS& toolkit=get_toolkit();
STEPS& toolkit=get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
}

Expand Down
2 changes: 1 addition & 1 deletion code/source/block/block.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ void BLOCK::check_limiter() const
{
ostringstream osstream;
osstream<<"Error. Limiter upper bound ("<<upper_limit<<") is less than lower bound ("<<lower_limit<<").";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
}
}
Expand Down
10 changes: 5 additions & 5 deletions code/source/block/differential_block.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ void DIFFERENTIAL_BLOCK::set_T_in_s(double t)
{
ostringstream osstream;
osstream<<"Error. Zero time constant T is not allowed for DIFFERENTIAL_BLOCK.";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
return;
}
Expand All @@ -47,7 +47,7 @@ double DIFFERENTIAL_BLOCK::get_T_in_s() const

void DIFFERENTIAL_BLOCK::initialize()
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

double k = get_K();
Expand Down Expand Up @@ -78,7 +78,7 @@ void DIFFERENTIAL_BLOCK::run(DYNAMIC_MODE mode)

void DIFFERENTIAL_BLOCK::integrate()
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

double k = get_K();
Expand All @@ -104,7 +104,7 @@ void DIFFERENTIAL_BLOCK::integrate()

void DIFFERENTIAL_BLOCK::update()
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

double k = get_K();
Expand All @@ -130,7 +130,7 @@ void DIFFERENTIAL_BLOCK::check()
{
ostringstream osstream;
osstream<<"Warning. Limiter is not allowed for DIFFERENTIAL_BLOCK, and will be disabled.";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);;
}
}
6 changes: 3 additions & 3 deletions code/source/block/first_order_block.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ void FIRST_ORDER_BLOCK::initialize()
{
ostringstream osstream;

STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

LIMITER_TYPE limiter_type = get_limiter_type();
Expand Down Expand Up @@ -136,7 +136,7 @@ void FIRST_ORDER_BLOCK::integrate()
if(k==0.0)
return;

STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

double t = get_T_in_s();
Expand Down Expand Up @@ -206,7 +206,7 @@ void FIRST_ORDER_BLOCK::update()
if(k==0.0)
return;

STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

double t = get_T_in_s();
Expand Down
6 changes: 3 additions & 3 deletions code/source/block/integral_block.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ void INTEGRAL_BLOCK::initialize()
double vmax = get_upper_limit();
double vmin = get_lower_limit();

STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

double s = y;
Expand Down Expand Up @@ -90,7 +90,7 @@ void INTEGRAL_BLOCK::run(DYNAMIC_MODE mode)

void INTEGRAL_BLOCK::integrate()
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

double t = get_T_in_s();
Expand Down Expand Up @@ -149,7 +149,7 @@ void INTEGRAL_BLOCK::integrate()

void INTEGRAL_BLOCK::update()
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

double t = get_T_in_s();
Expand Down
10 changes: 5 additions & 5 deletions code/source/block/lead_lag_block.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ void LEAD_LAG_BLOCK::set_K(double k)
{
ostringstream osstream;
osstream<<"Error. Zero amplifier K is not allowed for LEAD_LAG_BLOCK.";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
return;
}
Expand Down Expand Up @@ -62,7 +62,7 @@ void LEAD_LAG_BLOCK::initialize()

if(t1==0.0)
{
first_order_block.set_toolkit(get_toolkit());
first_order_block.set_toolkit(get_toolkit(__PRETTY_FUNCTION__));
first_order_block.set_limiter_type(this->get_limiter_type());
first_order_block.set_upper_limit(this->get_upper_limit());
first_order_block.set_lower_limit(this->get_lower_limit());
Expand All @@ -79,7 +79,7 @@ void LEAD_LAG_BLOCK::initialize()
return;
}

STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

double k = get_K();
Expand Down Expand Up @@ -123,7 +123,7 @@ void LEAD_LAG_BLOCK::run(DYNAMIC_MODE mode)

void LEAD_LAG_BLOCK::integrate()
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

double k = get_K();
Expand Down Expand Up @@ -156,7 +156,7 @@ void LEAD_LAG_BLOCK::integrate()

void LEAD_LAG_BLOCK::update()
{
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
double h = toolkit.get_dynamic_simulation_time_step_in_s();

double k = get_K();
Expand Down
6 changes: 3 additions & 3 deletions code/source/block/pd_block.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ void PD_BLOCK::set_Td_in_s(double T)
{
ostringstream osstream;
osstream<<"Error. Non-positive time constant Td is not allowed for PD_BLOCK.";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
return;
}
Expand Down Expand Up @@ -85,8 +85,8 @@ double PD_BLOCK::get_differentiator_store() const

void PD_BLOCK::initialize()
{
p_block.set_toolkit(get_toolkit());
d_block.set_toolkit(get_toolkit());
p_block.set_toolkit(get_toolkit(__PRETTY_FUNCTION__));
d_block.set_toolkit(get_toolkit(__PRETTY_FUNCTION__));

double y = get_output();
p_block.set_output(y);
Expand Down
6 changes: 3 additions & 3 deletions code/source/block/pi_block.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ void PI_BLOCK::initialize()
{
ostringstream osstream;

pid_block.set_toolkit(get_toolkit());
pid_block.set_toolkit(get_toolkit(__PRETTY_FUNCTION__));
pid_block.set_output(get_output());

pid_block.initialize();
Expand All @@ -97,15 +97,15 @@ void PI_BLOCK::initialize()
if(s>vmax)
{
osstream<<"Initialization Error. State ("<<s<<") exceeds upper limit bound ("<<vmax<<").";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
}
else
{
if(s<vmin)
{
osstream<<"Initialization Error. State ("<<s<<") exceeds lower limit bound ("<<vmin<<").";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
}
}
Expand Down
12 changes: 6 additions & 6 deletions code/source/block/pid_block.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ void PID_BLOCK::set_Td_in_s(double T)
{
ostringstream osstream;
osstream<<"Error. Non-positive time constant Td is not allowed for PID_BLOCK.";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
return;
}
Expand Down Expand Up @@ -153,9 +153,9 @@ void PID_BLOCK::initialize()
{
ostringstream osstream;

p_block.set_toolkit(get_toolkit());
i_block.set_toolkit(get_toolkit());
d_block.set_toolkit(get_toolkit());
p_block.set_toolkit(get_toolkit(__PRETTY_FUNCTION__));
i_block.set_toolkit(get_toolkit(__PRETTY_FUNCTION__));
d_block.set_toolkit(get_toolkit(__PRETTY_FUNCTION__));

p_block.set_output(0.0);
i_block.set_output(get_output());
Expand All @@ -178,15 +178,15 @@ void PID_BLOCK::initialize()
if(s>vmax)
{
osstream<<"Initialization Error. State ("<<s<<") exceeds upper limit bound ("<<vmax<<").";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
}
else
{
if(s<vmin)
{
osstream<<"Initialization Error. State ("<<s<<") exceeds lower limit bound ("<<vmin<<").";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
}
}
Expand Down
4 changes: 2 additions & 2 deletions code/source/block/proportional_block.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,14 @@ void PROPORTIONAL_BLOCK::initialize()
if(y>vmax)
{
osstream<<"Initialization Error. Proportional output ("<<y<<") exceeds upper limit bound ("<<vmax<<").";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
return;
}
if(y<vmin)
{
osstream<<"Initialization Error. Proportional output ("<<y<<") exceeds lower limit bound ("<<vmin<<").";
STEPS& toolkit = get_toolkit();
STEPS& toolkit = get_toolkit(__PRETTY_FUNCTION__);
toolkit.show_information_with_leading_time_stamp(osstream);
return;
}
Expand Down
Loading

0 comments on commit 27f46d5

Please sign in to comment.