WSF
WsfCoverageNumberOfGaps.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 WSFCOVERAGENUMBEROFGAPS_HPP
13#define WSFCOVERAGENUMBEROFGAPS_HPP
14
15#include "wsf_coverage_export.h"
16
17#include <map>
18#include <vector>
19
21#include "WsfCoverageAsset.hpp"
23
24namespace wsf
25{
26namespace coverage
27{
28
30class WSF_COVERAGE_EXPORT NumberOfGaps : public Measure
31{
32public:
33 explicit NumberOfGaps(const WsfScenario& aScenario)
34 : Measure{aScenario}
35 {
37 }
38 NumberOfGaps(const NumberOfGaps& aOther) = default;
39 ~NumberOfGaps() override = default;
40
41 // Measure overrides
42
43 NumberOfGaps* Clone() const override { return new NumberOfGaps{*this}; }
44
45 bool ProcessInput(UtInput& aInput) override;
46
47 double GetDefaultValue() const override;
48
50 double GetMeasuredValue(const GridAsset& aGridAsset) const override;
51
52 void CollectionStarting(Coverage& aCoverage, double aSimTime) override;
53
55 std::string GetValueHeader() const override;
56
57 constexpr static const char* cTYPE{"WSF_NUMBER_OF_GAPS_MOE"};
58
60 enum class SubType
61 {
62 cTOTAL,
63 cIN_SPAN,
64 cMINIMUM_PER_TIME,
65 cMAXIMUM_PER_TIME,
66 cMEAN_PER_TIME,
67 cIN_SPAN_PER_TIME,
68 cUNKNOWN
69 };
70
71 SubType GetSubType() const { return mSubType; }
72
74 double GetSampleSpan() const { return mSampleSpan; }
75
78 double GetMinParameter() const { return mMinParameter; }
79
82 double GetMaxParameter() const { return mMaxParameter; }
83
84private:
85 bool InitializeP(Coverage& aCoverage) override;
86 void CollectionCompletingP(Coverage& aCoverage, double aSimTime) override;
87
88 double ComputeValue(std::vector<AccessInterval>& aGaps) const;
89
90 double ComputeTotal(const std::vector<AccessInterval>& aGaps) const;
91
92 double ComputeInSpan(const std::vector<AccessInterval>& aGaps) const;
93
94 double ComputeMax(const std::vector<AccessInterval>& aGaps) const;
95
96 double ComputeMin(const std::vector<AccessInterval>& aGaps) const;
97
98 double ComputeMean(const std::vector<AccessInterval>& aGaps) const;
99
100 double ComputeSpanPerTime(const std::vector<AccessInterval>& aGaps) const;
101
102 void ComputeSampleCount(const std::vector<AccessInterval>& aGaps, std::vector<int>& aSamples) const;
103
104 void OnAccessIntervalComplete(const GridAsset& aGridAsset, const FreeAsset& aFreeAsset, const AccessInterval& aInterval);
105
106 static SubType GetSubtypeFromIdentifier(const std::string& aIdentifier);
107
109 static int SubtypeHasParameter(SubType aSubType);
110
112 std::map<GridAsset, std::vector<AccessInterval>> mIntervals{};
113
115 std::map<GridAsset, double> mData{};
116
118 UtCalendar mStartEpoch{};
119
121 AccessInterval mCoverageInterval{};
122
124 SubType mSubType{SubType::cUNKNOWN};
125
127 double mSampleSpan{UtCalendar::cSEC_IN_DAY};
128
130 double mMinParameter{-1.0};
131
133 double mMaxParameter{-1.0};
134};
135
136} // namespace coverage
137} // namespace wsf
138
139#endif // WSFCOVERAGENUMBEROFGAPS_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 WsfCoverageNumberOfGaps.hpp:57
double GetMaxParameter() const
Definition WsfCoverageNumberOfGaps.hpp:82
SubType GetSubType() const
Definition WsfCoverageNumberOfGaps.hpp:71
NumberOfGaps(const NumberOfGaps &aOther)=default
double GetMinParameter() const
Definition WsfCoverageNumberOfGaps.hpp:78
double GetSampleSpan() const
If the subtype is a per-time subtype, then this is the duration of the sample in seconds.
Definition WsfCoverageNumberOfGaps.hpp:74
~NumberOfGaps() override=default
NumberOfGaps * Clone() const override
Definition WsfCoverageNumberOfGaps.hpp:43
SubType
The available sub-types for this MOE.
Definition WsfCoverageNumberOfGaps.hpp:61
NumberOfGaps(const WsfScenario &aScenario)
Definition WsfCoverageNumberOfGaps.hpp:33
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