WSF
WsfCoverageNumberOfAccesses.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2020 Infoscitex, a DCS Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFCOVERAGENUMBEROFACCESSES_HPP
13#define WSFCOVERAGENUMBEROFACCESSES_HPP
14
15#include "wsf_coverage_export.h"
16
17#include <map>
18#include <vector>
19
20#include "UtCalendar.hpp"
22#include "WsfCoverageAsset.hpp"
24
25namespace wsf
26{
27namespace coverage
28{
29
31class WSF_COVERAGE_EXPORT NumberOfAccesses : public Measure
32{
33public:
34 explicit NumberOfAccesses(const WsfScenario& aScenario)
35 : Measure{aScenario}
36 {
38 }
39 NumberOfAccesses(const NumberOfAccesses& aOther) = default;
40 ~NumberOfAccesses() override = default;
41
42 // Measure overrides
43 NumberOfAccesses* Clone() const override { return new NumberOfAccesses{*this}; }
44 bool ProcessInput(UtInput& aInput) override;
45 double GetDefaultValue() const override;
46 double GetMeasuredValue(const GridAsset& aGridAsset) const override;
47 void CollectionStarting(Coverage& aCoverage, double aSimTime) override;
48 std::string GetValueHeader() const override;
49
50 constexpr static const char* cTYPE{"WSF_NUMBER_OF_ACCESSES_MOE"};
51
53 enum class SubType
54 {
55 cIN_SPAN,
56 cIN_SPAN_PER_TIME,
57 cMAX_PER_TIME,
58 cMEAN_PER_TIME,
59 cMIN_PER_TIME,
60 cTOTAL,
61 cUNKNOWN
62 };
63
65 SubType GetSubType() const { return mSubType; }
66
68 double GetSampleSpan() const { return mSampleSpan; }
69
71 double GetMinParameter() const { return mMinParameter; }
72
74 double GetMaxParameter() const { return mMaxParameter; }
75
76private:
77 bool InitializeP(Coverage& aCoverage) override;
78 void CollectionCompletingP(Coverage& aCoverage, double aSimTime) override;
79
80 double ComputeValue(std::vector<AccessInterval>& aIntervals) const;
81
82 void ComputePerSampleCount(const std::vector<AccessInterval>& aGaps, std::vector<int>& aSamples) const;
83
84 double ComputeInSpan(std::vector<AccessInterval>& aIntervals) const;
85 double ComputePerSampleInSpan(std::vector<AccessInterval>& aIntervals) const;
86 double ComputePerSampleMax(std::vector<AccessInterval>& aIntervals) const;
87 double ComputePerSampleMean(std::vector<AccessInterval>& aIntervals) const;
88 double ComputePerSampleMin(std::vector<AccessInterval>& aIntervals) const;
89 double ComputeTotal(std::vector<AccessInterval>& aIntervals) const;
90
91 void OnAccessIntervalComplete(const GridAsset& aGridAsset, const FreeAsset& aFreeAsset, const AccessInterval& aInterval);
92
93 static SubType GetSubtypeFromIdentifier(const std::string& aIdentifier);
94 static int SubtypeHasParameter(SubType aSubType);
95
97 std::map<GridAsset, std::vector<AccessInterval>> mIntervals{};
98
100 std::map<GridAsset, double> mData{};
101
103 AccessInterval mCoverageInterval{};
104
106 UtCalendar mStartEpoch{};
107
109 SubType mSubType{SubType::cUNKNOWN};
110
112 double mSampleSpan{UtCalendar::cSEC_IN_DAY};
113
115 double mMinParameter{-1.0};
116
118 double mMaxParameter{-1.0};
119};
120
121} // namespace coverage
122} // namespace wsf
123
124#endif // WSFCOVERAGENUMBER_OF_ACCESSES_HPP
void SetType(WsfStringId aType)
Definition WsfObject.cpp:172
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfCoverageAccessInterval.hpp:28
Definition WsfCoverage.hpp:57
Definition WsfCoverageAsset.hpp:81
Definition WsfCoverageAsset.hpp:37
Measure(const WsfScenario &aScenario)
Definition WsfCoverageMeasure.hpp:45
static constexpr const char * cTYPE
Definition WsfCoverageNumberOfAccesses.hpp:50
double GetSampleSpan() const
Get the duration of each sample for per-time subtypes.
Definition WsfCoverageNumberOfAccesses.hpp:68
double GetMinParameter() const
Get the minimum (first) parameter passed to in_span or per_day_in_span, or -1.0 if a different subtyp...
Definition WsfCoverageNumberOfAccesses.hpp:71
SubType
The available sub-types for this MOE.
Definition WsfCoverageNumberOfAccesses.hpp:54
NumberOfAccesses(const WsfScenario &aScenario)
Definition WsfCoverageNumberOfAccesses.hpp:34
double GetMaxParameter() const
Get the maximum (second) parameter passed to in_span or per_day_in_span, or -1.0 if a different subty...
Definition WsfCoverageNumberOfAccesses.hpp:74
NumberOfAccesses(const NumberOfAccesses &aOther)=default
SubType GetSubType() const
Get the subtype of the MoE.
Definition WsfCoverageNumberOfAccesses.hpp:65
~NumberOfAccesses() override=default
NumberOfAccesses * Clone() const override
Definition WsfCoverageNumberOfAccesses.hpp:43
Definition WsfCoverage.cpp:35
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved