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")
82 virtual const
double visibility(
double atAlt = 0.)
const {
throw DtUnimplementedMethod(
"visibility(atAltidude) is not implemented by this class."); };
84 virtual void setVisibility(
const double& atAlt,
const double&) {
throw DtUnimplementedMethod(
"setVisibility(const double& atAlt, const double& vis) is not implemented by this class."); };
88 virtual void setWindSpeed(
const double& atAlt,
const double&) {
throw DtUnimplementedMethod(
"setWindSpeed(const double& atAlt, const double& vis) is not implemented by this class."); };
92 virtual void setWindDirection(
const double& atAlt,
const double&) {
throw DtUnimplementedMethod(
"setWindDirection(const double& atAlt, const double& vis) is not implemented by this class."); };
97 virtual void addWindLevel(
double altitude,
double windSpeed,
double windDirection,
98 double visibleDistance,
int obscurant,
int cloudType,
double cloudDensity,
double skyCoverage) {
throw DtUnimplementedMethod(
"addWindLevel is not implemented by this class."); };
127 const double airTurbidity()
const;
128 void setAirTurbidity(
const double&);
130 const double ambientAirTemperature()
const;
131 void setAmbientAirTemperature(
const double&);
133 const double ambientAirPressure()
const;
134 void setAmbientAirPressure(
const double&);
139 const double precipitationIntensity()
const;
140 void setPrecipitationIntensity(
const double&);
145 const double windSpeed(
double atAlt = 0.)
const;
146 void setWindSpeed(
const double&);
147 void setWindSpeed(
const double& atAlt,
const double&);
149 const double windDirection(
double atAlt = 0.)
const;
150 void setWindDirection(
const double&);
151 void setWindDirection(
const double& atAlt,
const double&);
153 const int priority()
const;
154 void setPriority(
const int&);
156 const double visibility(
double atAltitude)
const;
157 void setVisibility(
const double&);
158 void setVisibility(
const double&,
const double&);
160 const int obscurant(
double atAltitude)
const;
161 void setObscurant(
double baseAlt,
const int&);
163 const double underwaterVisibility()
const;
164 void setUnderwaterVisibility(
const double&);
166 const double surfaceTransparency()
const;
167 void setSurfaceTransparency(
const double&);
169 const double waterCurrentSpeed()
const;
170 void setWaterCurrentSpeed(
const double&);
172 const double waterCurrentDirection()
const;
173 void setWaterCurrentDirection(
const double&);
175 const double ambientWaterTemperature()
const;
176 void setAmbientWaterTemperature(
const double&);
178 const double snowAccumulation()
const;
179 void setSnowAccumulation(
const double&);
181 const double rainAccumulation()
const;
182 void setRainAccumulation(
const double&);
184 const double snowMinimumAltitude()
const;
185 void setSnowMinimumAltitude(
const double&);
187 const double snowRoadAccumulation()
const;
188 void setSnowRoadAccumulation(
const double&);
190 const double tidalOffset()
const;
191 void setTidalOffset(
const double&);
193 const bool tidalDirection()
const;
194 void setTidalDirection(
const bool&);
196 const int swellState()
const;
197 void setSwellState(
const int&);
199 const double swellStateDirection()
const;
200 void setSwellStateDirection(
const double&);
202 const int seaState()
const;
203 void setSeaState(
const int&);
205 const double seaStateDirection()
const;
206 void setSeaStateDirection(
const double&);
208 const bool windDrivenSeaStateEnabled()
const;
209 void setWindDrivenSeaStateEnabled(
const bool&);
211 const double choppiness()
const;
212 void setChoppiness(
const double&);
214 const double surgeDepth()
const;
215 void setSurgeDepth(
const double&);
217 const double fogHeight()
const;
218 void setFogHeight(
const double&);
220 const unsigned int flags()
const;
221 void setFlags(
const unsigned int&);
223 const bool lightningPresent()
const;
224 void setLightningPresent(
const bool&);
229 const double thermoclineLayer1Depth()
const;
230 void setThermoclineLayer1Depth(
const double&);
232 const double thermoclineLayer1Permeability()
const;
233 void setThermoclineLayer1Permeability(
const double&);
235 const double thermoclineLayer2Depth()
const;
236 void setThermoclineLayer2Depth(
const double&);
238 const double thermoclineLayer2Permeability()
const;
239 void setThermoclineLayer2Permeability(
const double&);
241 const double thermoclineLayer3Depth()
const;
242 void setThermoclineLayer3Depth(
const double&);
244 const double thermoclineLayer3Permeability()
const;
245 void setThermoclineLayer3Permeability(
const double&);
247 const double thermoclineLayer4Depth()
const;
248 void setThermoclineLayer4Depth(
const double&);
250 const double thermoclineLayer4Permeability()
const;
251 void setThermoclineLayer4Permeability(
const double&);
253 const double thermoclineLayer5Depth()
const;
254 void setThermoclineLayer5Depth(
const double&);
256 const double thermoclineLayer5Permeability()
const;
257 void setThermoclineLayer5Permeability(
const double&);
259 const double airTemperatureAltitude()
const;
260 void setAirTemperatureAltitude(
const double&);
262 const double airPressureAltitude()
const;
263 void setAirPressureAltitude(
const double&);
265 const bool airTemperatureAltitudeIsSeaLevel()
const;
266 void setAirTemperatureAltitudeIsSeaLevel(
const bool&);
268 const bool airPressureAltitudeIsSeaLevel()
const;
269 void setAirPressureAltitudeIsSeaLevel(
const bool&);
271 const double seaLevelWaterConcentration()
const;
272 void setSeaLevelWaterConcentration(
const double&);
279 void addWindLevel(
double altitude,
double windSpeed,
double windDirection,
double visibleDistance,
int obscurant,
int cloudType,
double cloudDensity,
double skyCoverage);
280 void clearWindLevels();
283 void removeWindLevel(
double baseAltitude);
286 bool windSpeedAndDirectionAtAltitude(
double altMSL,
double& windSpeed,
double& windDirection)
const;
287 void setWindSpeedAndDirectionAtAltitude(
const double& altMSL,
const double& windSpeed,
const double& windDirection);
290 bool visibilityAndObscurantAtAltitude(
double altMSL,
double&
distance,
int& obs)
const;
291 void setVisibilityAndObscurantAtAltitude(
const double& altMSL,
const double& distance,
const int& obs);
298 virtual void makeWritable();
301 virtual void makeReadOnly();
306 VRF::WriteThermoclineLayerRepository thermoclineLayer(
int)
const;
309 VRF::WriteThermoclineLayerRepository getOrCreateThermoclineLayer(
int);
312 virtual void setupWindLevels();
328 const double airTurbidity()
const;
329 const double ambientAirTemperature()
const;
330 const double ambientAirPressure()
const;
332 const double precipitationIntensity()
const;
334 const double windSpeed(
double atAlt = 0.)
const;
335 const double windDirection(
double atAlt = 0.)
const;
336 const int priority()
const;
337 const double visibility(
double atAltitude = 0.)
const;
338 const int obscurant(
double atAltitude)
const;
339 const double underwaterVisibility()
const;
340 const double surfaceTransparency()
const;
341 const double waterCurrentSpeed()
const;
342 const double waterCurrentDirection()
const;
343 const double ambientWaterTemperature()
const;
344 const double snowAccumulation()
const;
345 const double rainAccumulation()
const;
346 const double snowMinimumAltitude()
const;
347 const double snowRoadAccumulation()
const;
348 const double tidalOffset()
const;
349 const bool tidalDirection()
const;
350 const int swellState()
const;
351 const double swellStateDirection()
const;
352 const int seaState()
const;
353 const double seaStateDirection()
const;
354 const bool windDrivenSeaStateEnabled()
const;
355 const double choppiness()
const;
356 const double surgeDepth()
const;
357 const double fogHeight()
const;
359 const unsigned int flags()
const;
360 const bool lightningPresent()
const;
361 const double thermoclineLayer1Depth()
const;
362 const double thermoclineLayer1Permeability()
const;
363 const double thermoclineLayer2Depth()
const;
364 const double thermoclineLayer2Permeability()
const;
365 const double thermoclineLayer3Depth()
const;
366 const double thermoclineLayer3Permeability()
const;
367 const double thermoclineLayer4Depth()
const;
368 const double thermoclineLayer4Permeability()
const;
369 const double thermoclineLayer5Depth()
const;
370 const double thermoclineLayer5Permeability()
const;
371 const double airTemperatureAltitude()
const;
372 const double airPressureAltitude()
const;
373 const bool airTemperatureAltitudeIsSeaLevel()
const;
374 const bool airPressureAltitudeIsSeaLevel()
const;
375 const double seaLevelWaterConcentration()
const;
378 bool windSpeedAndDirectionAtAltitude(
double altMSL,
double& windSpeed,
double& windDirection)
const;
381 bool visibilityAndObscurantAtAltitude(
double altMSL,
double&
distance,
int& obs)
const;
385 bool readComponentValid()
const;
386 bool findReadComponent();
389 VRF::ReadThermoclineLayerRepository thermoclineLayer(
int)
const;
393 virtual void updateWindLevels();
420 if (!myFoundComponent)
422 myFoundComponent = myCurrentFrameState.findReadComponent();
425 if (myNextFrameState.isWritable())
427 myNextFrameState.advancedFrame();
428 myCurrentFrameState.advanceFrame(myNextFrameState);
431 myCurrentFrameState.emitComponentUpdated();
436 myCurrentFrameState.updateStateData(sd);
437 myNextFrameState.updateStateData(sd);
443 myCurrentFrameState.aboutToBeDeleted();
444 myNextFrameState.aboutToBeDeleted();
447 virtual bool forceAdvance()
override;
450 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:97
Definition: stateDataTypes.h:23
virtual const int obscurant(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:94
DtWeatherStateComponentNextFrame myNextFrameState
Definition: weatherStateComponent.h:454
Definition: stateComponent.h:257
virtual void setWindSpeed(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:88
virtual void setObscurant(double atAlt, const int &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:95
virtual void setWindSpeed(const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:87
void advancedFrame()
Definition: weatherStateComponent.h:303
virtual void setVisibility(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:84
virtual const double windSpeed(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:86
virtual void setWindDirection(const double &atAlt, const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:92
unsigned int myCallbackHandle
Definition: weatherStateComponent.h:403
virtual void setWindDirection(const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:91
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:415
const DtRwWindLevels & windLevels() const
Accessors/mutators for wind level.
VRF::WriteWeatherStateRepository myWriteWeatherStateRepository
Definition: weatherStateComponent.h:315
DtStateData * myStateData
Definition: weatherStateComponent.h:402
virtual void aboutToBeDeleted() override
Definition: weatherStateComponent.h:440
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
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:219
virtual const double windDirection(double atAlt=0.) const
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:90
virtual void removeWindLevel(double baseAltitude)
Must be exact match.
Definition: weatherStateComponent.h:102
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:370
bool myFirstWeatherSet
Definition: weatherStateComponent.h:317
3) Define the current frame class. This will be used for read access.
Definition: weatherStateComponent.h:321
DtWeatherStateComponentCurrentFrame myCurrentFrameState
Definition: weatherStateComponent.h:453
2) Define the next frame class. This will be used for write access.
Definition: weatherStateComponent.h:121
#define UNDEFINED_RETURNVALUE_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:53
virtual void aboutToBeDeleted()
DtStateData * myStateData
Definition: weatherStateComponent.h:316
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: weatherStateComponent.h:408
void updateDataStorage()
Implement to update data storage. Called from advanceFrame.
Definition: weatherStateComponent.h:418
VRF::ReadWeatherStateRepository myReadWeatherStateRepository
Definition: weatherStateComponent.h:401
DtVrfWeatherCloudState
Definition: vrfWeatherStateEnums.h:24
bool myFoundComponent
Definition: weatherStateComponent.h:455
virtual const DtFrameStateInterface * nextFrameState() const
Definition: weatherStateComponent.h:416
bool isDoubleBuffered()
Definition: weatherStateComponent.h:413
virtual const DtRwWindLevels & windLevels() const
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:113
virtual void setVisibility(const double &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:83
virtual bool windSpeedAndDirectionAtAltitude(double altMSL, double &windSpeed, double &windDirection) const
Given the altitude, return the wind speed and direction.
Definition: weatherStateComponent.h:105
DtStateComponentCreator< DtWeatherStateComponentImplementation > DtWeatherStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: weatherStateComponent.h:460
virtual void clearWindLevels()
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:99
virtual void setWindLevels(const DtRwWindLevels &)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:112
#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:109
virtual void updateStateData(DtStateData *sd) override
Implement to update data storage to the new state data.
Definition: weatherStateComponent.h:434
const DtFrameStateInterface * currentFrameState() const
Definition: weatherStateComponent.h:414
virtual void setVisibilityAndObscurantAtAltitude(const double &altMSL, const double &distance, const int &obs)
Accessors/mutators for wind level.
Definition: weatherStateComponent.h:110
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:106
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:282
Definition: stateComponent.h:78
void advanceFrame(const DtWeatherStateComponentNextFrame &data)
Definition: weatherStateComponent.h:395