diff -uprN original/ns-3-allinone/ns-3-dev/src/energy/model/simple-device-energy-model.cc modified/ns-3-allinone/ns-3-dev/src/energy/model/simple-device-energy-model.cc --- original/ns-3-allinone/ns-3-dev/src/energy/model/simple-device-energy-model.cc 2017-03-21 19:25:39.215674363 +0530 +++ modified/ns-3-allinone/ns-3-dev/src/energy/model/simple-device-energy-model.cc 2017-03-22 00:13:58.604155000 +0530 @@ -85,6 +85,18 @@ double SimpleDeviceEnergyModel::GetTotalEnergyConsumption (void) const { NS_LOG_FUNCTION (this); + double current = GetCurrentA(); + Time duration = Simulator::Now () - m_lastUpdateTime; + + double energyToDecrease = 0.0; + double supplyVoltage = m_source->GetSupplyVoltage (); + energyToDecrease = duration.GetSeconds () * current * supplyVoltage; + + // update total energy consumption + m_totalEnergyConsumption += energyToDecrease; + // update last update time stamp + m_lastUpdateTime = Simulator::Now (); + return m_totalEnergyConsumption; } diff -uprN original/ns-3-allinone/ns-3-dev/src/energy/model/simple-device-energy-model.h modified/ns-3-allinone/ns-3-dev/src/energy/model/simple-device-energy-model.h --- original/ns-3-allinone/ns-3-dev/src/energy/model/simple-device-energy-model.h 2017-03-21 19:25:39.215674363 +0530 +++ modified/ns-3-allinone/ns-3-dev/src/energy/model/simple-device-energy-model.h 2017-03-22 00:12:52.925381000 +0530 @@ -119,11 +119,11 @@ private: */ virtual double DoGetCurrentA (void) const; - Time m_lastUpdateTime; + mutable Time m_lastUpdateTime; double m_actualCurrentA; Ptr m_source; Ptr m_node; - TracedValue m_totalEnergyConsumption; + mutable TracedValue m_totalEnergyConsumption; }; } // namespace ns3