Skip to content

BUG: Migrate Forecasts to UCAR THREDDS#943

Open
MateusStano wants to merge 7 commits intodevelopfrom
bug/deactivation-opendap-nomads
Open

BUG: Migrate Forecasts to UCAR THREDDS#943
MateusStano wants to merge 7 commits intodevelopfrom
bug/deactivation-opendap-nomads

Conversation

@MateusStano
Copy link
Member

Summary

Solving #933

We are now using OpenDAP with UCAR THREDDS:

  • Used for GFS, NAM and RAP. This works mostly exacly the same as we were doing with NOMADS. Just now we are getting from a different server

The following models are not available on THREDDS and were deactivated

  • GEFS
  • HIRESW

Particularly GEFS is very important for Monte Carlo simulations and we should look for alternatives as fast as possible

Observations

The Thredds OpenDap approach took me a long time to find information about. So in between I tried out other methods which will still be important for us to understand for the future (probably for re-implementing GEFS):

  • GRIB2 filter via NOMADS: this adds a few new dependencies do RocketPy (which are in total bigger in size than RocketPy), It is quite hard to code but can be done, probably the best way to move forward with re-adding GEFS, but including the added libraries as optional dependencies
  • Siphon: python library that would also add a bunch of dependencies, that are even bigger than the Grib2 method would require

THREDDS actually has an archival version of GEFS that goes up to 2020. I think we can find other alternatives, but this could be a last resort option.

Useful Links

  • THREDDS catalog: NSF and NCEI
    • There are a few models that we can add with this (HRRR and AIGFS)

MateusStano and others added 7 commits March 8, 2026 12:35
…#889)

* Fix hard-coded radius value for parachute added mass calculation

Calculate radius from cd_s using a typical hemispherical parachute drag
coefficient (1.4) when radius is not explicitly provided. This fixes
drift distance calculations for smaller parachutes like drogues.

Formula: R = sqrt(cd_s / (Cd * π))

Closes #860

Co-authored-by: Gui-FernandesBR <63590233+Gui-FernandesBR@users.noreply.github.com>

Address code review: improve docstrings and add explicit None defaults

Co-authored-by: Gui-FernandesBR <63590233+Gui-FernandesBR@users.noreply.github.com>

Add CHANGELOG entry for PR #889

Co-authored-by: Gui-FernandesBR <63590233+Gui-FernandesBR@users.noreply.github.com>

Update rocket.add_parachute to use radius=None for consistency

Changed the default radius from 1.5 to None in the add_parachute method
to match the Parachute class behavior. This ensures consistent automatic
radius calculation from cd_s across both APIs.

Co-authored-by: Gui-FernandesBR <63590233+Gui-FernandesBR@users.noreply.github.com>

Refactor Parachute class to remove hard-coded radius value and introduce drag_coefficient parameter for radius estimation

Fix hard-coded radius value for parachute added mass calculation

Calculate radius from cd_s using a typical hemispherical parachute drag
coefficient (1.4) when radius is not explicitly provided. This fixes
drift distance calculations for smaller parachutes like drogues.

Formula: R = sqrt(cd_s / (Cd * π))

Closes #860

Co-authored-by: Gui-FernandesBR <63590233+Gui-FernandesBR@users.noreply.github.com>

Add CHANGELOG entry for PR #889

Co-authored-by: Gui-FernandesBR <63590233+Gui-FernandesBR@users.noreply.github.com>

Refactor Parachute class to remove hard-coded radius value and introduce drag_coefficient parameter for radius estimation

MNT: Extract noise initialization to fix pylint too-many-statements in Parachute.__init__

Co-authored-by: Gui-FernandesBR <63590233+Gui-FernandesBR@users.noreply.github.com>

* Refactor environment method access in controller test for clarity

* fix pylint

* fix comments

* avoid breaking change with drag_coefficient

* reafactors Parachute.__init__ method

* fix tests

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Gui-FernandesBR <63590233+Gui-FernandesBR@users.noreply.github.com>
Co-authored-by: Gui-FernandesBR <guilherme_fernandes@usp.br>
@MateusStano MateusStano requested a review from a team as a code owner March 19, 2026 01:30
@codecov
Copy link

codecov bot commented Mar 19, 2026

Codecov Report

❌ Patch coverage is 60.68702% with 103 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.90%. Comparing base (9cf3dd4) to head (ab6dc3d).
⚠️ Report is 45 commits behind head on develop.

Files with missing lines Patch % Lines
rocketpy/environment/environment.py 52.94% 48 Missing ⚠️
rocketpy/environment/fetchers.py 6.89% 27 Missing ⚠️
rocketpy/environment/tools.py 71.87% 27 Missing ⚠️
rocketpy/environment/weather_model_mapping.py 93.33% 1 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #943      +/-   ##
===========================================
+ Coverage    80.27%   80.90%   +0.63%     
===========================================
  Files          104      107       +3     
  Lines        12769    14057    +1288     
===========================================
+ Hits         10250    11373    +1123     
- Misses        2519     2684     +165     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Base automatically changed from rel/v1.12.0 to master March 20, 2026 18:07
@MateusStano MateusStano changed the base branch from master to develop March 20, 2026 18:10
@MateusStano MateusStano self-assigned this Mar 21, 2026
@MateusStano MateusStano added Bug Something isn't working Environment Enviroment Class related features labels Mar 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug Something isn't working Environment Enviroment Class related features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants