mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 04:25:35 +08:00
[GFS] Properly validate cloud pressure levels
For some reason, the parser returned 0.0 instead of 9.998e20 for undefined values. Atmospheric pressure levels cannot be lower than 1000, hence use this as the lower boundary. In all other circumstances, the pressure level needs to be set (either to real value or to nan) for the follow up code to detect undefined values.
This commit is contained in:
committed by
Mat Sutcliffe
parent
d79e090d46
commit
f4a147a5bc
@@ -732,22 +732,22 @@ namespace BlackWxPlugin
|
||||
{
|
||||
for (auto &gridPoint : m_gfsWeatherGrid)
|
||||
{
|
||||
static const g2float minimumLayer = 0.0;
|
||||
static const g2float minimumLevel = 1000.0;
|
||||
float levelPressure = std::numeric_limits<float>::quiet_NaN();
|
||||
g2float fieldValue = fld[gridPoint.fieldPosition];
|
||||
// A value of 9.999e20 is undefined. Check that the pressure value is below
|
||||
if (fieldValue < 9.998e20f) { levelPressure = fld[gridPoint.fieldPosition]; }
|
||||
if (fieldValue < 9.998e20f && fieldValue > minimumLevel) { levelPressure = fld[gridPoint.fieldPosition]; }
|
||||
switch (surfaceType)
|
||||
{
|
||||
case LowCloudBottomLevel:
|
||||
case MiddleCloudBottomLevel:
|
||||
case HighCloudBottomLevel:
|
||||
if (fieldValue > minimumLayer) { gridPoint.cloudLayers[level].bottomLevelPressure = levelPressure; }
|
||||
gridPoint.cloudLayers[level].bottomLevelPressure = levelPressure;
|
||||
break;
|
||||
case LowCloudTopLevel:
|
||||
case MiddleCloudTopLevel:
|
||||
case HighCloudTopLevel:
|
||||
if (fieldValue > minimumLayer) { gridPoint.cloudLayers[level].topLevelPressure = levelPressure; }
|
||||
gridPoint.cloudLayers[level].topLevelPressure = levelPressure;
|
||||
break;
|
||||
default:
|
||||
Q_ASSERT(false);
|
||||
|
||||
Reference in New Issue
Block a user