WSF
WsfEarthGravityModel.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 2018 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 WSFEARTHGRAVITYMODEL_HPP
13#define WSFEARTHGRAVITYMODEL_HPP
14
15#include "wsf_export.h"
16
17#include <memory>
18#include <vector>
19
20class UtInput;
21
22#include "GeoidUndulation.hpp"
25
26namespace wsf
27{
28
31{
32public:
39
42 ~EarthGravityModelExtension() override = default;
43
44 static EarthGravityModelExtension& Get(const WsfScenario& aScenario);
45
46 bool Complete() override;
47 void SimulationCreated(WsfSimulation& aSimulation) override;
48 bool ProcessInput(UtInput& aInput) override;
49
50 float GetGeoidUndulation(double aLat, double aLon) const;
51
52 EGMComplianceType GetEGM_ComplianceType() const { return mEGM_Type; }
53 bool IsEGM2008Compliant() const { return (mEGM_Type == cEGM2008); }
54 bool IsEGM96Compliant() const { return (mEGM_Type == cEGM96); }
55 bool IsEGM_Unknown() const { return (mEGM_Type == cEGM_UNKNOWN); }
56
57
58private:
59 bool ProcessInputData(UtInput& aInput);
60
61 std::shared_ptr<GeoidUndulation> mGeoidUndulationPtr = nullptr;
62 std::string mEGM_DataFile;
63 std::vector<std::pair<double, double>> mTestLatLons;
64 EGMComplianceType mEGM_Type = cEGM_UNKNOWN;
65};
66
69{
70public:
72
73 static EarthGravityModel* Find(const WsfSimulation& aSimulation);
74
75 float GetGeoidUndulation(double aLat, double aLon) const;
76
78 bool IsEGM2008Compliant() const;
79 bool IsEGM96Compliant() const;
80 bool IsEGM_Unknown() const;
81
82private:
83 EarthGravityModelExtension* mEGM_ExtensionPtr;
84};
85
86} // namespace wsf
87
88#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
WsfScenarioExtension()
Definition WsfScenarioExtension.cpp:21
friend class WsfScenario
Definition WsfScenarioExtension.hpp:39
WsfSimulationExtension()
Definition WsfSimulationExtension.cpp:23
friend class WsfSimulation
Definition WsfSimulationExtension.hpp:43
The main controller for a simulation.
Definition WsfSimulation.hpp:109
The Earth Gravitational Model (EGM) scenario extension.
Definition WsfEarthGravityModel.hpp:31
void SimulationCreated(WsfSimulation &aSimulation) override
Definition WsfEarthGravityModel.cpp:150
static EarthGravityModelExtension & Get(const WsfScenario &aScenario)
Definition WsfEarthGravityModel.cpp:106
float GetGeoidUndulation(double aLat, double aLon) const
Definition WsfEarthGravityModel.cpp:156
EGMComplianceType GetEGM_ComplianceType() const
Definition WsfEarthGravityModel.hpp:52
bool IsEGM2008Compliant() const
Definition WsfEarthGravityModel.hpp:53
bool Complete() override
Definition WsfEarthGravityModel.cpp:113
bool IsEGM96Compliant() const
Definition WsfEarthGravityModel.hpp:54
bool IsEGM_Unknown() const
Definition WsfEarthGravityModel.hpp:55
~EarthGravityModelExtension() override=default
EarthGravityModelExtension(const EarthGravityModelExtension &aSrc)=default
bool ProcessInput(UtInput &aInput) override
Definition WsfEarthGravityModel.cpp:33
EGMComplianceType
Definition WsfEarthGravityModel.hpp:34
@ cEGM2008
Definition WsfEarthGravityModel.hpp:36
@ cEGM_UNKNOWN
Definition WsfEarthGravityModel.hpp:35
@ cEGM96
Definition WsfEarthGravityModel.hpp:37
bool IsEGM96Compliant() const
Definition WsfEarthGravityModel.cpp:192
EarthGravityModelExtension::EGMComplianceType GetEGM_ComplianceType() const
Definition WsfEarthGravityModel.cpp:180
EarthGravityModel(EarthGravityModelExtension *aExtensionPtr)
Definition WsfEarthGravityModel.cpp:162
static EarthGravityModel * Find(const WsfSimulation &aSimulation)
Definition WsfEarthGravityModel.cpp:168
bool IsEGM2008Compliant() const
Definition WsfEarthGravityModel.cpp:186
float GetGeoidUndulation(double aLat, double aLon) const
Definition WsfEarthGravityModel.cpp:174
bool IsEGM_Unknown() const
Definition WsfEarthGravityModel.cpp:198
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved