00001 #ifndef _events_h_ 00002 #define _events_h_ 00003 #include "local_typedefs.h" 00004 #include "ElectricalData.h" 00005 #include <cstdlib> 00006 00010 class BasicEvent 00011 { 00012 public: 00013 BasicEvent(){} 00014 virtual BasicEvent* clone() const { return new BasicEvent(); } 00015 virtual ~BasicEvent(){} 00016 }; 00017 00021 class LoadEvent: 00022 public BasicEvent 00023 { 00024 public: 00029 LoadEvent(unsigned bus, Complex admittance): 00030 BasicEvent(),bus(bus),y(admittance){} 00032 unsigned getBusID() const { return bus; } 00033 Complex getAdmittance() const { return y; } 00035 ~LoadEvent(){} 00036 BasicEvent* clone() const { return new LoadEvent(*this); } 00037 private: 00038 unsigned bus; 00039 Complex y; 00040 }; 00041 00047 class LineEvent: 00048 public BasicEvent 00049 { 00050 public: 00055 LineEvent(ElectricalData::line_t line, bool open): 00056 BasicEvent(),line(line),open(open){} 00058 ElectricalData::line_t getLine() const { return line; } 00060 bool openLine() const { return open; } 00062 ~LineEvent(){} 00063 BasicEvent* clone() const { return new LineEvent(*this); } 00064 private: 00065 ElectricalData::line_t line; 00066 bool open; 00067 }; 00068 00072 class LoadAdjustEvent: 00073 public BasicEvent 00074 { 00075 public: 00081 LoadAdjustEvent(double adjustment): 00082 BasicEvent(),adjustment(adjustment){} 00084 double getAdjustment() const { return adjustment; } 00085 BasicEvent* clone() const { return new LoadAdjustEvent(*this); } 00086 private: 00087 const double adjustment; 00088 }; 00089 00093 class GenrFailEvent: 00094 public BasicEvent 00095 { 00096 public: 00101 GenrFailEvent(unsigned bus): 00102 BasicEvent(),bus(bus){} 00106 unsigned getBusID() const { return bus; } 00108 ~GenrFailEvent(){} 00109 BasicEvent* clone() const { return new GenrFailEvent(*this); } 00110 private: 00111 unsigned bus; 00112 }; 00113 00114 #endif