diff --git a/CHANGELOG.md b/CHANGELOG.md index 0995b6eef..4faa0db04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,8 @@ Attention: The newest changes should be on top --> - BUG: Fix parallel Monte Carlo simulation showing incorrect iteration count [#806](https://github.com/RocketPy-Team/RocketPy/pull/806) - BUG: Fix missing titles in roll parameter plots for fin sets [#934](https://github.com/RocketPy-Team/RocketPy/pull/934) - BUG: Duplicate _controllers in Flight.TimeNodes.merge() [#931](https://github.com/RocketPy-Team/RocketPy/pull/931) +- BUG: Fix incorrect Jacobian in `only_radial_burn` branch of `SolidMotor.evaluate_geometry` [#935](https://github.com/RocketPy-Team/RocketPy/pull/935) +- BUG: Add explicit timeouts to ThrustCurve API requests [#935](https://github.com/RocketPy-Team/RocketPy/pull/935) ## [v1.11.0] - 2025-11-01 diff --git a/rocketpy/motors/solid_motor.py b/rocketpy/motors/solid_motor.py index f5e89c2f8..590a02511 100644 --- a/rocketpy/motors/solid_motor.py +++ b/rocketpy/motors/solid_motor.py @@ -546,13 +546,14 @@ def geometry_jacobian(t, y): 2 * np.pi * (grain_inner_radius * grain_height) ** 2 ) - inner_radius_derivative_wrt_inner_radius = factor * ( - grain_height - 2 * grain_inner_radius - ) - inner_radius_derivative_wrt_height = 0 + # burn_area = 2π*r*h, so ṙ = -vdiff/(2π*r*h): + # ∂ṙ/∂r = vdiff/(2π*r²*h) = factor * h + # ∂ṙ/∂h = vdiff/(2π*r*h²) = factor * r + inner_radius_derivative_wrt_inner_radius = factor * grain_height + inner_radius_derivative_wrt_height = factor * grain_inner_radius + # dh/dt = 0, so all partial derivatives of height are zero height_derivative_wrt_inner_radius = 0 height_derivative_wrt_height = 0 - # Height is a constant, so all the derivatives with respect to it are set to zero return [ [