00001
00002
00003
00004
00005 #include <stdlib.h>
00006 #include <stdio.h>
00007 #include <errno.h>
00008 #include <math.h>
00009
00010 #include "washer.h"
00011
00012 washer::washer()
00013 {
00014 memset(this, 0, sizeof(washer));
00015 }
00016
00017 washer::~washer()
00018 {
00019 }
00020
00021 void washer::create()
00022 {
00023
00024 installed_power = gl_random_uniform(500,750);
00025
00026
00027 demand = 0.0;
00028 heat_loss = 0.0;
00029 power_demand = 0.0;
00030 kwh_meter = 0.0;
00031 }
00032
00033 int washer::isa(char *classname)
00034 {
00035 return (strcmp(classname,"washer")==0 || residential_enduse::isa(classname));
00036 }
00037
00038
00039 TIMESTAMP washer::sync(TIMESTAMP t0, TIMESTAMP t1)
00040 {
00041
00042
00043
00044
00045
00046 if (t0 <= 0)
00047 return TS_NEVER;
00048
00049 power_demand.SetPolar(installed_power * demand / 1000.0, acos(1.0), J);
00050 double energy = power_demand.Mag() * (t1-t0);
00051 heat_loss = energy;
00052 kwh_meter += energy;
00053
00054 return TS_NEVER;
00055 }
00056
00057
00059
00061 CDECL CLASS *washer_class = NULL;
00062 CDECL OBJECT *last_washer = NULL;
00063
00064 EXPORT int create_washer(OBJECT **obj, OBJECT *parent)
00065 {
00066 *obj = gl_create_object(washer_class,sizeof(washer));
00067 if (*obj!=NULL)
00068 {
00069 last_washer = *obj;
00070 washer *my = OBJECTDATA(*obj,washer);
00071 gl_set_parent(*obj,parent);
00072 my->create();
00073 return 1;
00074 }
00075 return 0;
00076 }
00077
00078 EXPORT int isa_washer(OBJECT *obj, char *classname)
00079 {
00080 if(obj != 0 && classname != 0){
00081 return OBJECTDATA(obj,washer)->isa(classname);
00082 } else {
00083 return 0;
00084 }
00085 }
00086
00087 EXPORT TIMESTAMP sync_washer(OBJECT *obj, TIMESTAMP t0)
00088 {
00089 washer *my = OBJECTDATA(obj, washer);
00090 TIMESTAMP t1 = my->sync(obj->clock, t0);
00091 obj->clock = t0;
00092 return t1;
00093 }