13 #include <tbb/spin_rw_mutex.h>
34 myWindLevels = orig.myWindLevels;
35 myPriority = orig.myPriority;
67 virtual void setVisibility(
const double& atAlt,
const double&) {
throw DtUnimplementedMethod(
"setVisibility(const double& atAlt, const double& vis) is not implemented by this class."); };
71 virtual void setWindSpeed(
const double& atAlt,
const double&) {
throw DtUnimplementedMethod(
"setWindSpeed(const double& atAlt, const double& vis) is not implemented by this class."); };
75 virtual void setWindDirection(
const double& atAlt,
const double&) {
throw DtUnimplementedMethod(
"setWindDirection(const double& atAlt, const double& vis) is not implemented by this class."); };
80 virtual void addWindLevel(
double altitude,
double windSpeed,
double windDirection,
81 double visibleDistance,
int obscurant,
int cloudType,
double cloudDensity,
double skyCoverage) {
101 bool myIsRemoteComponent =
false;
119 void setPriority(
const int&)
override;
120 const int priority()
const override;
122 const double windSpeed(
double atAlt = 0.)
const override;
123 void setWindSpeed(
const double&)
override;
124 void setWindSpeed(
const double& atAlt,
const double&)
override;
126 const double windDirection(
double atAlt = 0.)
const override;
127 void setWindDirection(
const double&)
override;
128 void setWindDirection(
const double& atAlt,
const double&)
override;
130 const int obscurant(
double atAltitude)
const override;
131 void setObscurant(
double baseAlt,
const int&)
override;
132 const double visibility(
double atAltitude)
const override;
133 void setVisibility(
const double&)
override;
134 void setVisibility(
const double&,
const double&)
override;
136 std::shared_ptr<tbb::spin_rw_mutex::scoped_lock> readLock();
137 std::shared_ptr<tbb::spin_rw_mutex::scoped_lock> writeLock();
144 void addWindLevel(
double altitude,
double windSpeed,
double windDirection,
double visibleDistance,
int obscurant,
int cloudType,
double cloudDensity,
double skyCoverage)
override;
145 void clearWindLevels()
override;
148 void removeWindLevel(
double baseAltitude)
override;
151 bool windSpeedAndDirectionAtAltitude(
double altMSL,
double& windSpeed,
double& windDirection)
const override;
152 void setWindSpeedAndDirectionAtAltitude(
const double& altMSL,
const double& windSpeed,
const double& windDirection)
override;
155 bool visibilityAndObscurantAtAltitude(
double altMSL,
double&
distance,
int& obs)
const override;
156 void setVisibilityAndObscurantAtAltitude(
const double& altMSL,
const double&
distance,
const int& obs)
override;
175 const double windSpeed(
double atAlt = 0.)
const override;
176 const double windDirection(
double atAlt = 0.)
const override;
177 const double visibility(
double atAltitude = 0.)
const override;
178 const int obscurant(
double atAltitude)
const override;
181 bool windSpeedAndDirectionAtAltitude(
double altMSL,
double& windSpeed,
double& windDirection)
const override;
184 bool visibilityAndObscurantAtAltitude(
double altMSL,
double&
distance,
int& obs)
const override;
virtual const int obscurant(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:77
virtual void setVisibility(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:67
3) Define the current frame class. This will be used for read access.
Definition: troposphereStateComponent.h:163
0) Define the State Component Data. This struct replaces the legion stuff
Definition: troposphereStateComponent.h:19
Definition: stateDataTypes.h:23
virtual void setWindDirection(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:75
DtTroposphereStateComponentNextFrame(DtStateData *sd)
Definition: troposphereStateComponent.h:108
virtual const double windSpeed(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:69
Definition: stateComponentImplementationTemplate.h:68
Definition: stateComponent.h:266
DtStateComponentImplementationTemplate< DtTroposphereStateComponent, DtTroposphereStateComponentCurrentFrame, DtTroposphereStateComponentNextFrame > DtTroposphereStateComponentImplementation
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: troposphereStateComponent.h:189
virtual void setVisibilityAndObscurantAtAltitude(const double &altMSL, const double &distance, const int &obs)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:95
virtual void removeWindLevel(double baseAltitude)
Must be exact match.
Definition: troposphereStateComponent.h:87
DtTroposphereStateComponentCurrentFrame(DtStateData *sd)
Definition: troposphereStateComponent.h:166
2) Define the next frame class. This will be used for write access.
Definition: troposphereStateComponent.h:105
#define CURRENTFRAME_ACCESSOR_BY_REF(MemberType, Accessor, MutatorAndMember)
Definition: stateComponentImplementationTemplate.h:64
#define CURRENTFRAME_ACCESSOR(MemberType, Accessor, MutatorAndMember)
Definition: stateComponentImplementationTemplate.h:61
virtual bool visibilityAndObscurantAtAltitude(double altMSL, double &distance, int &obs) const
Given the altitude, return the visibility and obscurant.
Definition: troposphereStateComponent.h:94
ACCESSOR_MUTATOR_MEMBER(DtRwWindLevels, windLevels, WindLevels)
virtual void setWindSpeedAndDirectionAtAltitude(const double &altMSL, const double &windSpeed, const double &windDirection)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:91
Definition: stateComponent.h:99
virtual const double visibility(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:65
Definition: stateComponentImplementationTemplate.h:89
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:339
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points. Coordinates are in local database coordinates The coordinat...
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:228
virtual bool windSpeedAndDirectionAtAltitude(double altMSL, double &windSpeed, double &windDirection) const
Given the altitude, return the wind speed and direction.
Definition: troposphereStateComponent.h:90
virtual void clearWindLevels()
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:84
virtual void setWindSpeed(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:71
virtual void setVisibility(const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:66
virtual void setWindDirection(const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:74
virtual const double windDirection(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:73
#define UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:53
DtTroposphereStateComponentData & operator=(const DtTroposphereStateComponentData &orig)
Definition: troposphereStateComponent.h:31
void setIsRemoteComponent(bool b)
Definition: troposphereStateComponent.h:98
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
virtual ~DtTroposphereStateComponentNextFrame()
Definition: troposphereStateComponent.h:113
virtual void setWindSpeed(const double &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:70
virtual void addWindLevel(double altitude, double windSpeed, double windDirection, double visibleDistance, int obscurant, int cloudType, double cloudDensity, double skyCoverage)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:80
#define DT_DLL_vrfStateData
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfStateDataDefines.h:26
DtStateComponentCreator< DtTroposphereStateComponentImplementation > DtTroposphereStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: troposphereStateComponent.h:193
virtual void setObscurant(double atAlt, const int &)
Accessors/mutators for wind level.
Definition: troposphereStateComponent.h:78
DtTroposphereStateComponentData(const DtTroposphereStateComponentData &orig)
Definition: troposphereStateComponent.h:26
Contains the DtStateComponent class declaration.
Definition: rwWindLevels.h:17
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:291
Definition: stateComponentImplementationTemplate.h:137
1) Define the interface class that will be used to represent the next and current frames...
Definition: troposphereStateComponent.h:46
DtTroposphereStateComponentData()
Definition: troposphereStateComponent.h:21
tbb::spin_rw_mutex myMutex
Definition: troposphereStateComponent.h:159