11 #include <matrix/vlVector.h>
13 #include <vrfOM/sets/writeWeatherStateRepository.hpp>
14 #include <vrfOM/sets/readWeatherStateRepository.hpp>
15 #include <vrfOM/sets/readThermoclineLayerRepository.hpp>
28 , myWindLevels("wind-levels")
80 virtual const
double visibility(
double atAlt = 0.)
const {
throw DtUnimplementedMethod(
"visibility(atAltidude) is not implemented by this class."); };
82 virtual void setVisibility(
const double& atAlt,
const double&) {
throw DtUnimplementedMethod(
"setVisibility(const double& atAlt, const double& vis) is not implemented by this class."); };
86 virtual void setWindSpeed(
const double& atAlt,
const double&) {
throw DtUnimplementedMethod(
"setWindSpeed(const double& atAlt, const double& vis) is not implemented by this class."); };
90 virtual void setWindDirection(
const double& atAlt,
const double&) {
throw DtUnimplementedMethod(
"setWindDirection(const double& atAlt, const double& vis) is not implemented by this class."); };
95 virtual void addWindLevel(
double altitude,
double windSpeed,
double windDirection,
96 double visibleDistance,
int obscurant,
int cloudType,
double cloudDensity,
double skyCoverage) {
throw DtUnimplementedMethod(
"addWindLevel is not implemented by this class."); };
126 const double ambientAirTemperature()
const;
127 void setAmbientAirTemperature(
const double&);
129 const double ambientAirPressure()
const;
130 void setAmbientAirPressure(
const double&);
135 const double precipitationIntensity()
const;
136 void setPrecipitationIntensity(
const double&);
141 const double windSpeed(
double atAlt = 0.)
const;
142 void setWindSpeed(
const double&);
143 void setWindSpeed(
const double& atAlt,
const double&);
145 const double windDirection(
double atAlt = 0.)
const;
146 void setWindDirection(
const double&);
147 void setWindDirection(
const double& atAlt,
const double&);
149 const int priority()
const;
150 void setPriority(
const int&);
152 const double visibility(
double atAltitude)
const;
153 void setVisibility(
const double&);
154 void setVisibility(
const double&,
const double&);
156 const int obscurant(
double atAltitude)
const;
157 void setObscurant(
double baseAlt,
const int&);
159 const double underwaterVisibility()
const;
160 void setUnderwaterVisibility(
const double&);
162 const double surfaceTransparency()
const;
163 void setSurfaceTransparency(
const double&);
165 const double waterCurrentSpeed()
const;
166 void setWaterCurrentSpeed(
const double&);
168 const double waterCurrentDirection()
const;
169 void setWaterCurrentDirection(
const double&);
171 const double ambientWaterTemperature()
const;
172 void setAmbientWaterTemperature(
const double&);
174 const double snowAccumulation()
const;
175 void setSnowAccumulation(
const double&);
177 const double rainAccumulation()
const;
178 void setRainAccumulation(
const double&);
180 const double snowMinimumAltitude()
const;
181 void setSnowMinimumAltitude(
const double&);
183 const double snowRoadAccumulation()
const;
184 void setSnowRoadAccumulation(
const double&);
186 const double tidalOffset()
const;
187 void setTidalOffset(
const double&);
189 const int swellState()
const;
190 void setSwellState(
const int&);
192 const double swellStateDirection()
const;
193 void setSwellStateDirection(
const double&);
195 const int seaState()
const;
196 void setSeaState(
const int&);
198 const double seaStateDirection()
const;
199 void setSeaStateDirection(
const double&);
201 const bool windDrivenSeaStateEnabled()
const;
202 void setWindDrivenSeaStateEnabled(
const bool&);
204 const double choppiness()
const;
205 void setChoppiness(
const double&);
207 const double surgeDepth()
const;
208 void setSurgeDepth(
const double&);
210 const double fogHeight()
const;
211 void setFogHeight(
const double&);
213 const unsigned int flags()
const;
214 void setFlags(
const unsigned int&);
216 const bool lightningPresent()
const;
217 void setLightningPresent(
const bool&);
222 const double thermoclineLayer1Depth()
const;
223 void setThermoclineLayer1Depth(
const double&);
225 const double thermoclineLayer1Permeability()
const;
226 void setThermoclineLayer1Permeability(
const double&);
228 const double thermoclineLayer2Depth()
const;
229 void setThermoclineLayer2Depth(
const double&);
231 const double thermoclineLayer2Permeability()
const;
232 void setThermoclineLayer2Permeability(
const double&);
234 const double thermoclineLayer3Depth()
const;
235 void setThermoclineLayer3Depth(
const double&);
237 const double thermoclineLayer3Permeability()
const;
238 void setThermoclineLayer3Permeability(
const double&);
240 const double thermoclineLayer4Depth()
const;
241 void setThermoclineLayer4Depth(
const double&);
243 const double thermoclineLayer4Permeability()
const;
244 void setThermoclineLayer4Permeability(
const double&);
246 const double thermoclineLayer5Depth()
const;
247 void setThermoclineLayer5Depth(
const double&);
249 const double thermoclineLayer5Permeability()
const;
250 void setThermoclineLayer5Permeability(
const double&);
252 const double airTemperatureAltitude()
const;
253 void setAirTemperatureAltitude(
const double&);
255 const double airPressureAltitude()
const;
256 void setAirPressureAltitude(
const double&);
258 const bool airTemperatureAltitudeIsSeaLevel()
const;
259 void setAirTemperatureAltitudeIsSeaLevel(
const bool&);
261 const bool airPressureAltitudeIsSeaLevel()
const;
262 void setAirPressureAltitudeIsSeaLevel(
const bool&);
264 const double seaLevelWaterConcentration()
const;
265 void setSeaLevelWaterConcentration(
const double&);
272 void addWindLevel(
double altitude,
double windSpeed,
double windDirection,
double visibleDistance,
int obscurant,
int cloudType,
double cloudDensity,
double skyCoverage);
273 void clearWindLevels();
276 void removeWindLevel(
double baseAltitude);
279 bool windSpeedAndDirectionAtAltitude(
double altMSL,
double& windSpeed,
double& windDirection)
const;
280 void setWindSpeedAndDirectionAtAltitude(
const double& altMSL,
const double& windSpeed,
const double& windDirection);
283 bool visibilityAndObscurantAtAltitude(
double altMSL,
double&
distance,
int& obs)
const;
284 void setVisibilityAndObscurantAtAltitude(
const double& altMSL,
const double& distance,
const int& obs);
291 virtual void makeWritable();
294 virtual void makeReadOnly();
297 VRF::WriteThermoclineLayerRepository thermoclineLayer(
int)
const;
300 VRF::WriteThermoclineLayerRepository getOrCreateThermoclineLayer(
int);
303 virtual void setupWindLevels();
318 const double ambientAirTemperature()
const;
319 const double ambientAirPressure()
const;
321 const double precipitationIntensity()
const;
323 const double windSpeed(
double atAlt = 0.)
const;
324 const double windDirection(
double atAlt = 0.)
const;
325 const int priority()
const;
326 const double visibility(
double atAltitude = 0.)
const;
327 const int obscurant(
double atAltitude)
const;
328 const double underwaterVisibility()
const;
329 const double surfaceTransparency()
const;
330 const double waterCurrentSpeed()
const;
331 const double waterCurrentDirection()
const;
332 const double ambientWaterTemperature()
const;
333 const double snowAccumulation()
const;
334 const double rainAccumulation()
const;
335 const double snowMinimumAltitude()
const;
336 const double snowRoadAccumulation()
const;
337 const double tidalOffset()
const;
338 const int swellState()
const;
339 const double swellStateDirection()
const;
340 const int seaState()
const;
341 const double seaStateDirection()
const;
342 const bool windDrivenSeaStateEnabled()
const;
343 const double choppiness()
const;
344 const double surgeDepth()
const;
345 const double fogHeight()
const;
347 const unsigned int flags()
const;
348 const bool lightningPresent()
const;
349 const double thermoclineLayer1Depth()
const;
350 const double thermoclineLayer1Permeability()
const;
351 const double thermoclineLayer2Depth()
const;
352 const double thermoclineLayer2Permeability()
const;
353 const double thermoclineLayer3Depth()
const;
354 const double thermoclineLayer3Permeability()
const;
355 const double thermoclineLayer4Depth()
const;
356 const double thermoclineLayer4Permeability()
const;
357 const double thermoclineLayer5Depth()
const;
358 const double thermoclineLayer5Permeability()
const;
359 const double airTemperatureAltitude()
const;
360 const double airPressureAltitude()
const;
361 const bool airTemperatureAltitudeIsSeaLevel()
const;
362 const bool airPressureAltitudeIsSeaLevel()
const;
363 const double seaLevelWaterConcentration()
const;
366 bool windSpeedAndDirectionAtAltitude(
double altMSL,
double& windSpeed,
double& windDirection)
const;
369 bool visibilityAndObscurantAtAltitude(
double altMSL,
double&
distance,
int& obs)
const;
373 bool readComponentValid()
const;
374 bool findReadComponent();
377 VRF::ReadThermoclineLayerRepository thermoclineLayer(
int)
const;
381 virtual void updateWindLevels();
408 if (!myFoundComponent)
410 myFoundComponent = myCurrentFrameState.findReadComponent();
413 if (myNextFrameState.isWritable())
415 myNextFrameState.advancedFrame();
416 myCurrentFrameState.advanceFrame(myNextFrameState);
419 myCurrentFrameState.emitComponentUpdated();
424 myCurrentFrameState.updateStateData(sd);
425 myNextFrameState.updateStateData(sd);
431 myCurrentFrameState.aboutToBeDeleted();
432 myNextFrameState.aboutToBeDeleted();
435 virtual bool forceAdvance()
override;
438 virtual void firstFrameAdvance()
override;
DtVrfWeatherPrecipitationType
Definition: vrfWeatherStateEnums.h:13
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: weatherStateComponent.h:95
Definition: stateDataTypes.h:23
virtual const int obscurant(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:92
DtWeatherStateComponentNextFrame myNextFrameState
Definition: weatherStateComponent.h:442
Definition: stateComponent.h:266
virtual void setWindSpeed(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:86
virtual void setObscurant(double atAlt, const int &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:93
virtual void setWindSpeed(const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:85
virtual void setVisibility(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:82
virtual const double windSpeed(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:84
virtual void setWindDirection(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:90
unsigned int myCallbackHandle
Definition: weatherStateComponent.h:391
virtual void setWindDirection(const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:89
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: weatherStateComponent.h:21
virtual DtFrameStateInterface * nextFrameState()
Definition: weatherStateComponent.h:403
const DtRwWindLevels & windLevels() const
Accessors/mutators for wind level.
VRF::WriteWeatherStateRepository myWriteWeatherStateRepository
Definition: weatherStateComponent.h:306
DtStateData * myStateData
Definition: weatherStateComponent.h:390
virtual void aboutToBeDeleted() override
Definition: weatherStateComponent.h:428
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 const double windDirection(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:88
virtual void removeWindLevel(double baseAltitude)
Must be exact match.
Definition: weatherStateComponent.h:100
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:379
3) Define the current frame class. This will be used for read access.
Definition: weatherStateComponent.h:311
DtWeatherStateComponentCurrentFrame myCurrentFrameState
Definition: weatherStateComponent.h:441
2) Define the next frame class. This will be used for write access.
Definition: weatherStateComponent.h:119
#define UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:53
virtual void aboutToBeDeleted()
DtStateData * myStateData
Definition: weatherStateComponent.h:307
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: weatherStateComponent.h:396
void updateDataStorage()
Implement to update data storage. Called from advanceFrame.
Definition: weatherStateComponent.h:406
VRF::ReadWeatherStateRepository myReadWeatherStateRepository
Definition: weatherStateComponent.h:389
DtVrfWeatherCloudState
Definition: vrfWeatherStateEnums.h:24
bool myFoundComponent
Definition: weatherStateComponent.h:443
virtual const DtFrameStateInterface * nextFrameState() const
Definition: weatherStateComponent.h:404
bool isDoubleBuffered()
Definition: weatherStateComponent.h:401
virtual const DtRwWindLevels & windLevels() const
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:111
virtual void setVisibility(const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:81
virtual bool windSpeedAndDirectionAtAltitude(double altMSL, double &windSpeed, double &windDirection) const
Given the altitude, return the wind speed and direction.
Definition: weatherStateComponent.h:103
DtStateComponentCreator< DtWeatherStateComponentImplementation > DtWeatherStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: weatherStateComponent.h:448
virtual void clearWindLevels()
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:97
virtual void setWindLevels(const DtRwWindLevels &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:110
#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
virtual bool visibilityAndObscurantAtAltitude(double altMSL, double &distance, int &obs) const
Given the altitude, return the visibility and obscurant.
Definition: weatherStateComponent.h:107
virtual void updateStateData(DtStateData *sd) override
Implement to update data storage to the new state data.
Definition: weatherStateComponent.h:422
const DtFrameStateInterface * currentFrameState() const
Definition: weatherStateComponent.h:402
virtual void setVisibilityAndObscurantAtAltitude(const double &altMSL, const double &distance, const int &obs)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:108
Contains the DtStateComponent class declaration.
Definition: rwWindLevels.h:17
virtual void setWindSpeedAndDirectionAtAltitude(const double &altMSL, const double &windSpeed, const double &windDirection)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:104
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: stateComponent.h:80
void advanceFrame(const DtWeatherStateComponentNextFrame &data)
Definition: weatherStateComponent.h:383