WSF
TaskOutput.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI//REL TO USA ONLY
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing 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// Updated by Infoscitex, a DCS Company.
13// ****************************************************************************
14
15#ifndef TASKOUTPUT_HPP
16#define TASKOUTPUT_HPP
17
18#include <iomanip>
19#include <iosfwd>
20#include <map>
21#include <sstream>
22#include <string>
23#include <vector>
24
25#include "Events.hpp"
26
27class WsfScenario;
28#include "InputConfig.hpp"
29#include "SummaryData.hpp"
30#include "UtLength.hpp"
31#include "UtSpeed.hpp"
32
33namespace engage
34{
35
36class RunConfig;
37class Simulation;
38class Task;
39
42{
43public:
44 static const int cENTIRE_TABLE = -1;
45 // Might want to make these user defined in the future for more
46 // user control of Pk Table output formatting
47 static const int cPADDING_WIDTH = 15; // This should be enough padding for values
48 // Set precision could be used otherwise
49 static const char cDELIMITER = ' ';
50
51 typedef std::map<std::string, std::ostream*> OpenFileMap;
52
53 TaskOutput(int aThreadId, const Task& aTask, Simulation& aSimulation);
54
55 void OpenFiles();
56 void CloseFiles();
57 void Write(double aSimTime);
58 void WriteEvent(double aSimTime);
59 void WriteTaskSummary();
60
61 Events& GetEvents() { return mEvents; }
62 SummaryData& GetTaskSummary() { return mTaskSummary; }
63
64 static void WriteSummary();
65 static void CloseAllFiles();
66
67 static void ResetSummary(const InputConfig& aInputConfig);
68 static SummaryData& GetSummaryData(int aRunIndex, int aSiteIndex);
69 static void ReleaseRunSummary();
70
72 static void InitializePkOutput(const InputConfig::RunList* aRunList, int aNumPkRuns);
73 static void InsertPk(double aPk, const RunConfig& aRunConfig, int aTaskNum, int aTargetTaskNum);
74
75 static void FlushPk(const RunConfig& aRunConfig, int aRunIndex = cENTIRE_TABLE, int aAltitudeIndex = cENTIRE_TABLE);
76
77private:
78 static void AppendIntermediateFile(const std::string& aPrimaryFileName, int aTaskIndex);
79 static void CloseAllFiles(OpenFileMap& aOpenFileMap);
80
81 static std::string CreatePkStream(const std::string& aLengthUnit, int aRunIndex, int aAltitudeIndex);
82
83 static std::string
84 CreatePkHeader(const std::string& aLengthUnit, const std::string& aSpeedUnit, int aRunIndex, int aAltitudeIndex);
85
86 static std::ostream* FindOpenFile(OpenFileMap& aOpenFileMap,
87 const std::string& aPrimaryFileName,
88 const std::string& aActualFileName);
89
90 static void GetPkIndex(int& aAltIndex,
91 int& aCrIndex,
92 int& aDrIndex,
93 const double& aAltitude,
94 const double& aCr,
95 const double& aDr,
96 int aRun);
97
99 template<typename T>
100 static std::string FormatElement(T t)
101 {
102 std::stringstream ss;
103 ss << std::left << std::setw(cPADDING_WIDTH) << std::setfill(cDELIMITER) << t;
104 return ss.str();
105 }
106
107 static std::string MakeIntermediateFileName(const std::string& aPrimaryFileName, int aTaskIndex);
108 static void ProcessQueuedOutput();
109
111 int mThreadId;
112
113 Simulation& mSimulation;
114
115 const Task& mTask;
116
118 OpenFileMap mOpenFileMap;
119
122 std::vector<std::ostream*> mFilePtrs;
123
125 // std::vector<std::ostream*> mEventFilePtrs;
126
128 std::vector<std::ostream*> mSummaryFilePtrs;
129
131 SummaryData mTaskSummary;
132
134 std::vector<double> mLastOutputTime;
135
137 std::vector<double> mLastEventOutputTime;
138
140 Events mEvents;
141};
142
143} // namespace engage
144
145#endif
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
This represents all of the events the user can select for writing.
Definition Events.hpp:37
Definition InputConfig.hpp:33
std::list< RunConfig > RunList
Definition InputConfig.hpp:54
Definition RunConfig.hpp:33
Definition Simulation.hpp:34
This class holds summary data from the runs.
Definition SummaryData.hpp:31
Events & GetEvents()
Definition TaskOutput.hpp:61
void CloseFiles()
Definition TaskOutput.cpp:198
static void FlushPk(const RunConfig &aRunConfig, int aRunIndex=cENTIRE_TABLE, int aAltitudeIndex=cENTIRE_TABLE)
Definition TaskOutput.cpp:816
void WriteEvent(double aSimTime)
Write the events to the files that have requested event output.
Definition TaskOutput.cpp:250
std::map< std::string, std::ostream * > OpenFileMap
Definition TaskOutput.hpp:51
static void InitializePkOutput(const InputConfig::RunList *aRunList, int aNumPkRuns)
Pk Table Methods.
Definition TaskOutput.cpp:566
void Write(double aSimTime)
Write the variables to the files that have requested variable output.
Definition TaskOutput.cpp:225
static SummaryData & GetSummaryData(int aRunIndex, int aSiteIndex)
Definition TaskOutput.cpp:327
void OpenFiles()
Definition TaskOutput.cpp:150
static void ResetSummary(const InputConfig &aInputConfig)
Definition TaskOutput.cpp:310
static const char cDELIMITER
Definition TaskOutput.hpp:49
static const int cENTIRE_TABLE
Definition TaskOutput.hpp:44
static void WriteSummary()
Definition TaskOutput.cpp:342
static void CloseAllFiles()
Definition TaskOutput.cpp:399
void WriteTaskSummary()
Write the summary to the files that have requested summary output.
Definition TaskOutput.cpp:287
static const int cPADDING_WIDTH
Definition TaskOutput.hpp:47
static void InsertPk(double aPk, const RunConfig &aRunConfig, int aTaskNum, int aTargetTaskNum)
Definition TaskOutput.cpp:727
SummaryData & GetTaskSummary()
Definition TaskOutput.hpp:62
static void ReleaseRunSummary()
Definition TaskOutput.cpp:335
TaskOutput(int aThreadId, const Task &aTask, Simulation &aSimulation)
Definition TaskOutput.cpp:135
Definition Task.hpp:47
Definition ApplicationExtension.cpp:26
Copyrights Multiple, All Rights Reserved