|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
23 #include "ns3/assert.h"
24 #include "ns3/double.h"
25 #include "ns3/trace-source-accessor.h"
26 #include "ns3/simulator.h"
40 .SetGroupName (
"Energy")
42 .AddAttribute (
"RvBatteryModelPeriodicEnergyUpdateInterval",
43 "RV battery model sampling interval.",
48 .AddAttribute (
"RvBatteryModelLowBatteryThreshold",
49 "Low battery threshold.",
52 MakeDoubleChecker<double> ())
53 .AddAttribute (
"RvBatteryModelOpenCircuitVoltage",
54 "RV battery model open circuit voltage.",
58 MakeDoubleChecker<double> ())
59 .AddAttribute (
"RvBatteryModelCutoffVoltage",
60 "RV battery model cutoff voltage.",
64 MakeDoubleChecker<double> ())
65 .AddAttribute (
"RvBatteryModelAlphaValue",
66 "RV battery model alpha value.",
70 MakeDoubleChecker<double> ())
71 .AddAttribute (
"RvBatteryModelBetaValue",
72 "RV battery model beta value.",
76 MakeDoubleChecker<double> ())
77 .AddAttribute (
"RvBatteryModelNumOfTerms",
78 "The number of terms of the infinite sum for estimating battery level.",
82 MakeIntegerChecker<int> ())
83 .AddTraceSource (
"RvBatteryModelBatteryLevel",
84 "RV battery model battery level.",
86 "ns3::TracedValueCallback::Double")
87 .AddTraceSource (
"RvBatteryModelBatteryLifetime",
88 "RV battery model battery lifetime.",
90 "ns3::TracedValueCallback::Time")
158 NS_LOG_DEBUG (
"RvBatteryModel:Updating remaining energy!");
165 NS_LOG_DEBUG (
"RvBatteryModel:Calculated alpha = " << calculatedAlpha <<
179 NS_LOG_DEBUG (
"RvBatteryModel:Battery level below threshold!");
301 NS_LOG_DEBUG (
"RvBatteryModel:Starting battery level update!");
345 double calculatedAlpha = 0.0;
363 return calculatedAlpha;
372 double firstDelta = (t - sk).GetMinutes ();
373 double secondDelta = (t - sk_1).GetMinutes ();
374 double delta = (sk - sk_1).GetMinutes ();
379 double square = beta * beta * m * m;
380 sum += (std::exp (-square * (firstDelta)) - std::exp (-square * (secondDelta))) / square;
382 return delta + 2 * sum;
void SetCutoffVoltage(double voltage)
Sets cutoff voltage of battery.
a unique identifier for an interface.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
double Discharge(double load, Time t)
Discharges the battery.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range.
Ptr< const AttributeAccessor > MakeIntegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
virtual double GetSupplyVoltage(void) const
static Time Now(void)
Return the current simulation virtual time.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Rakhmatov Vrudhula non-linear battery model.
virtual void DoInitialize(void)
Defined in ns3::Object.
virtual double GetRemainingEnergy(void)
double GetBatteryLevel(void)
Hold a signed integer type.
static TypeId GetTypeId(void)
void SetSamplingInterval(Time interval)
void SetBeta(double beta)
Sets the beta value for the battery model.
static EventId Schedule(Time const &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
virtual double GetEnergyFraction(void)
TypeId SetParent(TypeId tid)
Set the parent TypeId.
This class can be used to hold variables of floating point type such as 'double' or 'float'.
void SetOpenCircuitVoltage(double voltage)
Sets open circuit voltage of battery.
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
void SetNumOfTerms(int num)
Sets the number of terms of the infinite sum for estimating battery level.
EventId m_currentSampleEvent
void NotifyEnergyDrained(void)
This function notifies all DeviceEnergyModel of energy depletion event.
Time GetLifetime(void) const
TracedValue< Time > m_lifetime
void HandleEnergyDrainedEvent(void)
Handles the remaining energy going to zero event.
virtual ~RvBatteryModel()
double CalculateTotalCurrent(void)
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method.
Introspection did not find any typical Config paths.
double m_openCircuitVoltage
std::vector< double > m_load
Simulation virtual time values and global simulation resolution.
virtual void DoDispose(void)
Defined in ns3::Object.
virtual double GetInitialEnergy(void) const
Ptr< const AttributeAccessor > MakeDoubleAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
double GetOpenCircuitVoltage(void) const
double RvModelAFunction(Time t, Time sk, Time sk_1, double beta)
RV model A function.
Time GetSamplingInterval(void) const
void BreakDeviceEnergyModelRefCycle(void)
This function is called to break reference cycle between EnergySource and DeviceEnergyModel.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Time Seconds(double value)
Construct a Time in the indicated unit.
AttributeValue implementation for Time.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
static bool IsFinished(void)
Check if the simulation should finish.
double GetCutoffVoltage(void) const
double GetBeta(void) const
void SetAlpha(double alpha)
Sets the alpha value for the battery model.
TracedValue< double > m_batteryLevel
Battery level is defined as: output of Discharge function / alpha value.
virtual void UpdateEnergySource(void)
Implements UpdateEnergySource.
double GetAlpha(void) const
Time m_samplingInterval
(1 / sampling interval) = sampling frequency
int GetNumOfTerms(void) const
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
std::vector< Time > m_timeStamps