House_e
[Residential loads (residential)]


Detailed Description

The house_e object implements a single family home.

The house_e only includes the heating/cooling system and the power panel. All other end-uses must be explicitly defined and attached to the panel using the house_e::attach() method.

Residential panels use a split secondary transformer:

		-----)||(------------------ 1    <-- 120V
		     )||(      120V         ^
		1puV )||(----------- 3(N)  240V  <-- 0V
		     )||(      120V         v
		-----)||(------------------ 2    <-- 120V
	

120V objects are assigned alternatively to circuits 1-3 and 2-3 in the order in which they call attach. 240V objects are assigned to circuit 1-2

Circuit breakers will open on over-current with respect to the maximum current given by load when house_e::attach() was called. After a breaker opens, it is reclosed within an average of 5 minutes (on an exponential distribution). Each time the breaker is reclosed, the breaker failure probability is increased. The probability of failure is always 1/N where N is initially a large number (e.g., 100). N is progressively decremented until it reaches 1 and the probability of failure is 100%.

The Equivalent Thermal Parameter (ETP) approach is used to model the residential loads and energy consumption. Solving the ETP model simultaneously for T_{air} and T_{mass}, the heating/cooling loads can be obtained as a function of time.

In the current implementation, the HVAC equipment is defined as part of the house_e and attached to the electrical panel with a 50 amp/220-240V circuit.

Implicit enduses
The use of implicit enduses is controlled globally by the implicit_enduse global variable. All houses in the system will employ the same set of global enduses, meaning that the loadshape is controlled by the default schedule.

Credits
The original concept for ETP was developed by Rob Pratt and Todd Taylor around 1990. The first derivation and implementation of the solution was done by Ross Guttromson and David Chassin for PDSS in 2004.

Billing system
Contract terms are defined according to which contract type is being used. For subsidized and fixed price contracts, the terms are defined using the following format:
    period=[YQMWDH];fee=[$/period];energy=[c/kWh];

Time-use contract terms are defined using

    period=[YQMWDH];fee=[$/period];offpeak=[c/kWh];onpeak=[c/kWh];hours=[int24mask];

When TOU includes critical peak pricing, use

    period=[YQMWDH];fee=[$/period];offpeak=[c/kWh];onpeak=[c/kWh];hours=[int24mask]>;critical=[$/kWh];

RTP is defined using

    period=[YQMWDH];fee=[$/period];bid_fee=[$/bid];market=[name];

Demand pricing uses

    period=[YQMWDH];fee=[$/period];energy=[c/kWh];demand_limit=[kW];demand_price=[$/kW];


Enumerations

enum  IMPLICITENDUSEFLAGS {
  IEU_LIGHTS = 0x00000001, IEU_PLUGS = 0x00000002, IEU_OCCUPANCY = 0x00000004, IEU_DISHWASHER = 0x00000100,
  IEU_MICROWAVE = 0x00000200, IEU_FREEZER = 0x00010000, IEU_REFRIGERATOR = 0x00020000, IEU_RANGE = 0x00040000,
  IEU_EVCHARGER = 0x00080000, IEU_WATERHEATER = 0x00100000, IEU_CLOTHESWASHER = 0x01000000, IEU_DRYER = 0x02000000,
  IEU_ALL = 0x03170303
}

Functions

CIRCUIT * house_e::attach (OBJECT *obj, double limit, int is220=false, enduse *pEnduse=NULL)
 Attaches an end-use object to a house_e panel The attach() method automatically assigns an end-use load to the first appropriate available circuit.
 house_e::house_e (MODULE *module)
 House object constructor: Registers the class and publishes the variables that can be set by the user.
int house_e::init (OBJECT *parent)
 Map circuit variables to meter.
int house_e::init_climate (void)
 Checks for climate object and maps the climate variables to the house_e object variables.
TIMESTAMP house_e::postsync (TIMESTAMP t0, TIMESTAMP t1)
 Removes load contributions from parent object.
TIMESTAMP house_e::presync (TIMESTAMP t0, TIMESTAMP t1)
 Updates the aggregated power from all end uses, calculates the HVAC kWh use for the next synch time.
TIMESTAMP house_e::sync (TIMESTAMP t0, TIMESTAMP t1)
 Updates the total internal gain and synchronizes with the system equipment load.
TIMESTAMP house_e::sync_thermostat (TIMESTAMP t0, TIMESTAMP t1)
 The PLC control code for house_e thermostat.
void house_e::update_system (double dt=0)
 HVAC load synchronizaion is based on the equipment capacity, COP, solar loads and total internal gain from end uses.

Variables

static set house_e::implicit_enduses_active = IEU_ALL
 implicit enduses that are to be activated


Enumeration Type Documentation

Enumerator:
IEU_LIGHTS  implicit lights load
IEU_PLUGS  implicit plugs load
IEU_OCCUPANCY  implicit occupancy load
IEU_DISHWASHER  implicit dishwasher load
IEU_MICROWAVE  implicit microwave load
IEU_FREEZER  implicit freezer load
IEU_REFRIGERATOR  implicit refrigerator load
IEU_RANGE  implicit cooking load
IEU_EVCHARGER  implicit evcharger load
IEU_WATERHEATER  implicit waterheater load
IEU_CLOTHESWASHER  implicit clotheswasher load
IEU_DRYER  implicit dryer load
IEU_ALL 
Todo:
add other implicit enduse flags as they are defined
all (needed to filter)

Definition at line 26 of file house_e.h.


Function Documentation

CIRCUIT * house_e::attach ( OBJECT obj,
double  breaker_amps,
int  is220 = false,
enduse *  pLoad = NULL 
) [inherited]

Attaches an end-use object to a house_e panel The attach() method automatically assigns an end-use load to the first appropriate available circuit.

Returns:
pointer to the voltage on the assigned circuit
Parameters:
obj  object to attach
breaker_amps  breaker capacity (in Amps)
is220  0 for 120V, 1 for 240V load
pLoad  reference to load structure

Definition at line 1757 of file house_e.cpp.

References gl_error, and GL_THROW.

house_e::house_e ( MODULE *  mod  )  [inherited]

House object constructor: Registers the class and publishes the variables that can be set by the user.

Sets default randomized values for published variables.

Definition at line 541 of file house_e.cpp.

References gl_global_create, gl_publish_function, gl_publish_variable, gl_register_class, GL_THROW, IEU_CLOTHESWASHER, IEU_DISHWASHER, IEU_DRYER, IEU_EVCHARGER, IEU_FREEZER, IEU_LIGHTS, IEU_MICROWAVE, IEU_OCCUPANCY, IEU_PLUGS, IEU_RANGE, IEU_REFRIGERATOR, IEU_WATERHEATER, PA_REFERENCE, PADDR, PC_BOTTOMUP, PC_POSTTOPDOWN, PC_PRETOPDOWN, PT_double, PT_enduse, PT_enumeration, PT_int16, PT_int64, PT_object, PT_set, and PT_timestamp.

int house_e::init ( OBJECT parent  )  [inherited]

Map circuit variables to meter.

Initalize house_e and HVAC model properties, and internal gain variables.

Todo:
use triplex property mapping instead of assuming memory order for meter variables (residential, low priority) (ticket #139)

Definition at line 1369 of file house_e.cpp.

References gl_object_isa, gl_random_uniform, GL_THROW, gl_warning, OBJECTHDR, and OF_SKIPSAFE.

int house_e::init_climate ( void   )  [inherited]

Checks for climate object and maps the climate variables to the house_e object variables.

Currently Tout, RHout and solar flux data from TMY files are used. If no climate object is linked, then Tout will be set to 74 degF, RHout is set to 75% and solar flux will be set to zero for all orientations.

Definition at line 905 of file house_e.cpp.

References GETADDR, gl_find_next, gl_find_objects, gl_get_property, gl_set_dependent, gl_warning, and OBJECTHDR.

TIMESTAMP house_e::sync ( TIMESTAMP  t0,
TIMESTAMP  t1 
) [inherited]

Updates the total internal gain and synchronizes with the system equipment load.

Also synchronizes the voltages and current in the panel with the meter.

Definition at line 2089 of file house_e.cpp.

References LOCK_OBJECT, OBJECTHDR, and UNLOCK_OBJECT.

TIMESTAMP house_e::sync_thermostat ( TIMESTAMP  t0,
TIMESTAMP  t1 
) [inherited]

The PLC control code for house_e thermostat.

The heat or cool mode is based on the house_e air temperature, thermostat setpoints and deadband. This function will update T<mode>{On,Off} as necessary to maintain the setpoints.

Definition at line 2292 of file house_e.cpp.

References gl_error, gl_name(), gl_warning, and OBJECTHDR.

void house_e::update_system ( double  dt = 0  )  [inherited]

HVAC load synchronizaion is based on the equipment capacity, COP, solar loads and total internal gain from end uses.

The modeling approach is based on the Equivalent Thermal Parameter (ETP) method of calculating the air and mass temperature in the conditioned space. These are solved using a dual decay solver to obtain the time for next state change based on the thermostat set points. This synchronization function updates the HVAC equipment load and power draw.

Todo:
document COP calculation constants

Definition at line 1860 of file house_e.cpp.

References gl_warning.


GridLAB-DTM Version 2.0
An open-source project initiated by the US Department of Energy