00001 #ifndef _electrical_model_h_ 00002 #define _electrical_model_h_ 00003 #include <map> 00004 #include "ElectricalData.h" 00005 #include "ElectricalModelEqns.h" 00006 #include "ElectricalSensorInterface.h" 00007 #include "adevs.h" 00008 #include "adevs_hybrid.h" 00009 #include "events.h" 00010 00015 class ElectricalModel: 00016 public adevs::Hybrid<adevs::PortValue<BasicEvent*> >, 00017 public ElectricalSensorInterface 00018 { 00019 public: 00026 ElectricalModel(ElectricalModelEqns* eqns, double h_max = 1E-3); 00028 Complex getVoltage(unsigned bus); 00030 double getBusAngle(unsigned bus); 00032 double getGenrFreq(unsigned genr_number) 00033 { 00034 return eqns->getGenrFreq(genr_number,getState()); 00035 } 00037 double getRealGenrPower(unsigned genr_number) 00038 { 00039 return eqns->getRealGenrPower(genr_number,getState()); 00040 } 00042 double getBusFreq(unsigned bus) 00043 { 00044 return eqns->getBusFreq(bus); 00045 } 00047 bool genrOffLine(unsigned genr_number) 00048 { 00049 return eqns->genrOffLine(genr_number); 00050 } 00052 Complex getLoadPower(unsigned bus) { return eqns->getLoadPower(bus); } 00054 double getVoltageWaveform(unsigned bus) { 00055 return eqns->getVoltageWaveform(getState(),bus); } 00057 ElectricalData* getElectricalData() { 00058 return eqns->getElectricalData(); } 00060 ElectricalModelEqns* getDynamicModel() { return eqns; } 00062 double getErrTol() const; 00064 ~ElectricalModel(); 00065 private: 00066 // Electrical data for the model 00067 ElectricalModelEqns* eqns; 00068 }; 00069 00070 #endif