00001
00010 #ifndef _HOUSE_H
00011 #define _HOUSE_H
00012
00013 #include "residential.h"
00014 #include "residential_enduse.h"
00015
00016 typedef enum {duration=0,energy=1} TYPEOFEVENT;
00017 typedef enum {analog=0, PWM=1, queued=2} TYPEOFPULSE;
00018
00019 #define ENDUSELOAD enduse
00020
00021 class house : public residential_enduse {
00022 public:
00025 inline complex V(CIRCUIT *c)
00026 { return c->status==BRK_CLOSED ? *(c->pV) : complex(0,0);};
00027 complex *pCircuit_V;
00028 complex *pLine_I;
00029 complex *pLine12;
00030
00031 public:
00032 typedef enum { HEAT,
00033 AUX,
00034 COOL,
00035 OFF
00036 }HCMODE;
00037 typedef enum {
00038 ELECTRIC,
00039 GASHEAT
00040 } HEATMODE;
00041
00042 public:
00043
00044 double floor_area;
00045 double envelope_UA;
00046 double glazing_shgc;
00047 double window_wall_ratio;
00048 double gross_wall_area;
00049 double ceiling_height;
00050 double aspect_ratio;
00051 double thermostat_deadband;
00052 double airchange_per_hour;
00053 double heating_setpoint;
00054 double cooling_setpoint;
00055 double solar_aperture[N_SOLAR_SURFACES];
00056 double design_heating_capacity;
00057 double design_cooling_capacity;
00058 double heating_COP;
00059 double cooling_COP;
00060 double over_sizing_factor;
00061 double outside_temp;
00062
00063 double volume;
00064 double air_mass;
00065 double air_thermal_mass;
00066 double solar_load;
00067 double house_content_heat_transfer_coeff;
00068 double COP_coeff;
00069 double air_density;
00070 double air_heat_capacity;
00071 double house_content_thermal_mass;
00072
00073 double *pTout;
00074 double *pRhout;
00075 double *pSolar;
00076
00077 double Tair;
00078 double Tout;
00079 double Tsolar;
00080 double Tmaterials;
00081
00082 HCMODE heat_cool_mode;
00083 HEATMODE heat_mode;
00084 double hvac_rated_power;
00085 double hvac_rated_capacity;
00086 double rated_heating_capacity;
00087 double rated_cooling_capacity;
00088
00089 PANEL panel;
00090
00091
00092
00093 enduse tload;
00094
00095 CIRCUIT *hvac_circuit;
00096 private:
00097 double A11;
00098 double A12;
00099 double A21;
00100 double A22;
00101
00102 double B11;
00103 double B12;
00104 double B21;
00105 double B22;
00106
00107 double s1;
00108 double s2;
00109
00110 double M_inv11;
00111 double M_inv12;
00112 double M_inv21;
00113 double M_inv22;
00114
00115 double BB11;
00116 double BB21;
00117 double BB12;
00118 double BB22;
00119
00120 public:
00121 static CLASS *oclass, *pclass;
00122 house( MODULE *module);
00123 ~house();
00124
00125 int create();
00126 TIMESTAMP presync(TIMESTAMP t0, TIMESTAMP t1);
00127 TIMESTAMP sync(TIMESTAMP t0, TIMESTAMP t1);
00128 TIMESTAMP sync_hvac_load(TIMESTAMP t1, double nHours);
00129 TIMESTAMP sync_thermal(TIMESTAMP t1, double nHours);
00130 TIMESTAMP sync_billing(TIMESTAMP t0, TIMESTAMP t1);
00131 TIMESTAMP sync_thermostat(TIMESTAMP t0, TIMESTAMP t1);
00132 TIMESTAMP sync_panel(TIMESTAMP t0, TIMESTAMP t1);
00133
00134 int init(OBJECT *parent);
00135 int init_climate(void);
00136
00137 CIRCUIT *attach(ENDUSELOAD *target, double limit, int is220=false);
00138
00139
00140 public:
00141 double get_floor_area () { return floor_area; };
00142 double get_Tout () { return *pTout; };
00143 double get_Tair () { return Tair; };
00144 double get_Tsolar(int hour, int month, double Tair, double Tout);
00145 int set_Eigen_values();
00146 complex *get_complex(OBJECT *obj, char *name);
00147 };
00148
00149 #endif
00150