00001
00009 #ifndef _range_H
00010 #define _range_H
00011
00012 #include "residential.h"
00013 #include "residential_enduse.h"
00014
00015 class range : public residential_enduse {
00016 private:
00017 double standby_load;
00018 public:
00019
00020 typedef enum e_state {
00021
00022 CT_STOPPED=1,
00023 CT_STAGE_1_ONLY=2,
00024 CT_STAGE_2_ONLY=3,
00025 CT_STAGE_3_ONLY=4,
00026 CT_STALLED=5,
00027 CT_TRIPPED=6,
00028 } STATE;
00029
00030
00031
00032 typedef enum {
00033 ONENODE,
00034 NONE,
00035 } WHMODEL;
00036 typedef enum {
00037 DEPLETING,
00038 RECOVERING,
00039 STABLE,
00040 } WHQFLOW;
00041 typedef enum {
00042 INSIDE,
00043 GARAGE,
00044 } WHLOCATION;
00045 typedef enum {
00046 FULL,
00047 PARTIAL,
00048 EMPTY,
00049 } WHQSTATE;
00050 typedef enum {
00051 ELECTRIC,
00052 GASHEAT
00053 } HEATMODE;
00054
00055
00056 double time_to_transition;
00057
00058
00059 double Tset_curtail;
00060 double Tinlet;
00061 enumeration location;
00062 enumeration heat_mode;
00063
00064
00065 double area;
00066 double height;
00067 double Ton;
00068 double Toff;
00069 double Cw;
00070
00071 double dt1;
00072 double dt2;
00073
00074 double enduse_demand_cooktop;
00075
00076 double heat_fraction;
00077
00078 double cooktop_energy_used;
00079 double cycle_duration_cooktop;
00080 double cycle_time_cooktop;
00081 double cooktop_interval[3];
00082 double total_time;
00083 double cooktop_coil_power[3];
00084 double enduse_queue_cooktop;
00085
00086 double queue_min;
00087 double queue_max;
00088 double cooktop_run_prob;
00089
00090 double time_cooktop_operation;
00091 double time_cooktop_setting;
00092 bool cooktop_check;
00093
00094
00095 double total_power_oven;
00096 double total_power_cooktop;
00097 double total_power_range;
00098
00099 double state_time;
00100
00101 double stall_voltage;
00102 double start_voltage;
00103 complex stall_impedance;
00104 double trip_delay;
00105 double reset_delay;
00106 double cooktop_energy_baseline;
00107 double cooktop_energy_needed;
00108
00109 bool cooktop_coil_1_check;
00110 bool cooktop_coil_2_check;
00111 bool oven_check;
00112 bool remainon;
00113
00114 enumeration state_cooktop;
00115
00116 double TSTAT_PRECISION;
00117
00118
00119 double h;
00120 double Tlower;
00121 double Tlower_old;
00122 double Tupper;
00123 double Tupper_old;
00124 double Tw;
00125 double Tw_old;
00126
00127
00128 bool heat_needed;
00129 double is_range_on;
00130 public:
00131 double oven_volume;
00132 double oven_UA;
00133 double oven_diameter;
00134 double oven_demand;
00135 double oven_demand_old;
00136 double heating_element_capacity;
00137 double oven_setpoint;
00138 double thermostat_deadband;
00139 double *pTair;
00140 double *pTout;
00141 double specificheat_food;
00142 double food_density;
00143 double enduse_queue_oven;
00144 double oven_run_prob;
00145 double enduse_demand_oven;
00146
00147 double time_oven_setting;
00148 double time_oven_operation;
00149
00150 double actual_load;
00151 double prev_load;
00152 complex range_actual_power;
00153
00154
00155 public:
00156 static CLASS *oclass, *pclass;
00157 static range *defaults;
00158
00159 range(MODULE *mod);
00160 ~range(void);
00161 int create();
00162 int init(OBJECT *parent);
00163 int isa(char *classname);
00164 void thermostat(TIMESTAMP t0, TIMESTAMP t1);
00165 TIMESTAMP presync(TIMESTAMP t0, TIMESTAMP t1);
00166 TIMESTAMP sync(TIMESTAMP t0, TIMESTAMP t1);
00167 TIMESTAMP postsync(TIMESTAMP t0, TIMESTAMP t1);
00168 int commit();
00169
00170
00171 public:
00172 enumeration current_model;
00173 enumeration load_state;
00174
00175 enumeration range_state(void);
00176 void set_time_to_transition(void);
00177 enumeration set_current_model_and_load_state(void);
00178 void update_T_and_or_h(double);
00179 double update_state(double,TIMESTAMP);
00180
00181 double dhdt(double h);
00182 double actual_kW(void);
00183 double new_time_1node(double T0, double T1);
00184 double new_temp_1node(double T0, double delta_t);
00185
00186 double get_Tambient(enumeration water_heater_location);
00187 typedef enum {MODEL_NOT_1ZONE=0, MODEL_NOT_2ZONE=1} WRONGMODEL;
00188 void wrong_model(enumeration msg);
00189 };
00190
00191 #endif
00192