You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Solar high altitude balloons (SHAB) are a simple and lightweight option for aerial exploration and meteorological data collection both terrestrially and on other planets. By using a
15
14
lightweight material that absorbs visual light and emits low levels of thermal radiation, solar balloons behave similarly to hot air balloons, but are capable of ascending to much higher altitudes. Unlike hot air balloons, which use a heat source to raise the temperature of the internal air, solar balloons generate heat by absorbing solar radiation, providing a free source of lift and eliminating the need for a lighter than air gas or carrying fuel.
3. interpolates `u`, `v` over altitude (per `wind_interpolation`), then over
193
188
`valid_time` between the two enclosing time steps.
194
189
195
-
:::{note}
196
-
Because `pressure_level` is descending hPa, level index 0 is the *lowest*
197
-
altitude — the column is already ascending in altitude, so no reversal is
198
-
needed. (The legacy `ERA5.py` applied an unnecessary `[::-1]`; that quirk was
199
-
removed when the readers collapsed into `Forecast`.)
200
-
:::
201
-
202
190
---
203
191
204
192
## 7. Differences from v1 ("processed" ERA5 format the legacy ERA5.py expected)
@@ -214,8 +202,6 @@ removed when the readers collapsed into `Forecast`.)
214
202
|`t` (temperature) | optional | required |
215
203
| CF Conventions attr | absent or older |`CF-1.7`|
216
204
217
-
The Forecast class auto-detects v1 vs v2 and refuses v1 with a clear migration message (see [migration-v2.md](migration-v2.md)).
218
-
219
205
---
220
206
221
207
## 8. Differences from v1 GFS format (saveNETCDF.py output)
@@ -231,30 +217,15 @@ The Forecast class auto-detects v1 vs v2 and refuses v1 with a clear migration m
231
217
| Level (`lev`) order | descending hPa | same (`pressure_level` descending hPa) |
232
218
|`Conventions` attr | absent |`CF-1.7`|
233
219
234
-
`saveNETCDF.py` (live) and `saveNETCDF_archive.py` (historical, AWS archive) both do all the conversion at download time; pre-v2 archived files are migrated by the `migrate_v1` CLI.
220
+
`saveNETCDF.py` (current) and `saveNETCDF_archive.py` (historical, AWS archive) both do all the conversion at download time; pre-v2 archived files are migrated by the `migrate_v1` CLI.
235
221
236
222
:::{seealso}
237
223
[migration-v2.md](migration-v2.md) — detecting v1 files, the converter, and rollback.
238
224
:::
239
225
240
226
---
241
227
242
-
## 9. Validation
243
-
244
-
The canonical Forecast class validates on `__init__` and raises `ForecastFormatError` with a specific message if any of these fail:
245
-
246
-
1. Required dimensions (`valid_time`, `pressure_level`, `latitude`, `longitude`) all present with `len >= 1`.
247
-
2. Required data variables (`u`, `v`, `z`, `t`) all present with `dtype == float32` and correct dim ordering.
4.`valid_time.units` parseable as a CF time unit; `valid_time.calendar` set.
250
-
5.`Conventions == "CF-1.7"` (warn if missing or different value but still attempt to load — interop with future CF revisions).
251
-
6.`longitude` values all within `[-180, 180]`.
252
-
253
-
A separate `migrate_v1` script handles detection of the two v1 formats (by variable-name signature) and produces a canonical file in-place with the original backed up to `<name>.v1.nc`.
254
-
255
-
---
256
-
257
-
## 10. Reference
228
+
## 9. Reference
258
229
259
230
The canonical example files are the bundled SHAB14-V v2 forecasts:
0 commit comments