The powerflow_object class is an abstract class that implements basic elements of powerflow solutions. More...
Modules | |
Link | |
Node | |
The node is one of the major components of the method used for solving a powerflow network. | |
Functions | |
EXPORT int | create_powerflow_object (OBJECT **obj, OBJECT *parent) |
REQUIRED: allocate and initialize an object. | |
EXPORT int | init_powerflow_object (OBJECT *obj) |
Object initialization is called once after all object have been created. | |
EXPORT TIMESTAMP | sync_powerflow_object (OBJECT *obj, TIMESTAMP t0, PASSCONFIG pass) |
Sync is called when the clock needs to advance on the bottom-up pass (PC_BOTTOMUP). |
The powerflow_object class is an abstract class that implements basic elements of powerflow solutions.
There are two critical pieces of information:
phases
indicates the phases which are connected by this object. This may be any feasible combination of the phase flagsPHASE_A
for phase A connectionsPHASE_B
for phase B connectionsPHASE_C
for phase C connectionsPHASE_N
for neutral connectionsPHASE_D
for delta connections (implies A, B, C);PHASE_A
for split connections (requires one of A, B, or C);PHASE_ABC
for three phase connectionsPHASE_ABCN
for three phase connections with separate neutralreference_bus
indicates the bus for the reference frequency and voltage at which the solution is to be computed. The current solution method does not change the frequency nor does it consider the frequency in the powerflow calculated. The parameter is only to be used to adjust frequency-sensitive loads, such as Grid-FriendlyTM devices.In addition, each powerflow_object defined must specify what it's parent object is for the purposes of establishing the evaluation order through the ranks. The reference bus is also propagated using the rank order.
The powerflow_object provides optional support for outage conditions when compiled with the SUPPORT_OUTAGES flag is defined in powerflow_object.h. When enabled the following parameters are also defined
condition
indicates the device's operating condition with respect to abnormal phase configuration that would require special consideration during the powerflow solution. This can be any combination of two of the followingOC_NORMAL
for no abnormal configuration (excludes all others)OC_PHASE_A_CONTACT
phase A in contactOC_PHASE_B_CONTACT
phase B in contactOC_PHASE_C_CONTACT
phase C in contactOC_NEUTRAL_CONTACT
neutral in contactOC_SPLIT_1_CONTACT
split line 1 in contactOC_SPLIT_2_CONTACT
split line 2 in contactOC_SPLIT_N_CONTACT
split line N in contactOC_GROUND_CONTACT
ground in contactOC_PHASE_A_OPEN
phase A is openOC_PHASE_B_OPEN
phase B is openOC_PHASE_C_OPEN
phase C is openOC_NEUTRAL_OPEN
neutral is openOC_SPLIT_1_OPEN
split line 1 is openOC_SPLIT_2_OPEN
split line 2 is openOC_SPLIT_N_OPEN
split neutral is openOC_GROUND_OPEN
ground connection is opensolution
indicates whether special solution methods are required. The base powerflow_object only recognized the normal solution method (PS_NORMAL), but each object may add its own identifiers, so long as it does not conflict any identifiers in the object inheritance hierarchy. When SUPPORT_OUTAGES is defined, the flag PS_OUTAGE is also defined and can be used to engage an alternate solution method.When SUPPORT_OUTAGES
is defined, the postsync
pass will examine whether condition
and solution
are matched. If there is an inconsistency (i.e., condition
!= OC_NORMAL &&
or solution
== PS_NORMALcondition
== OC_NORMAL &&
), then they will be reconciled and the solver will iterate again. Object derived from powerflow_object can inspect the value of solution
!= PS_NORMALcondition
to determine whether they can use the normal powerflow solution method, or an alternative method that is appropriate for abnormal conditions. Be aware that this may result in a change of state in some other object that may cause the solver to reiterate. It is highly recommended that state changes to OC_NORMAL have a non-zero delay built in (i.e., allow the clock to advanced). Failure to do so may result in non-convergence of the solver.
EXPORT int create_powerflow_object | ( | OBJECT ** | obj, | |
OBJECT * | parent | |||
) |
REQUIRED: allocate and initialize an object.
obj | a pointer to a pointer of the last object in the list | |
parent | a pointer to the parent of this object |
Definition at line 264 of file powerflow_object.cpp.
EXPORT int init_powerflow_object | ( | OBJECT * | obj | ) |
Object initialization is called once after all object have been created.
obj | a pointer to this object |
Definition at line 287 of file powerflow_object.cpp.
EXPORT TIMESTAMP sync_powerflow_object | ( | OBJECT * | obj, | |
TIMESTAMP | t0, | |||
PASSCONFIG | pass | |||
) |
Sync is called when the clock needs to advance on the bottom-up pass (PC_BOTTOMUP).
obj | the object we are sync'ing | |
t0 | this objects current timestamp | |
pass | the current pass for this sync call |
Definition at line 304 of file powerflow_object.cpp.