00001
00009 #ifndef _energy_storage_H
00010 #define _energy_storage_H
00011
00012 #include <stdarg.h>
00013 #include "generators.h"
00014
00015 class energy_storage : public gld_object
00016 {
00017 private:
00018
00019 protected:
00020
00021 public:
00022
00023 set phases;
00024 enum GENERATOR_MODE {CONSTANT_V=1, CONSTANT_PQ, CONSTANT_PF, SUPPLY_DRIVEN};
00025 enumeration gen_mode_v;
00026
00027 enum GENERATOR_STATUS {OFFLINE=1, ONLINE=2};
00028 enumeration gen_status_v;
00029 enum POWER_TYPE{DC=0, AC=1};
00030 enumeration power_type_v;
00031
00032 complex V_Max;
00033 complex I_Max;
00034 double E_Max;
00035 double Energy;
00036 bool recalculate;
00037 double margin;
00038
00039 double Max_P;
00040 double Min_P;
00041
00042 double Rated_kVA;
00043
00044 double efficiency;
00045
00046 TIMESTAMP prev_time;
00047 double E_Next;
00048
00049
00050 complex V_In;
00051 complex I_In;
00052 complex V_Internal;
00053 double Rinternal;
00054 complex VA_Internal;
00055 complex I_Prev;
00056 complex I_Internal;
00057 double base_efficiency;
00058
00059 complex V_Out;
00060
00061 complex I_Out;
00062
00063 complex VA_Out;
00064
00065 complex *pCircuit_V;
00066 complex *pLine_I;
00067 bool connected;
00068
00069 public:
00070
00071 energy_storage(void);
00072 energy_storage(MODULE *module);
00073 int create(void);
00074 int init(OBJECT *parent);
00075
00076
00077 double calculate_efficiency(complex voltage, complex current);
00078
00079 TIMESTAMP presync(TIMESTAMP t0, TIMESTAMP t1);
00080 TIMESTAMP sync(TIMESTAMP t0, TIMESTAMP t1);
00081 TIMESTAMP postsync(TIMESTAMP t0, TIMESTAMP t1);
00082
00083 complex calculate_v_terminal(complex v, complex i);
00084
00085 public:
00086 static CLASS *oclass;
00087 static energy_storage *defaults;
00088 #ifdef OPTIONAL
00089 static CLASS *pclass;
00090 TIMESTAMP plc(TIMESTAMP t0, TIMESTAMP t1);
00091 #endif
00092 };
00093
00094 #endif
00095