00001
00009 #ifndef _solar_H
00010 #define _solar_H
00011
00012 #include <stdarg.h>
00013 #include "generators.h"
00014
00015 EXPORT SIMULATIONMODE interupdate_solar(OBJECT *obj, unsigned int64 delta_time, unsigned long dt, unsigned int iteration_count_val);
00016
00017 class solar : public gld_object
00018 {
00019 private:
00020 bool deltamode_inclusive;
00021 bool first_sync_delta_enabled;
00022 protected:
00023
00024 public:
00025
00026 set phases;
00027 enum GENERATOR_MODE {CONSTANT_V=1, CONSTANT_PQ=2, CONSTANT_PF=4, SUPPLY_DRIVEN=5};
00028 enumeration gen_mode_v;
00029
00030 enum GENERATOR_STATUS {OFFLINE=1, ONLINE=2};
00031 enumeration gen_status_v;
00032 enum POWER_TYPE{DC=1, AC=2};
00033 enumeration power_type_v;
00034 enum PANEL_TYPE{SINGLE_CRYSTAL_SILICON=1, MULTI_CRYSTAL_SILICON=2, AMORPHOUS_SILICON=3, THIN_FILM_GA_AS=4, CONCENTRATOR=5};
00035 enumeration panel_type_v;
00036 enum INSTALLATION_TYPE {ROOF_MOUNTED=1, GROUND_MOUNTED=2};
00037 enumeration installation_type_v;
00038 enum SOLAR_TILT_MODEL {LIUJORDAN=0, SOLPOS=1, PLAYERVAL=2};
00039 enumeration solar_model_tilt;
00040 enum SOLAR_POWER_MODEL {BASEEFFICIENT=0, FLATPLATE=1};
00041 enumeration solar_power_model;
00042
00043 double NOCT;
00044 double Tcell;
00045 double Tmodule;
00046 double Tambient;
00047 double Insolation;
00048 double Rinternal;
00049 double Rated_Insolation;
00050 complex V_Max;
00051 complex Voc;
00052 complex Voc_Max;
00053 double area;
00054 double Tamb;
00055 double wind_speed;
00056 double Pmax_temp_coeff;
00057 double Voc_temp_coeff;
00058 double w1;
00059 double w2;
00060 double w3;
00061 double constant;
00062 complex P_Out;
00063 complex V_Out;
00064 complex I_Out;
00065 complex VA_Out;
00066
00067
00068 double module_acoeff;
00069 double module_bcoeff;
00070 double module_dTcoeff;
00071 double module_Tcoeff;
00072
00073 double shading_factor;
00074 double tilt_angle;
00075 double orientation_azimuth;
00076 bool fix_angle_lat;
00077 double soiling_factor;
00078 double derating_factor;
00079
00080 enum ORIENTATION {DEFAULT=0, FIXED_AXIS=1, ONE_AXIS=2, TWO_AXIS=3, AZIMUTH_AXIS=4};
00081 enumeration orientation_type;
00082
00083 FUNCTIONADDR calc_solar_radiation;
00084
00085 OBJECT *weather;
00086 double efficiency;
00087 double prevTemp, currTemp;
00088 TIMESTAMP prevTime;
00089
00090 double Max_P;
00091 double Min_P;
00092 double Rated_kVA;
00093
00094
00095 private:
00096 double orientation_azimuth_corrected;
00097
00098
00099 gld_property *pTout;
00100 gld_property *pWindSpeed;
00101
00102
00103 gld_property *inverter_voltage_property;
00104 gld_property *inverter_current_property;
00105
00106
00107 complex default_voltage_array;
00108 complex default_current_array;
00109
00110 public:
00111
00112 solar(MODULE *module);
00113 int create(void);
00114 int init(OBJECT *parent);
00115 void derate_panel(double Tamb, double Insol);
00116 void calculate_IV(double Tamb, double Insol);
00117 int init_climate(void);
00118
00119 TIMESTAMP presync(TIMESTAMP t0, TIMESTAMP t1);
00120 TIMESTAMP sync(TIMESTAMP t0, TIMESTAMP t1);
00121 TIMESTAMP postsync(TIMESTAMP t0, TIMESTAMP t1);
00122
00123 SIMULATIONMODE inter_deltaupdate(unsigned int64 delta_time, unsigned long dt, unsigned int iteration_count_val);
00124
00125 public:
00126 static CLASS *oclass;
00127 static solar *defaults;
00128 #ifdef OPTIONAL
00129 static CLASS *pclass;
00130 TIMESTAMPP plc(TIMESTAMP t0, TIMESTAMP t1);
00131 #endif
00132 };
00133
00134 #endif