00001 #include "GridWise2.h"
00002 #include <iostream>
00003 using namespace std;
00004 using namespace adevs;
00005
00006 void GridFriendly2Sensor::makeSensors(GridFriendly2Load* actuator,
00007 GridFriendly2Sensor** up, GridFriendly2Sensor** down)
00008 {
00009 int* pos = new int(0);
00010 *up = new GridFriendly2Sensor(actuator,GridFriendly2Sensor::UP,pos);
00011 *down = new GridFriendly2Sensor(actuator,GridFriendly2Sensor::DOWN,pos);
00012 }
00013
00014 GridFriendly2Sensor::GridFriendly2Sensor(GridFriendly2Load* actuator,
00015 GridFriendly2Sensor::Direction dir, int* freq_pos):
00016 Sensor(Sensor::STATE_TR,actuator),
00017 actuator(actuator),
00018 dir(dir),
00019 pos(freq_pos)
00020 {
00021 }
00022
00023 GridFriendly2Sensor::~GridFriendly2Sensor()
00024 {
00025 if (dir == UP) delete pos;
00026 }
00027
00028 void GridFriendly2Sensor::trip(ElectricalSensorInterface* evars)
00029 {
00030 if (dir == UP) (*pos)++;
00031 else (*pos)--;
00032 }
00033
00034 double GridFriendly2Sensor::distFromTrip(ElectricalSensorInterface* evars)
00035 {
00036
00037 double cur_freq = evars->getBusFreq(actuator->BusID);
00038
00039 if (dir == UP)
00040 {
00041 return double(*pos+1)*actuator->trip_interval-cur_freq;
00042 }
00043 else
00044 {
00045 return double(*pos-1)*actuator->trip_interval-cur_freq;
00046 }
00047 }