00001
00002
00003
00004 #ifndef _SUBSTATION_H
00005 #define _SUBSTATION_H
00006
00007 #include "powerflow.h"
00008 #include "node.h"
00009
00010 EXPORT SIMULATIONMODE interupdate_substation(OBJECT *obj, unsigned int64 delta_time, unsigned long dt, unsigned int iteration_count_val, bool interupdate_pos);
00011
00012 class substation : public node
00013 {
00014 protected:
00015 TIMESTAMP last_t;
00016 public:
00017 complex positive_sequence_voltage;
00018 typedef enum {
00019 R_PHASE_A,
00020 R_PHASE_B,
00021 R_PHASE_C
00022 };
00023 enumeration reference_phase;
00024 complex average_transmission_power_load;
00025 complex average_transmission_impedance_load;
00026 complex average_transmission_current_load;
00027 complex distribution_load;
00028 complex distribution_power_A;
00029 complex distribution_power_B;
00030 complex distribution_power_C;
00031 complex seq_mat[3];
00032 double distribution_real_energy;
00033 double base_power;
00034 double power_convergence_value;
00035 int has_parent;
00036 private:
00037 complex reference_number;
00038 complex transformation_matrix[3][3];
00039 complex last_power_A;
00040 complex last_power_B;
00041 complex last_power_C;
00042 complex volt_A;
00043 complex volt_B;
00044 complex volt_C;
00045 complex *pPositiveSequenceVoltage;
00046 complex *pConstantPowerLoad;
00047 complex *pConstantCurrentLoad;
00048 complex *pConstantImpedanceLoad;
00049 double *pTransNominalVoltage;
00050 public:
00051 static CLASS *oclass;
00052 static CLASS *pclass;
00053 public:
00054 substation(MODULE *mod);
00055 inline substation(CLASS *cl=oclass):node(cl){};
00056 int create(void);
00057 int init(OBJECT *parent);
00058 TIMESTAMP presync(TIMESTAMP t0, TIMESTAMP t1);
00059 TIMESTAMP sync(TIMESTAMP t0, TIMESTAMP t1);
00060 void fetch_complex(complex **prop, char *name, OBJECT *parent);
00061 void fetch_double(double **prop, char *name, OBJECT *parent);
00062 int isa(char *classname);
00063 SIMULATIONMODE inter_deltaupdate_substation(unsigned int64 delta_time, unsigned long dt, unsigned int iteration_count_val, bool interupdate_pos);
00064 };
00065
00066 #endif // _SUBSTATION_H
00067